15

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

4

3 回答 3

7

出现此消息是因为您在二进制类的某处引用了该类。这并不一定意味着 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。

于 2010-09-30T11:42:25.513 回答
1

要忽略第三方类,请-auxclasspath classpath在使用命令行时指定一个选项,或者<auxClasspath refid="classpath">在使用ant任务时提供嵌套元素,您的第三方 jar 位于 classpath.

于 2012-11-13T15:17:55.850 回答
1

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

于 2010-07-30T18:42:35.527 回答