我可以告诉findbugs忽略我无法添加的类吗?

时间:2010-07-30 17:13:35

标签: java findbugs

Findbugs报告此事:

findbugs:
 [findbugs] Executing findbugs from ant task
 [findbugs] Running FindBugs...
 [findbugs] The following classes needed for analysis were missing:
 [findbugs]   com.company.OptionalClass
 [findbugs] Warnings generated: 11
 [findbugs] Missing classes: 2
 [findbugs] Calculating exit code...
 [findbugs] Setting 'missing class' flag (2)
 [findbugs] Setting 'bugs found' flag (1)
 [findbugs] Exit code set to: 3
 [findbugs] Java Result: 3
 [findbugs] Classes needed for analysis were missing
 [findbugs] Output saved to findbugs.xml
BUILD SUCCESSFUL

这个OptionalClass是从第三方jar中引用的,我没有源代码,我不想进行findbugs分析。它指的是我在类路径中或其他任何地方没有的类。在某些情况下,当我们的第三方jar以某种方式配置时,可能会使用此类。

有没有办法告诉findbugs忽略这个类?

请注意,它会完成分析并生成findbugs.xml报告,因此这是一个小问题。

3 个答案:

答案 0 :(得分:5)

出现此消息是因为您正在引用该类的二进制类中的某个位置。这并不一定意味着FindBugs试图分析com.company.OptionalClass来报告它;相反,FindBugs更有可能分析它以获得有关引用它的类的更多信息。

考虑一些您想要分析的源代码:

package my.actual.codebase;
import com.some.third.party.stuff.OptionalClass;

class ReferencesOptionalClass extends OptionalClass {}

这种示例在测试类中很常见,例如参考例如org.junit.@Test但JUnit jar不包含在您想要分析的内容中。

在上面的示例中,您确实需要ReferenceOptionalClass的结果,但为了获取它们,FindBugs的某些部分需要查看OptionalClass。如果它不能那样做,因为它不存在,它会报告该类缺失[1]。当FindBugs无法找到该类时,它通常只会中止它尝试进行的特定类型的分析,并且可以毫无问题地继续进行其余的分析。

简单的答案是,如果您对FindBugs给您的分析水平感到满意,那么只需忽略错误。

[1]请注意,这甚至可能是一个传递引用,即您的代码包含A类,它引用辅助JAR中的B,然后引用OptionalClass。

答案 1 :(得分:1)

没有, 但是,如果将jar添加到findbugs项目文件的'auxillary jar'部分,则不需要源代码或为此代码生成findbugs报告。

答案 2 :(得分:1)

要忽略第三方类,请在使用命令行时指定选项-auxclasspath classpath,或在使用 ant 任务时提供嵌套元素<auxClasspath refid="classpath">,其中第三方 - 派对罐子在classpath