// 
//     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.
//

= Статический анализ кода в редакторе Java IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Статический анализ кода в редакторе Java IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Статический анализ кода в редакторе Java IDE NetBeans

Ян Лагода (Jan Lahoda), Алена Сташкова (Alyona Stashkova)

В редакторе Java IDE NetBeans реализована новая функция статического анализа кода, которая является инструментом для поиска возможных ошибок и обнаружения несогласованностей в исходном коде.

В данном учебном курсе описано выполнение статического анализа кода Java с помощью FindBugs и подсказок Java NetBeans без непосредственного запуска приложений.



image::images/netbeans-stamp.png[title="Содержимое этой страницы применимо к IDE NetBeans 8.0"]



== Требования

*Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.*

|===
|Программное обеспечение или материал |Требуемая версия 

|link:http://netbeans.org/downloads/index.html[+IDE NetBeans+] |Версия 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработки приложений на языке Java+] (JDK) |Версия 7 и более поздние версии 

|link:https://netbeans.org/projects/samples/downloads/download/Samples/Java/library.zip[+library.zip+] |проект NetBeans 

|link:http://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar[+jsr305-2.0.0.jar+] |Запрос спецификации Java предназначен для улучшения эффективности инструментов статического анализа 
|===

*Примечание.* Файл  ``jsr305-2.0.0.jar``  включен в архив  ``library.zip``  только для выполнения заданий данного практического руководства.

При работе с другими проектами NetBeans файл link:http://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar[+jsr305-2.0.0.jar+] необходимо загрузить отдельно и добавить в папку 'Библиотеки' проекта в IDE следующим образом:

1. Щелкните правой кнопкой мыши папку 'Библиотеки' и выберите 'Добавить файл JAR/папку' во всплывающем меню.
2. В диалоговом окне 'Добавить файл JAR/папку' укажите путь к загруженному файлу  ``jsr305-2.0.0.jar``  и щелкните 'Открыть'.

image::images/jar.png[]


== Установка среды учебного курса

Кроме требуемого программного обеспечения, перечисленного выше, необходимо установить на компьютер нижеперечисленные программы.

* Файл link:https://netbeans.org/projects/samples/downloads/download/Samples/Java/library.zip[+library.zip+] необходимо разархивировать в папку проекта NetBeans и открыт в IDE NetBeans.
* Подключаемый модуль FindBugs необходимо загрузить и установить в IDE NetBeans следующим образом:
1. Выберите 'Источник' > 'Проверка' в главном меню IDE.
2. В диалоговом окне "Проверка" щелкните "Установить".

[.feature]
--
image::images/inspect-small.png[role="left", link="images/inspect.png"]
--



. В диалоговом окне 'Программа установки' щелкните 'Далее', чтобы продолжить установку.

[.feature]
--
image::images/plugin-small.png[role="left", link="images/plugin.png"]
--



. Прочтите лицензионное соглашение, выберите положение лицензионного соглашения и щелкните 'Установить'.


. По завершении установки нажмите кнопку "Готово".


== Использование заранее определенных настроек

При проверке кода в IDE NetBeans можно использовать заранее определенные конфигурации:

* <<all,Все средства анализа>>
* <<hints,Подсказки Java NetBeans>>
* <<fb,FindBugs>>
* <<default,По умолчанию>>


=== Выполнение всех средств анализа

Конфигурация  ``Все средства анализа``  развертывает все инструменты статического анализа кода, доступные в IDE.

*Для запуска конфигурации  ``Все анализаторы``  выполните следующие шаги:*

1. Выберите 'Источник' > 'Проверка' на главной панели инструментов IDE.
2. В раскрывающемся списке 'Область' диалогового окна 'Проверка' выберите  ``Текущий проект (библиотека)`` .
3. В раскрывающемся списке 'Конфигурация' выберите конфигурацию  ``Все средства анализа`` .

[.feature]
--
image::images/allconfig-small.png[role="left", link="images/allconfig.png"]
--

*Примечание.* Необходимо установить подключаемый модуль <<plugin,FindBugs>> для запуска этой конфигурации в первый раз.



. Нажмите кнопку "Проверить".
Результаты анализа отображаются в окне 'Инспектор' в представлении дерева слева.

[.feature]
--
image::images/all-small.png[role="left", link="images/all.png"]
--

Описание текущего выбранного результата в представлении дерева отображается справа.

[.feature]
--
image::images/alldescription-small.png[role="left", link="images/alldescription.png"]
--

