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

2022-09-03 15:41:21

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

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

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

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


答案 1

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

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

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

class ReferencesOptionalClass extends OptionalClass {}

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

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

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

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


答案 2

否,但是,如果您将 jar 添加到 findbugs 项目文件的“辅助 jars”部分,则不需要为此代码生成源代码或生成 findbugs 报告。


推荐