| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = Внесение изменений и переходы в файлах исходных кодов на C/C++ - учебный курс по среде IDE NetBeans |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Внесение изменений и переходы в файлах исходных кодов на C/C++ - учебный курс по среде IDE NetBeans - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Внесение изменений и переходы в файлах исходных кодов на C/C++ - учебный курс по среде IDE NetBeans |
| |
| _Составитель _Энн Райс (Ann Rice)_, редактор _Сьюзан Морган (Susan Morgan)_ |
| Март 2013 г._ [Номер редакции: V8.0] |
| |
| В этом кратком практическом руководстве описываются некоторые возможности навигации по исходным файлам и редактирования этих файлов в проекте C или C++ в среде IDE NetBeans. |
| |
| |
| == Требования |
| |
| *Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.* |
| |
| |=== |
| |Программное обеспечение или материал |Требуемая версия |
| |
| |IDE NetBeans |link:https://netbeans.org/downloads/index.html[+ версия 7.4 или 8.0 с подключаемым модулем NetBeans C/C+++] |
| |
| |Комплект для разработчика на языке Java (JDK) |link:http://java.sun.com/javase/downloads/index.jsp[+версия 7 или 8+] |
| |=== |
| |
| |
| Ознакомьтесь с разделами link:../../../community/releases/80/install.html[+Указания по установке среды IDE NetBeans 8.0+] и link:../../../community/releases/80/cpp-setup-instructions.html[+Настройка среды IDE NetBeans для C/C++/Фортрана+] |
| для получения сведений о загрузке и установке требуемого программного обеспечения. |
| |
| *Примеры проектов* |
| |
| Чтобы поэкспериментировать с проектами, выберите в среде IDE команду "Файл" > "Новый проект", а затем откройте категорию "Примеры" и подкатегорию "C/C++". В среде IDE представлено несколько примеров проектов на языке C и C++, которые помогут ознакомиться с функциями среды. |
| |
| |
| == Создание примера проекта |
| |
| Подключаемый модуль NetBeans IDE с C/C++ предоставляет расширенные возможности редактирования для изменения исходного кода. Для наглядного рассмотрения этих функций в этом учебном курсе используется проект ``Quote`` . Если проект еще не создан, выполните следующие действия: |
| |
| 1. Выберите команду "Файл" > "Новый проект". |
| 2. Разверните в мастере создания проекта категорию "Примеры" и выберите подкатегорию "C/C++". |
| 3. Выберите проект ``Quote`` . Нажмите кнопку "Далее", а затем нажмите кнопку "Готово". |
| |
| |
| == Изменение исходных файлов на языке C и C++ |
| |
| |
| === Установка стиля форматирования |
| |
| Окно "Параметры" по умолчанию используется для настройки стиля форматирования проектов на языке C и C++. |
| |
| 1. Выберите команду "Сервис" > "Параметры". |
| 2. Нажмите элемент "Редактор" на верхней панели окна. |
| 3. Выберите вкладку "Форматирование". |
| 4. Выберите в раскрывающемся списке "Язык" язык C++, поскольку в проекте Quote используется язык C++. |
| 5. Выберите в раскрывающемся списке "Стиль" необходимый стиль. |
| |
| image::images/formatting_style.png[] |
| |
| [start=6] |
| . Измените свойства стиля требуемым образом. |
| |
| |
| === Свертывание блоков кода в файлах C и C++ |
| |
| Для некоторых типов файлов можно использовать функцию свертывания кода, чтобы свернуть блоки кода для отображения в редакторе исходного кода только первой строки блока. |
| |
| 1. Откройте в проекте приложения ``Quote_1`` папку "Source Files" и дважды щелкните файл ``cpu.cc`` , чтобы открыть его в редакторе исходного кода. |
| 2. Щелкните в левом поле значок свертывания (небольшое поле со знаком "-"), чтобы свернуть код одного из методов. |
| 3. Наведите курсор на символ ``{...}`` справа от свернутого блока для отображения кода блока. |
| |
| image::images/code_folding.png[] |
| |
| |
| === Использование семантического выделения |
| |
| Параметр можно настроить таким образом, чтобы при щелчке по классу, функции, переменной или макросу выделялись все вхождения этого класса, функции, переменной или макроса в текущем файле. |
| |
| 1. Выберите команду "Сервис" > "Параметры". |
| 2. Нажмите элемент "Редактор" на верхней панели окна. |
| 3. Выберите вкладку "Выделение". |
| 4. Убедитесь, что все флажки установлены. |
| 5. Нажмите кнопку "ОК". |
| 6. Обратите внимание, что в файле ``customer.cc`` проекта ``Quote_1`` имена методов выделены жирным. |
| 7. Щелкните вхождение класса ``Customer`` . |
| 8. Все вхождения класса ``Customer`` в файле будут выделены желтым цветом. В правом поле также отображаются отметки, указывающие расположение вхождений в файле. Отметки позволяют оценить число вхождений в файле без прокручивания. Чтобы перейти ко вхождению, следует щелкнуть необходимую отметку. |
| |
| image::images/highlighting1.png[] |
| |
| [start=9] |
| . Для легкого перехода между вхождениями нажимайте клавиши Alt+Down, чтобы перейти к следующему вхождению, и Alt+Up, чтобы перейти к предыдущему вхождению. |
| |
| [start=10] |
| . Откройте файл ``customer.h`` , расположенный в папке "Headers", и обратите внимание, что имена методов снова выделены жирным. |
| |
| image::images/highlighting2.png[] |
| |
| |
| === Работа с автозавершением кода и документированием |
| |
| Среда IDE имеет функцию динамического автозавершения кода на языке C и C++, благодаря которой при вводе одного или нескольких символов выводится список возможных классов, методов, переменных и т.д., которые можно использовать для завершения выражения. |
| |
| Также в среде IDE выполняется динамический поиск документации классов, функций, методов и пр., а также отображение документации во всплывающем окне. |
| |
| 1. Откройте файл в проекте ``Quote_1`` ``quote.cc`` . |
| 2. Введите в первой пустой строчке файла ``quote.cc`` заглавную латинскую букву "C" и нажмите сочетание клавиш CTRL+ПРОБЕЛ. Появится окно автозавершения кода с небольшим списком, включающем классы ``Cpu`` и ``Customer`` . Также отобразится окно документации с сообщением "Документация не найдена", поскольку исходный код проекта не содержит документации по коду. |
| 3. Разверните список элементов, снова нажав CTRL+ПРОБЕЛ. |
| |
| image::images/code_completion1.png[] |
| |
| [start=4] |
| . Используйте клавиши со стрелками или кнопки мыши для выделения стандартной функции библиотеки (например, ``calloc`` ) из списка. В окне документации появится страница системной справки для этой функции, если эта страница доступна для среды IDE. |
| |
| image::images/code-completion-documentation.png[] |
| |
| [start=5] |
| . Выберите класс ``Customer`` и нажмите ENTER. |
| |
| [start=6] |
| . Заполните новый экземпляр класса ``Customer`` , введя текст ``andrew;`` . Введите в следующей строке латинскую букву ``a`` и нажмите CTRL+ПРОБЕЛ. Появится окно автозавершения кода со списком возможных элементов с начальной буквой ``a`` , например аргументы метода, поля класса и глобальные имена, доступные в текущем контексте. |
| |
| image::images/code_completion2.png[] |
| |
| [start=7] |
| . Дважды щелкните параметр ``andrew`` , чтобы принять его и ввести после него точку. Нажмите Ctrl-пробел, и будет выведен список общедоступных методов и полей класса ``Customer`` . |
| |
| image::images/code_completion3.png[] |
| |
| [start=8] |
| . Удалите добавленный код. |
| |
| |
| === Добавление документации к исходному коду |
| |
| Можно добавить в код комментарии для автоматического создания документации к функциям, классам и методам. Среда IDE распознает комментарии с синтаксисом Doxygen и автоматически создает документацию. Также среда IDE может автоматически создавать блок комментариев для документирования функции под комментарием. |
| |
| 1. Наведите курсор в файле ``quote.cc`` на строку 75 или на строку, расположенную выше. |
| ``int readNumberOf(const char* item, int min, int max) {`` |
| |
| [start=2] |
| . Введите косую черту и две звездочки, а затем нажмите ENTER. Редактор вставляет комментарий, отформатированный по синтаксису Doxygen, для класса ``readNumberOf`` . |
| |
| image::images/doxygen_comment.png[] |
| |
| [start=3] |
| . Добавьте текст описания в каждую строку аннотации @param и сохраните файл. |
| |
| image::images/doxygen_comment_edited.png[] |
| |
| [start=4] |
| . Щелкните класс ``readNumberOf`` для выделения его желтым и щелкните одну из отметок вхождений справа для перехода к области использования класса. |
| |
| [start=5] |
| . Щелкните класс ``readNumberOf`` в строке, к которой выполнен переход, и нажмите сочетание клавиш CTRL+SHIFT+ПРОБЕЛ для отображения документации, добавленной для параметров. |
| |
| image::images/doxygen_displayed.png[] |
| |
| [start=6] |
| . Щелкните в любом месте файла, чтобы закрыть окно документации, а затем щелкните класс ``readNumberOf`` повторно. |
| |
| [start=7] |
| . Выберите "Исходный код" > "Показать документацию", чтобы снова открыть окно документации для класса. |
| |
| |
| === Использование шаблонов кода |
| |
| В редакторе исходного кода существует набор настраиваемых шаблонов кода со стандартными фрагментами кода на C и C++. Можно создать полный фрагмент кода путем ввода его сокращения и нажатия клавиши Tab. Например, в файле ``quote.cc`` проекта ``Quote`` : |
| |
| 1. Введите ``uns`` с последующим нажатием клавиши Tab, и ``uns`` развернется до ``unsigned`` . |
| 2. Введите ``iff`` с последующим нажатием клавиши Tab, и ``iff`` развернется до ``if (exp) {}`` . |
| 3. Введите ``ife`` с последующим нажатием клавиши Tab, и ``ife`` развернется до ``if (exp) {} else {}`` . |
| 4. Введите ``fori`` с последующим нажатием клавиши Tab, и ``fori`` развернется до ``for (int i = 0; i < size; i++) { Object elem = array[i];`` . |
| |
| Чтобы просмотреть все доступные шаблоны кода, изменять их, создавать собственные или выбрать другой ключ для расширения шаблонов кода: |
| |
| 1. Выберите команду "Сервис" > "Параметры". |
| 2. В диалоговом окне 'Параметры' щелкните 'Редактор' и щелкните вкладку 'Шаблолны кода'. |
| 3. В раскрывающемся списке "Язык" выберите необходимый язык. |
| |
| image::images/code_templates.png[] |
| |
| |
| === Подстановка парных символов |
| |
| При редактировании исходных файлов на языках C и C++ редактор исходного кода выполняет "интеллектуальную" подстановку парных символов, например кавычек, круглых и квадратных скобок. При вводе одного из символов редактор исходного кода автоматически подставляет закрывающий символ. |
| |
| 1. В проекте ``Quote_1`` поместите курсор в пустую строку 115 файла ``module.cc`` и нажмите клавишу Return для добавления новой строки. |
| 2. Введите ``enum state {`` и нажмите ENTER. Закрывающая фигурная скобка и точка с запятой будут добавлены автоматически, а курсор будет размещен в строке между скобками. |
| 3. Введите ``invalid=0, success=1`` в строке в квадратных скобках для завершения перечисления. |
| 4. В строке после закрывающей фигурной скобки ``};`` перечисления введите ``if (`` закрывающая круглая скобка добавляется автоматически, и курсор оказывается внутри скобок). |
| 5. Введите ``v==null`` в круглых скобках. Затем введите `` {`` и добавьте новую строку после правой круглой скобки. Закрывающая квадратная скобка будет добавлена автоматически. |
| 6. Удалите добавленный код. |
| |
| |
| === Поиск текста в файлах проекта |
| |
| Вы можете использовать диалоговое окно 'Поиск текста в файлах проекта' для поиска в проектах экземпляров указанного текста или регулярных выражений. |
| |
| 1. Откройте диалоговое окно 'Поиск текста в файлах проекта', выполнив одно из следующих действий: |
| * Выберите 'Правка' > 'Найти в проектах' |
| * Щелкните правой кнопкой мыши проект в окне "Проекты" и выберите команду "Найти". |
| * Нажмите Ctrl+Shift+F. |
| |
| [start=2] |
| . В диалоговом окне "Найти в проектах" перейдите на вкладку "Список по умолчанию" или на вкладку "Grep". На вкладке 'Grep' используется служебная программа ``grep`` , обеспечивающая более быстрый поиск, особенно для удаленных проектов. |
| |
| image::images/find_in_projects.png[] |
| |
| [start=3] |
| . На вкладке Grep введите искомый текст или регулярное выражение, укажите область поиска и шаблон имени файла и установите флажок 'Открыть в новой вкладке'. Это позволит сохранить несколько результатов поиска на отдельных вкладках. |
| |
| [start=4] |
| . Нажмите 'Найти'. |
| На вкладке 'Результаты поиска' перечислены файлы, в которых найдены текст или регулярные выражения. |
| |
| С помощью кнопок в левой части окна можно изменить представление результатов поиска. |
| |
| image::images/find_in_projects2.png[] |
| |
| [start=5] |
| . Нажмите кнопку 'Развернуть/Свернуть', чтобы свернуть список файлов. При этом будут отображаться только имена файлов. Другие кнопки предназначены для отображения результатов поиска в виде дерева каталогов или в виде списка файлов. Эти функции удобно использовать при поиске по нескольким проектам. |
| |
| [start=6] |
| . Дважды щелкните один из элементов в списке. Среда IDE перемещает вас на соответствующую позицию в редакторе исходного кода. |
| |
| |
| == Переход по исходным файлам на C и C++ |
| |
| Подключаемый модуль NetBeans IDE с C/C++ предоставляет расширенные возможности навигации для просмотра исходного кода. Чтобы изучить эти функции, продолжайте использовать проект ``Quote_1`` . |
| |
| |
| === Использование окна классов |
| |
| Окно классов позволяет просматривать все классы проекта, а также члены и поля каждого класса. |
| |
| 1. Выберите вкладку "Классы" для просмотра окна классов. Если вкладка "Классы" не отображается, выберите 'Окно' > 'Классы' |
| 2. Разверните узел ``Quote_1`` в окне классов. Выводится список всех классов проекта. |
| 3. Разверните класс ``Customer`` . |
| |
| image::images/classes_window.png[] |
| |
| [start=4] |
| . Дважды щелкните переменную ``name`` , чтобы открыть файл заголовка ``customer.h`` . |
| |
| |
| === Использование окна навигатора |
| |
| Окно навигатора предоставляет компактное представление выбранного в настоящий момент файла и упрощает процедуру перехода между различными частями файла. Если окно навигатора не отображается, выберите команду "Окно" > "Навигация" > "Навигатор", чтобы открыть его. |
| |
| 1. Щелкните в любом месте окна редактора файла ``quote.cc`` . |
| 2. В окне навигатора отобразится компактное представление файла. |
| |
| image::images/navigator_window.png[] |
| |
| [start=3] |
| . Для перехода к определенному элементу файла дважды щелкните его в окне навигатора, а курсор в окне редактора переместится к этому элементу. |
| |
| [start=4] |
| . Щелкните правой кнопкой мыши в окне навигатора, чтобы выбрать другой способ сортировки элементов, группировку элементов или их фильтрацию. |
| |
| Для получения сведений о назначении значков в окне навигатора воспользуйтесь интерактивной справкой по среде IDE. Для этого выберите команду "Справка" > "Содержание справки" и введите в поле поиска окна справки "значки навигатора". |
| |
| |
| === Поиск мест использования класса, метода и поля |
| |
| Окно "Случаи использования" применяется для просмотра класса (структуры), функции, переменной, макроса или файла, которые используются в исходном коде проекта. |
| |
| 1. Щелкните правой кнопкой мыши в файле ``customer.cc`` класс ``Customer`` в строке 42, и выберите команду "Найти случаи использования". |
| 2. Нажмите в диалоговом окне "Найти случаи использования" кнопку "Найти". |
| 3. Появится окно "Случаи использования" со случаями использования класса ``Customer`` в исходных файлах проекта. |
| |
| image::images/usages_window.png[] |
| |
| [start=4] |
| . Кнопки со стрелками в левой части окна предназначены для перехода между вхождениями и их отображения в редакторе, а также для переключения представления с логического на физическое и наоборот. Также можно фильтровать данные с помощью второго вертикального ряда кнопок в левой части окна. |
| |
| |
| === Работа с графиком вызовов |
| |
| В окне "Граф вызовов" отображаются два представления отношений вызовов между функциями проекта. В древовидном представлении отображаются функции, вызванные из выбранной функции, или функции, вызывающие выбранную функцию. Графическим представлением отношений вызовов служат стрелки между вызываемыми и вызывающими функциями. |
| |
| 1. В файле ``quote.cc`` щелкните правой кнопкой мыши в функции ``main`` и выберите 'Показать график вызовов'. |
| 2. Откроется окно "Граф вызовов" с деревом и графическим представлением всех функций, вызванных из функции ``main`` . |
| |
| image::images/call_graph1.png[] |
| |
| Если отображаются не все функции, приведенные на рисунке выше, нажмите в окне "Граф вызовов" третью кнопку слева для вывода элементов, вызванных из данной функции. |
| |
| |
| [start=3] |
| . Разверните узел ``endl`` для отображения функций, вызванных этой функцией. Обратите внимание, что график обновляется для дополнительного вывода функций, вызванных функцией ``endl`` . |
| |
| [start=4] |
| . Нажмите вторую кнопку 'Фокусировать' в левой части окна для перемещения фокуса к функции ``endl`` , затем нажмите четвертую кнопку 'Кто вызывает эту функцию', чтобы просмотреть все функции, вызывающие функцию ``endl`` . |
| |
| image::images/call_graph2.png[] |
| |
| [start=5] |
| . Разверните несколько узлов дерева для просмотра большего числа функций. |
| |
| image::images/call_graph3.png[] |
| |
| |
| === Работа с гиперссылками |
| |
| Функция перехода по гиперссылкам позволяет переходить от вызова класса, метода, переменной или константы к их объявлению и от объявления к определению. Кроме того, гиперссылки позволяют переходить от переопределяемого метода к переопределяющему и наоборот. |
| |
| 1. В файле ``cpu.cc`` проекта ``Quote_1`` наведите курсор мыши на строку 37, нажав клавишу CTRL. Функция ``ComputeSupportMetric`` будет выделена, а в аннотации будут выведены сведения о данной функции. |
| |
| image::images/hyperlinks1.png[] |
| |
| [start=2] |
| . Щелкните гиперссылку, и в окне редактора будет выполнен переход к определению функции. |
| |
| image::images/hyperlinks2.png[] |
| |
| [start=3] |
| . Наведите курсор на определение, нажав клавишу CTRL, и щелкните ссылку. В редакторе будет выполнен переход к объявлению функции в файле заголовка ``cpu.h`` . |
| |
| image::images/hyperlinks3.png[] |
| |
| [start=4] |
| . Нажмите на панели редактора стрелку влево (вторая кнопка слева), и редактор снова перейдет к определению в файле ``cpu.cc`` . |
| |
| [start=5] |
| . Наведите курсор мыши на зеленый круг в левом поле и просмотрите аннотацию, указывающую, что данный метод переопределяет другой метод. |
| |
| image::images/overide_annotation.png[] |
| |
| [start=6] |
| . Щелкните зеленый круг для перехода к переопределенному методу: будет выполнен переход к файлу заголовка ``module.h`` . В это файле на полях отображается серый круг, указывающий на то, что метод переопределен. |
| |
| [start=7] |
| . Щелкните серый круг, и в окне редактора появится список методов, переопределяющих этот метод. |
| |
| image::images/overridden_by_list.png[] |
| |
| [start=8] |
| . Щелкните элемент ``Cpu::ComputeSupportMetric`` для обратного перехода к объявлению метода в файле заголовка ``cpu.h`` . |
| |
| |
| === Работа с иерархией Includes |
| |
| Окно "Иерархия Includes" позволяет просматривать все файлы заголовков и исходные файлы, которые напрямую или косвенно включены в исходный файл, или все исходные файлы и файлы заголовков, которые напрямую или косвенно включают по #include файл заголовка. |
| |
| 1. Откройте в проекте ``Quote_1`` в окне редактора файл ``module.cc`` . |
| 2. Щелкните правой кнопкой мыши строку ``#include "module.h"`` в файле и выберите команду "Переход" > "Просмотреть иерархию Includes". |
| 3. По умолчанию окно "Иерархия" представляет собой список файлов, напрямую включающих файл заголовка. Нажмите крайнюю правую кнопку в нижней части окна для изменения представления на древовидное. Нажмите вторую кнопку справа, чтобы изменить представление для всех включаемых и включающих файлов. Разверните узлы дерева для просмотра всех исходных файлов, включающих файл заголовка. |
| |
| image::images/includes_hierarchy.png[] |
| |
| |
| === Работа с иерархией типов |
| |
| Окно "Иерархия типов" позволяет проверять все подтипы и родительские типы класса. |
| |
| 1. Откройте в проекте ``Quote_1`` файл ``module.h`` . |
| 2. Щелкните правой кнопкой мыши объявление класса ``Module`` и выберите "Переход" > "Просмотреть иерархию типов". |
| 3. Окно иерархии содержит все подтипы класса Module. |
| |
| image::images/type_hierarchy.png[] |
| |
| |
| === [[Следующие действия]] |
| |
| Учебный курс по использованию функций отладки проекта C или C++ в IDE NetBeans см. в разделе link:debugging.html[+Отладка проектов C/C+++]. |
| |
| link:mailto:users@cnd.netbeans.org?subject=Feedback:%20Editing%20and%20Navigating%20C/C++%20Source%20Files%20-%20NetBeans%20IDE%207.3%20Tutorial[+Отправить отзыв по этому учебному курсу+] |