*Примечание.* Если вы хотите оставить некоторую часть кода, которая описана в отчете как содержащая ошибки без изменений, IDE позволяет подавить предупреждения для этого кода, чтобы оставить его без изменений. Можно дважды щелкнуть предупреждение в представлении дереве в окне 'Инспектор', чтобы перейти в редактор исходного кода. Нажмите Alt-Enter, нажмите на черную стрелку, указывающую вправо в конце отображаемой подсказки и выберите  ``SuppressWarning - _(имя предупреждения)_`` .

[.feature]
--
image::images/suppress-small.png[role="left", link="images/suppress.png"]
--


=== Проверка кода Java по подсказкам Java NetBeans

Конфигурация  ``Подсказки Java NetBeans`` , доступная в IDE, позволяет проверить, удовлетворены ли заранее определенные правила стандартов написания кода рассматриваемым исходным кодом. Другими словами, он применяет набор подсказок Java NetBeans (также называется проверками кода) к исходным файлам Java.

*Для запуска конфигурации  ``Подсказки Java NetBeans``  выполните следующие шаги:*

1. Выберите 'Источник' > 'Проверка' на главной панели инструментов IDE.
2. В раскрывающемся списке 'Область' диалогового окна 'Проверка' выберите  ``Открыть проект``  (если имеется только одна  ``библиотека``  проект будет открыт в среде IDE) or  ``Текущий проект (библиотека)`` .

*Примечание.* Можно определить область (файлы. пакеты или проекты) для конфигурации  ``Подсказки Java NetBeans`` .



. Выберите переключатель 'Конфигурация' и выберите  ``Подсказки Java NetBeans``  в раскрывающемся списке.

[.feature]
--
image::images/hints-small.png[role="left", link="images/hints.png"]
--



. Нажмите кнопку "Проверить".
В среде IDE отображается представление дерева с результатами анализа с конфигурацией  ``Подсказки Java NetBeans``  в окне 'Инспектор'.

image::images/hintsconfig.png[]



. В окне 'Инспектор' нажмите кнопку <<categorize,Категоризировать>> на панели инструментов слева для просмотра проблем, сгруппированных в категории.

image::images/catview.png[]

В следующей таблице перечислены команды, доступные в окне 'Инспектор'.
|===

|Значок |Имя |Функция 

|image::images/refreshbutton.png[] |*Обновить* |Отображается обновленный список результатов статического анализа. 

|image::images/upbutton.png[] |*Предыдущая проблема* |Отображается предыдущая проблема в списке результатов статического анализа. 

|image::images/downbutton.png[] |*Следующая проблема* |Отображается следующая проблема в списке результатов статического анализа. 

|image::images/categorizebutton.png[] |
*Категоризировать* |Переключение свернутого представления проблем, обнаруженных в файле, проекте или пакета или категоризированного представления всех обнаруженных проблем. 
|===


=== Поиск возможных проблем в коде Java с помощью Findbugs

Конфигурация  ``FindBugs`` , доступная в IDE, позволяет найти широкий диапазон возможных проблем в коде. Он вызывает популярный инструмент FindBugs для работы с открытым исходным кодом для анализа кода Java. Создается отчет об ошибках, и он отображается в окне реорганизации в IDE NetBeans, в котором разделяются по категориям все обнаруженные проблемы, и обеспечивается возможность навигации напрямую от ошибок в отчете к подозрительному коду. Также можно прочитать описание ошибок в смежном окне или просмотреть его на странице link:http://findbugs.sourceforge.net/bugDescriptions.html[+Описание ошибок FindBugs+] спомощью указателя в верхней части левого фрейма.

*Примечание.* Необходимо установить подключаемый модуль <<plugin,FindBugs>> для запуска этой конфигурации в первый раз.

*Для определения возможных ошибок в коде Java с помощью конфигурации  ``FindBugs``  выполните следующие шаги:*

1. Откройте проект  ``library``  в IDE NetBeans и выберите 'Исходный код' > 'Проверка' в главном меню.
2. В раскрывающемся списке 'Область' диалогового окна 'Проверка' выберите  ``Текущий проект (библиотека)`` .

*Примечание.* Можно проверить файлы, пакеты или проекты с помощью конфигурации  ``FindBugs`` .



. В диалоговом окне 'Проверка' выберите конфигурацию  ``FindBugs`` .

[.feature]
--
image::images/fb-small.png[role="left", link="images/fb.png"]
--



. Щелкните кнопку 'Инспектор' для запуска статического анализа кода.
Результат статического анализа кода отображается в окне 'Инспектор' ниже редактора исходного кода.
Описание выбранной проблемы отображается в фрейме справа.

