Статический анализ 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.8</version>
                <reports>
                    <report>index</report>
                </reports>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>2.5.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>
Величина тайм аута в примере 240000, для больших пакетов и модулей ее надо увеличивать. Данная вставка сгенерирует индексную страницу и отчет по проблемам в исходном коде. Плагин maven-project-info-reports-plugin позволяет получать множество разнообразных отчетов, к примеру отчет о внешних зависимостях. Если вы хотите больше отчетов, сделайте такую правку (но помните, что увеличится время сборки):
<reports>
    <report>index</report>
    <report>project-team</report>
    <report>license</report>
    <report>mailing-list</report>
    <report>dependencies</report>
    <report>dependency-convergence</report>
    <report>plugin-management</report>
    <report>cim</report>
    <report>issue-tracking</report>
    <report>scm</report>
    <report>summary</report>
</reports>
Для активации плагина maven-site-plugin просто добавьте в команде мавена "site" после install. Предупреждение "[WARNING] No project URL defined - decoration links will not be relativized!" некритично для генерации отчетов (просто плагин не сможет сделать их доступными по HTTP). Если плагин site не создает отчеты, то скорее всего из-за того, что не в том месте parent POM сделана вставка, которую я привел первой. [sc:social_networks ]
You can leave a response, or trackback from your own site.

Leave a Reply