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
报告,因此这是一个小问题。
答案 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
。