[.feature]
--
image::images/inspector-small.png[role="left", link="images/inspector.png"]
--



. В качестве альтернативы нажмите кнопку <<categorize,Категоризировать>> на панели инструментов слева для просмотра проблем, сгруппированных в категории.

image::images/fbcat.png[]

*Примечания*

* Если дважды щелкнуть проблему в развернутом списке, в IDE отображается указанная в отчете проблема в редакторе исходного кода. 
Нажмите Alt-Enter для просмотра описания проблемы в исходном коде.

[.feature]
--
image::images/source-editor-small.png[role="left", link="images/source-editor.png"]
--

* Возможные проблемы выделены в коде значком восклицательного знака (image::images/exclamation.png[]) на левой границе редактора исходного кода.

*Для включения FindBugs в редакторе Java выполните следующие шаги:*

1. Выберите 'Сервис' > 'Параметры' на главной панели инструментов IDE.
2. Перейдите на вкладку 'Редактор' и выберите 'Подсказки'.
3. Выберите  ``FindBugs``  в раскрывающемся списке 'Язык'.

[.feature]
--
image::images/fb-editor-small.png[role="left", link="images/fb-editor.png"]
--



. Выберите 'Выполнить FindBugs' в параметре 'Редактор'.


. Нажмите кнопку "ОК".
Если сейчас нажать Alt-Enter в исходном коде, где сообщается о проблеме, и щелкнуть черную стрелку в конце отображаемой подсказки, в IDE показываются некоторые варианты исправления возможных проблем.

[.feature]
--
image::images/fbenabled-small.png[role="left", link="images/fbenabled.png"]
--


=== Настройка конфигурации по умолчанию

Во время работы над кодом может потребоваться настроить заранее определенную конфигурацию, которая включает в себя собственные подсказки Java NetBeans или ошибки FindBugs.

*Для персонализации заранее настроенной конфигурации  ``По умолчанию``  в соответствии с требованиями, выполните следующие шаги:*

1. Выберите 'Источник' > 'Проверка' на главной панели инструментов IDE.
2. В диалоговом окне 'Проверка' выберите переключатель 'Конфигурация' и выберите конфигурация  ``по умолчанию`` .
3. Нажмите Управлять.
IDE отображает диалоговое окно 'Конфигурации'.

image::images/configurations-db.png[]



. Убедитесь, что в раскрывающемся списке 'Конфигурация' выбрано  ``По умолчанию``  .


. В раскрывающемся списке 'Средство анализа' выберите средство анализа  ``Соответствие профилей JRE 8`` ,  ``Подсказки Netbeans Java``  или  ``FindBugs`` .


. В зависимости от выбранного средства анализа в предыдущем шаге выберите профиль, проверки или ошибки, которые необходимо включить в конфигурацию  ``по умолчанию`` .

[.feature]
--
image::images/select-inspections-small.png[role="left", link="images/select-inspections.png"]
--



. Нажмите ОК, чтобы сохранить конфигурацию  ``По умолчанию`` .


== Создание и удаление конфигурации

Пользователи могут создавать и удалять свои собственные конфигурации, которые будут использоваться в статическом анализе кода Java.

*Для создания конфигурации выполните следующие шаги:*

1. Выберите 'Источник' > 'Проверка' на главной панели инструментов IDE.
2. В диалоговом окне 'Проверка' выберите переключатель 'Конфигурация' и выберите конфигурация  ``по умолчанию`` .
3. Нажмите Управлять.
4. В диалоговом окне 'Конфигурация' щелкните черную стрелку в конце раскрывающегося списка 'Конфигурация' и выберите 'Создать'.

image::images/newconfig.png[]

Создается конфигурация  ``newConfig``  и добавляется в раскрывающийся список 'Конфигурации'.

image::images/newconfig-created.png[]



. В раскрывающемся списке 'Средство анализа' выберите  ``Соответствие профилей JRE 8`` ,  ``Подсказки Netbeans Java``  или  ``FindBugs`` .


. Укажите профиль, проверки или ошибки для включения в вашу конфигурацию.


. Нажмите ОК, чтобы сохранить правки и закрыть диалоговое окно 'Конфигурацию'.
Созданная конфигурация  ``newConfig``  доступна в раскрывающемся списке 'Конфигурация' в диалоговом окне 'Инспектор'.

[.feature]
--
image::images/newconfig-inspect-small.png[role="left", link="images/newconfig-inspect.png"]
--

