我正在使用findbugs maven插件。这是我的配置的样子:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<includeTests>true</includeTests>
<includeFilterFile>findbugs-include.xml</includeFilterFile>
<debug>true</debug>
</configuration>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>findbugs-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
这是我的findbugs-include.xml:
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<!-- these come from http://findbugs.sourceforge.net/bugDescriptions.html -->
<Bug pattern="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR,NP_NONNULL_PARAM_VIOLATION,NP_NONNULL_RETURN_VIOLATION,NP_NULL_PARAM_DEREF,NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS,NP_NULL_PARAM_DEREF_NONVIRTUAL,NP_STORE_INTO_NONNULL_FIELD,NP_METHOD_RETURN_RELAXING_ANNOTATION,NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE"/>
<Package name="~com.company.app.*"/>
</Match>
</FindBugsFilter>
但是在maven控制台中,当我打开调试时,它有这样的行:
[java] Added 3 referenced classes
[java] Total of 71 packages
[java] com/company/app/client/FooBar
[java] java/util/HashMap
为什么那个hashmap在那里?这不是我告诉它要查看的软件包的一部分。
我应该注意这是一个多模块项目,这个插件是在我的root pom中定义的。我的findbugs-include.xml与我的root pom位于同一个文件夹中。它似乎正在读取文件并且<Bug>
元素正常工作,因为如果我注释掉,我的构建很早就会失败。我只是不明白为什么它注意到我的项目之外的类,如java/util/HashMap
。
也许我只是误解了日志记录。但确实这样说:
[java] Pass 1: Analyzing classes (20 / 1048) - 01% complete 209 usecs/byte 210 msec 1002 bytes 0 pass com/company/app/client/CreateOrUpdateProceduresResponse 6 0/2 20/1048 java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.NoteSuppressedWarnings to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.FindBugsSummaryStats to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.OverridingEqualsNotSymmetrical to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.EqualsOperandShouldHaveClassCompatibleWithThis to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.FieldItemSummary to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.FunctionsThatMightBeMistakenForProcedures to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.NoteAnnotationRetention to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.NoteDirectlyRelevantTypeQualifiers to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.BuildObligationPolicyDatabase to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.NoteJCIPAnnotation to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.Methods to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.ReflectiveClasses to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.CalledMethods to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.NoteCheckReturnValueAnnotations to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.NoteNonNullAnnotations to java/util/HashMap
[java] Applying edu.umd.cs.findbugs.detect.ExplicitSerialization to java/util/HashMap
添加<onlyAnalyze>com.company.app.-</onlyAnalyze>
没有任何区别。