Java DLS_DEAD_LOCAL_STORE SuppressWarnings FindBugs假阳性
我正在努力消除DLS_DEAD_LOCAL_商店的假阳性 以下是我迄今为止所尝试的:Java DLS_DEAD_LOCAL_STORE SuppressWarnings FindBugs假阳性,java,findbugs,spring-annotations,suppress-warnings,Java,Findbugs,Spring Annotations,Suppress Warnings,我正在努力消除DLS_DEAD_LOCAL_商店的假阳性 以下是我迄今为止所尝试的: @SuppressWarnings("DLS_DEAD_LOCAL_STORE") @edu.umd.cs.findbugs.annotations.SuppressWarnings(“DLS\u DEAD\u LOCAL\u STORE”) (基于) @edu.umd.cs.findbugs.annotations.SuppressWarnings(value=“DLS\u DEAD\u LOCAL\u S
@SuppressWarnings("DLS_DEAD_LOCAL_STORE")
@edu.umd.cs.findbugs.annotations.SuppressWarnings(“DLS\u DEAD\u LOCAL\u STORE”)
(基于)
@edu.umd.cs.findbugs.annotations.SuppressWarnings(value=“DLS\u DEAD\u LOCAL\u STORE”,justionment=“请走开”)
基于
但这些选择都没有帮助。请给我一些建议。
使用EclipseIndigo。更多的谷歌搜索+实验,我终于找到了一种方法 检查下的第6节
您需要创建自己的XML文件,其中包含所有自定义限制。
然后需要通过findbugs.exclude.filter
<Match>
<Class name="com.foobar.MyClass" />
<Method name="someMethod" />
<Bug pattern="DLS_DEAD_LOCAL_STORE" />
</Match>
一旦XML中存在@SuppressWarnings
标记,就不需要在方法中添加该标记
希望这对别人有帮助 我刚刚遇到了与此代码相同的问题:
@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();
...
}
}
我希望这些注释的范围尽可能小,这样它们就不会抑制真正的问题。在这里,似乎有必要对整个方法进行注释。,显然Sun/Oracle的javac编译器经常为final
局部变量生成死存储。无法轻松抑制这些DLS_DEAD_LOCAL_存储警告
但是,不确定XML过滤器为什么会工作(如公认的答案所示)。实际的问题似乎是FindBugs不允许在使用Sun/Oracle的javac编译器时,对最终的局部变量(如您的示例中)抑制DLS\u DEAD\u LOCAL\u STORE
,将以下内容添加到build.gradle:findbugs{excludeFilter=file(“findBugsFilter.xml”)}