使用PMD,如果您想忽略特定的警告,可以使用// NOPMD来忽略该行。

FindBugs也有类似的东西吗?


当前回答

我把这个留在这里:https://stackoverflow.com/a/14509697/1356953

请注意,这适用于java.lang. suppresswarningso不需要使用单独的注释。

字段上的@SuppressWarnings仅抑制findbugs警告 为该字段声明报告,而不是与之关联的每个警告 该字段。 例如,这将抑制“字段只设置为null” 警告: @SuppressWarnings("UWF_NULL_FIELD") String s = null;我认为最好的 您所能做的就是将带有警告的代码隔离到最小 方法可以,然后压制整个方法上的警告。

其他回答

虽然这里的其他答案是有效的,但它们并不是解决这个问题的完整方法。

本着完整的精神:

你需要在你的pom文件中有findbugs注释-它们只是在编译时,所以你可以使用提供的作用域:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>findbugs-annotations</artifactId>
  <version>3.0.1</version>
  <scope>provided</scope>
</dependency>

这允许使用@ suppressbwarnings,还有另一个依赖项提供@SuppressWarnings。然而,上面的情况更清楚。

然后在你的方法上面添加注释:

E.g.

@SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE",
        justification = "Scanning generated code of try-with-resources")
@Override
public String get() {
    try (InputStream resourceStream =  owningType.getClassLoader().getResourceAsStream(resourcePath);
         BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream, UTF_8))) { ... }

这包括bug的名称和禁用扫描的原因。

最后,您需要重新运行findbugs以清除错误。

在撰写本文时(2018年5月),FindBugs似乎已经被SpotBugs所取代。使用SuppressFBWarnings注释需要使用Java 8或更高版本编译代码,并在spotbugs-annotations.jar上引入编译时依赖项。

使用筛选器文件来筛选SpotBugs规则就没有这样的问题。文档在这里。

我把这个留在这里:https://stackoverflow.com/a/14509697/1356953

请注意,这适用于java.lang. suppresswarningso不需要使用单独的注释。

字段上的@SuppressWarnings仅抑制findbugs警告 为该字段声明报告,而不是与之关联的每个警告 该字段。 例如,这将抑制“字段只设置为null” 警告: @SuppressWarnings("UWF_NULL_FIELD") String s = null;我认为最好的 您所能做的就是将带有警告的代码隔离到最小 方法可以,然后压制整个方法上的警告。

下面是一个更完整的XML过滤器示例(上面的示例本身将不起作用,因为它只显示了一个片段,并且缺少<FindBugsFilter>开始和结束标记):

<FindBugsFilter>
    <Match>
        <Class name="com.mycompany.foo" />
        <Method name="bar" />
        <Bug pattern="NP_BOOLEAN_RETURN_NULL" />
    </Match>
</FindBugsFilter>

如果您正在使用Android Studio FindBugs插件,浏览到您的XML过滤器文件使用文件->其他设置->默认设置->其他设置->FindBugs- idea ->过滤器->排除过滤文件->添加。

正如其他人提到的,您可以使用@SuppressFBWarnings Annotation。 如果不希望或不能向代码中添加另一个依赖项,则可以自己将Annotation添加到代码中,Findbugs并不关心Annotation位于哪个包中。

@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/ # 5 e88