Статический анализ java кода с помощью maven плагина Findbug

Статический анализ не претендует на звание панацеи от всех возможных ошибок, он позволяет выявить логические и стилистические ошибки в тех ветках кода, которые не покрыты юнит тестами.
Как показал опыт, некоторые ошибки жили в коде годами. Не исключены ложные срабатывания, так что надо все отчеты внимательно сверять с исходниками. Я проверял пока только проприетарный исходный код заказчика, поэтому примеров привести не смогу, ибо неразглашение 🙂 Но могу сказать, что попадались ошибки, когда строки сравнивались не по значению, а по адресу памяти ( == вместо 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 сделана вставка, которую я привел первой.

You can leave a response, or trackback from your own site.

Leave a Reply