Для коректної роботи SpotBugs необхідно використовувати Java версії 8 та вище. |
- Ant
- Maven
- Gradle
- Eclipse
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.2.2</version>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>4.2.0</version>
</dependency>
</dependencies>
</plugin>
Також у розділі плагінів додаємо:
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.8</version>
</plugin>
Основні команди SpotBugs
Ну а тепер давайте розглянемо основні команди для SpotBugs, що викликаються або через консоль Мавена: (щоб викликати консоль, потрібно натиснути на значок m ), або через термінал idea:1. mvn spotbugs:help
Відображає довідкову інформацію для інтерфейсу користувача командного рядка SpotBugs . Приклад результату виклику: Як ми бачимо, якщо запустити команду: mvn spotbugs:help -Ddetail=true -Dgoal=<goal-name> можна дізнатися докладніше про налаштування мети. Або запустити: mvn spotbugs:help -Ddetail=true і дізнатися докладніше про всі чотири цілі. Наприклад, я запустив mvn spotbugs:help -Ddetail=true -Dgoal=help і отримав такий опис:2. mvn spotbugs:check
Ця команда запускає аналіз і повідомляє про невдалу збірку, якщо виявляє будь-які помилки зі спектру spotbugs . Приклад результату запуску команди: Тут ми бачимо, як spotbugs лається на всі знайдені недоліки програми (знайдений поганий код).3. mvn spotbugs:spotbugs
Ця команда аналізує цільовий проект за допомогою SpotBugs. Без запуску цієї команди, команда відображення результатів практично буде марна, т.к. вона й здійснює сам аналіз. Після запуску цієї команди створюється файл spotbugsXml.xml , в якому лежать результати аналізу для подальшого відображення. Також слід зазначити, що запуск команди mvn spotbugs: spotbugs сам по собі нічого не дасть: спочатку потрібно запустити стандартну команду для компіляції проекту mvn clean compile , і тільки після неї команду для аналізу проекту. Попередня розглянута команда, mvn spotbugs:check , також аналізує та створює файл spotbugsXml.xml , але на відміну від mvn spotbugs:spotbugsвона ще показує результат аналізу на нижній панелі. Для аналізу таким шляхом також спершу потрібно запустити mvn clean compile , а потім — mvn spotbugs:check .4. mvn spotbugs:gui
Мабуть, ця команда найцікавіша: вона запускає графічний інтерфейс SpotBugs для перевірки результатів аналізу, в якому ви можете докладно розглянути, які недоліки є у вашому коді та де вони знаходяться. Але, як я згадав вище, для правильної відпрацювання цієї команди необхідний файл spotbugsXml.xml у папці target , який створюється після описаних вище маніпуляцій. При запуску цієї команди отримуємо наступне графічне відображення: Тут ви можете налаштовувати фільтрацію на ім'я класу, групувати за категоріями поганого коду і так далі. Можливі недоліки поділяються на типи, які у свою чергу поділяються на докладні конкретні шаблони помилок (400+).Типи помилок
Давайте розглянемо докладніше можливі типи помилок:-
Bad practice
Порушення рекомендованої практики написання коду.
-
Correctness
Ймовірна помилка коду, що призводить до того, що код відповідає задуму розробника. Допомагає досягти низького рівня хибних спрацьовувань.
-
Experimental
Даний архетип описує експериментальні та не повністю перевірені шаблони помилок (довіряти зауваженням з даним типом помилки слід з великою обережністю).
-
Internationalization
Тип визначає недоліки коду, пов'язані з інтернаціоналізацією та локалізацією.
-
Malicious code vulnerability
Даний тип говорить про те, що ваш код вразливий для атак з боку ненадійного коду.
-
Multithreaded correctness
Тип описує недоліки коду, пов'язані з потоками, блокуванням.
-
Bogus random noise
Даний тип призначений для використання як контроль в експериментах з інтелектуального аналізу даних, а не для пошуку реальних помилок у програмному забезпеченні.
-
Performance
Архетип говорить про те, що ваш код не обов'язково невірний, але може бути неефективним і потребує певної оптимізації.
-
Security
Ймовірно, ви використовуєте ненадійний вхідний функціонал, у якого можуть бути уразливості, дірки у системи безпеки, допустимі для використання віддалено.
-
Dodgy code
Під даний тип потрапляє код, який вводить в оману, є аномальним або написаний таким чином, що призводить до помилок.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