有没有办法可以忽略一个FindBugs警告?
有了PMD,如果你想忽略一个特定的警告,你可以使用// NOPMD
来忽略该行。
FindBugs有没有类似的东西?
FindBugs初始方法涉及XMLconfiguration文件(即filter) 。 这实际上比PMD解决scheme不太方便,但FindBugs在字节码上工作,而不是在源代码上工作,所以注释显然不是一个选项。 例:
<Match> <Class name="com.mycompany.Foo" /> <Method name="bar" /> <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" /> </Match>
但是,为了解决这个问题,FindBugs后来又引入了另外一个基于注解的解决scheme(参见SuppressFBWarnings
),你可以在类或者方法级使用(在我看来比XML更方便)。 例子(也许不是最好的,但是,这只是一个例子):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value="HE_EQUALS_USE_HASHCODE", justification="I know what I'm doing")
请注意,由于名称与Java的SuppressWarnings
发生冲突,因此FindBugs 3.0.0 SuppressWarnings
已被弃用,以支持@SuppressFBWarnings
。
这是一个更完整的XMLfilter示例(上面的示例本身不起作用,因为它只是显示一个片段,并且缺less<FindBugsFilter>
开始和结束标记):
<FindBugsFilter> <Match> <Class name="com.mycompany.foo" /> <Method name="bar" /> <Bug pattern="NP_BOOLEAN_RETURN_NULL" /> </Match> </FindBugsFilter>
如果您正在使用Eclipse FindBugs插件,请使用Window-> Preferences-> Java-> FindBugs-> Filter files-> Exclude filter files-> Add浏览到您的XMLfilter文件。
更新Gradle
dependencies { compile group: 'findbugs', name: 'findbugs', version: '1.0.0' }
findFindBugs报告
文件:///Users/your_user/IdeaProjects/projectname/build/reports/findbugs/main.html
find具体的消息
导入注释的正确版本
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
直接在违规代码上面添加注释
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
查看更多信息: Findbugs Spring Annotation
正如其他人所提到的,您可以使用@SuppressFBWarnings
注释。 如果你不想或者不能添加其他依赖到你的代码,你可以自己添加注释到你的代码,Findbugs不关心注解在哪个包中。
@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
我要在这里留下这个: https : //stackoverflow.com/a/14509697/1356953
请注意,这与java.lang.SuppressWarnings
一起使用,所以不需要使用单独的注释。
一个字段上的@SuppressWarnings只会抑制为该字段声明报告的findbugs警告,而不是每个与该字段相关的警告。
例如,这会禁止“只设置为空的字段”警告:
@SuppressWarnings(“UWF_NULL_FIELD”)String s = null; 我认为你可以做的最好的方法就是将带有警告的代码隔离到最小的方法中,然后在整个方法上取消警告。