Статический анализ не претендует на звание панацеи от всех возможных ошибок, он позволяет выявить логические и стилистические ошибки в тех ветках кода, которые не покрыты юнит тестами.
Как показал опыт, некоторые ошибки жили в коде годами. Не исключены ложные срабатывания, так что надо все отчеты внимательно сверять с исходниками. Я проверял пока только проприетарный исходный код заказчика, поэтому примеров привести не смогу, ибо неразглашение 🙂 Но могу сказать, что попадались ошибки, когда строки сравнивались не по значению, а по адресу памяти ( == вместо equals()). Еще удалось обнаружить неиспользуемые переменные/функции (private метод может быть использован только внутри класса) и даже класс.
Если вы хотите задействовать findbug у себя в проекте, то в parent POM нужно сделать вставку:
<build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-site-plugin</artifactid> <version>3.4</version> <configuration> <reportplugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-project-info-reports-plugin</artifactid> <version>2.9</version> <reports> <report>index</report> </reports> </plugin> <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>findbugs-maven-plugin</artifactid> <version>3.0.5</version> <configuration> <argline>-Xmx256m</argline> <argline>-XX:MaxPermSize=256m</argline> <timeout>240000</timeout> <effort>max</effort> <failonerror>true</failonerror> </configuration> </plugin> </reportplugins> </configuration> </plugin> </plugins> </build> |
WordPress продолжает портить куски кода в заметках, поэтому неискаженный фрагмент предлагаю скачать тут findbugs_xml_snippet_august_2021
Величина тайм аута в примере 240000, для больших пакетов и модулей ее надо увеличивать. Данная вставка сгенерирует индексную страницу и отчет по проблемам в исходном коде. Плагин maven-project-info-reports-plugin позволяет получать множество разнообразных отчетов, к примеру отчет о внешних зависимостях. Если вы хотите больше отчетов, сделайте такую правку (но помните, что увеличится время сборки):
index project-team license mailing-list dependencies dependency-convergence plugin-management cim issue-tracking scm summary Для активации плагина maven-site-plugin просто добавьте в команде мавена "site" после install. |
Предупреждение «[WARNING] No project URL defined — decoration links will not be relativized!» некритично для генерации отчетов (просто плагин не сможет сделать их доступными по HTTP). Если плагин site не создает отчеты, то скорее всего из-за того, что не в том месте parent POM сделана вставка, которую я привел первой.