我正试图消除DLS_DEAD_LOCAL_STORE的误报
这是我到目前为止所尝试的内容:
@SuppressWarnings("DLS_DEAD_LOCAL_STORE")
@edu.umd.cs.findbugs.annotations.SuppressWarnings("DLS_DEAD_LOCAL_STORE")
(基于SuppressWarnings not working on FindBugs)
@edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "DLS_DEAD_LOCAL_STORE", justification = "please go away")
基于http://osdir.com/ml/java-findbugs-general/2010-06/msg00017.html
但是没有一个选择有帮助。请指教。 使用Eclipse Indigo。
答案 0 :(得分:6)
更多谷歌搜索+实验,我终于找到了一种方法来做到这一点。
在http://findbugs.sourceforge.net/manual/filter.html下查看Section 6
。
您需要创建自己的XML文件,其中包含所有自定义的supressions。
然后,您需要通过findbugs.exclude.filter
<Match>
<Class name="com.foobar.MyClass" />
<Method name="someMethod" />
<Bug pattern="DLS_DEAD_LOCAL_STORE" />
</Match>
在XML中存在@SuppressWarnings
标记后,无需添加{{1}}标记。
希望这有助于某人!
答案 1 :(得分:4)
我对此代码遇到了同样的问题:
@Test
public void testSomething() {
@SuppressWarnings("unused")
@SuppressFBWarnings(value = "DLS_DEAD_LOCAL_STORE")
final SomeMockClass mock = new SomeMockClass();
...
}
}
@SuppressFBWarnings
在这里不起作用。
此处的解决方案是将@SuppressFBWarnings
移至方法级别:
@Test
@SuppressFBWarnings(value = "DLS_DEAD_LOCAL_STORE")
public void testSomething() {
@SuppressWarnings("unused")
final SomeMockClass mock = new SomeMockClass();
...
}
}
我希望尽可能减少这些注释的范围,因此它们不会抑制实际问题。这里似乎有必要注释整个方法。
答案 2 :(得分:2)
As explained in FindBugs documentation,显然Sun / Oracle的javac编译器经常为final
局部变量生成死存储。无法轻易抑制这些DLS_DEAD_LOCAL_STORE警告。
不确定为什么XML过滤器可以正常工作(如在接受的答案中)。