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

Nic*_*don 15 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Gru*_*eck 7

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

考虑一下您希望分析的一些源代码:

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

class ReferencesOptionalClass extends OptionalClass {}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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