*Примечание.* Чтобы переименовать конфигурацию, выберите конфигурацию  ``newConfig``  в раскрывающемся списке 'Конфигурация', щелкните черную стрелку в конце раскрывающегося списка 'Конфигурация' и выберите 'Переименовать'. Введите новое имя (например,  ``renamedConfig`` ) и нажмите клавишу Enter, чтобы сохранить правки.

image::images/renamedconfig.png[]

*Для удаления конфигурации выполните следующие шаги:*

1. Выберите 'Источник' > 'Проверка' на главной панели инструментов IDE.
2. В диалоговом окне 'Проверка' нажмите переключатель 'Конфигурация' и выберите конфигурацию для удаления (в этом примере  ``renamedConfig`` ).
3. Нажмите Управлять.
4. В диалоговом окне 'Конфигурации' щелкните черную стрелку в конце раскрывающегося списка 'Конфигурация' и выберите 'Удалить'.

image::images/delete.png[]



. В диалоговом окне 'Удалить конфигурацию' щелкните 'Да', чтобы подствердить удаление конфигурации.

image::images/delete-confirm.png[]

Конфигурация  ``renamedConfig``  удалена из списка 'Конфигурации'.

*Примечание.* Lля получения информации о том, как создать модуль NetBeans, который предоставляет одну или несколько подсказок Java NetBeans см. link:http://platform.netbeans.org/tutorials/nbm-java-hint.html[+Учебный курс по модулю подсказок Java NetBeans+].


== Выполнение отдельных проверок

Исходный код можно проверить на наличие определенной проблемы в с помощью функции статического анализа в IDE NetBeans.

*Для выявления конкретного несоответствия или проблемы в исходном коде Java при выполнении одной проверки, выполните следующие шаги:*

1. Выберите 'Источник' > 'Проверка' в главном меню IDE.
2. В раскрывающемся списке 'Область' диалогового окна 'Проверка' укажите файл, пакет или проект(-ы), которые требуется проверить.
3. Выберите 'Отдельная проверка' и выполните одно из следующих действий:
* В раскрывающемся списке 'Отдельная проверка' с помощью прокрутки перейдите и выделите _одну_ подсказку Java NetBeans или проблему FindBugs, которые будут использоваться при анализе исходного кода.

[.feature]
--
image::images/single-inspection-small.png[role="left", link="images/single-inspection.png"]
--

* Щелкните 'Обзор', чтобы открыть диалоговое окно 'Конфигурации', и в раскрывающемся списке 'Средство анализа' укажите средство анализа, выберите профиль (для средства анализа Соответствие профиля JRE 8), _одну_ проверку (для средства анализа NetBeans Java Hints) и _одну_ ошибку (для средства анализа NetBeans Java Hints), которая будет использоваться в анализе исходного кода. Нажмите кнопку 'ОК', чтобы закрыть диалоговое окно 'Конфигурации'.

[.feature]
--
image::images/hint-inspection-small.png[role="left", link="images/hint-inspection.png"]
--



. В диалоговом окне 'Проверка' щелкните 'Проверка', чтобы выполнить анализ исходного кода. 
После завершения операции 'Проверка', подсказки, которые могут быть применены к коду или проблемам, которые были найдены, отображаются в окне 'Инспектор' ниже редактора исходного кода.


== Заключение

В этом учебном курсе описываются наиболее распространенные варианты использования функции статического анализа кода в IDE NetBeans. Обратите внимание, что с помощью функции статического анализа кода можно также выполнять пользовательскую реорганизацию в контексте проекта или применять специальные настройки реорганизации к нескольким проектам, открытым в IDE, и т. п.

<<top,В начало>>

link:/about/contact_form.html?to=3&subject=Feedback:%20Static%20Code%20Analysis%20in%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+]



== Дополнительные сведения

Связанные материалы можно найти в следующих документах:

* link:code-inspect-screencast.html[+Видеообзор функции статического анализа кода в IDE NetBeans+]
* link:http://wiki.netbeans.org/Java_Hints[+Полный список подсказок Java NetBeans+]
* link:http://wiki.netbeans.org/JavaDeclarativeHintsDescriptionSketch[+Описание декларативных подсказок Java NetBeans+]
* link:http://platform.netbeans.org/tutorials/nbm-java-hint.html[+Учебный курс по модулям подсказок Java NetBeans+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG613[+Использование подсказок при анализе и рефакторинге исходного кода+] в разделе _Разработка приложений с помощью NetBeans IDE_

<<top,В начало>>

