Java DLS_DEAD_LOCAL_STORE SuppressWarnings FindBugs假阳性

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

我正在努力消除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 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”)}