有没有办法忽略单个FindBugs警告?

2022-08-31 06:01:03

使用 PMD,如果要忽略特定警告,可以使用忽略该行。// NOPMD

FindBugs也有类似的东西吗?


答案 1

FindBugs 初始方法涉及 XML 配置文件(即过滤器)。这真的不如PMD解决方案方便,但FindBugs适用于字节码,而不是源代码,因此注释显然不是一种选择。例:

<Match>
   <Class name="com.mycompany.Foo" />
   <Method name="bar" />
   <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>

但是,为了解决这个问题,FindBugs后来引入了另一个基于注释的解决方案(参见PresspressFBWarnings),您可以在类或方法级别使用(在我看来比XML更方便)。示例(也许不是最好的一个,但这只是一个例子):

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value="HE_EQUALS_USE_HASHCODE", 
    justification="I know what I'm doing")

请注意,由于FindBugs 3.0.0已被弃用,因为名称与Java的.SuppressWarnings@SuppressFBWarningsSuppressWarnings


答案 2

正如其他人提到的,您可以使用注释。如果您不想或无法向代码中添加其他依赖项,则可以自己将注释添加到代码中,Findbugs 不关心注释在哪个包中。@SuppressFBWarnings

@Retention(RetentionPolicy.CLASS)
public @interface SuppressFBWarnings {
    /**
     * The set of FindBugs warnings that are to be suppressed in
     * annotated element. The value can be a bug category, kind or pattern.
     *
     */
    String[] value() default {};

    /**
     * Optional documentation of the reason why the warning is suppressed
     */
    String justification() default "";
}

资料来源:https://sourceforge.net/p/findbugs/feature-requests/298/#5e88


推荐