我在试着排除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。
发布于 2013-07-23 07:17:09
更多的谷歌+实验,我终于想出了一种方法。
检查http://findbugs.sourceforge.net/manual/filter.html下的Section 6。
您需要创建自己的XML文件,其中包含所有自定义抑制。然后,您需要通过findbugs.exclude.filter让build.xml文件了解此文件
<Match>
<Class name="com.foobar.MyClass" />
<Method name="someMethod" />
<Bug pattern="DLS_DEAD_LOCAL_STORE" />
</Match>一旦该标记存在于@SuppressWarnings中,就不需要在方法中添加该标记。
希望这对某些人有帮助!
发布于 2014-05-26 01:01:25
我在这段代码中也遇到了同样的问题:
@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();
...
}
}我喜欢保持这些注释的范围尽可能小,这样它们就不会隐藏真正的问题。这里似乎有必要对整个方法进行注释。
发布于 2016-07-27 22:48:43
显然,Sun/Oracle的As explained in FindBugs documentation编译器经常为final局部变量生成死存储。这些DLS_DEAD_LOCAL_STORE警告不能轻易抑制。
但是,我不确定为什么XML过滤器可以工作(就像在公认的答案中一样)。
https://stackoverflow.com/questions/17798612
复制相似问题