Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SuppressWarnings不适用于FindBugs_Java_Annotations_Findbugs - Fatal编程技术网

Java SuppressWarnings不适用于FindBugs

Java SuppressWarnings不适用于FindBugs,java,annotations,findbugs,Java,Annotations,Findbugs,我在我的Eclipse项目上运行了FindBugs,并得到了一个潜在的bug警告,出于特定的原因(在这个问题的上下文之外),我想抑制它。代码如下: public class LogItem { private String name; private void setName(final String nm) { name = nm; } } 当您在此类上运行FindBugs时,is会在name=nm赋值操作中向您发出警告,说明:未读字段:com.me

我在我的Eclipse项目上运行了FindBugs,并得到了一个潜在的bug警告,出于特定的原因(在这个问题的上下文之外),我想抑制它。代码如下:

public class LogItem {
    private String name;

    private void setName(final String nm) {
        name = nm;
    }
}
当您在此类上运行FindBugs时,is会在
name=nm
赋值操作中向您发出警告,说明:
未读字段:com.me.myorg.LogItem.name

因此,我尝试添加以下内容:

    private void setName(final String nm) {
        @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP", justification = "Because I can")
        name = nm;
    }
执行此操作时,Eclipse中会出现语法(编译)错误,说明:

重复局部变量nm;无法将名称解析为类型

因此,我尝试在字段本身上添加FindBugs'
SuppressWarnings
,但是在类上重新运行FindBugs之后,FindBugs仍然在抱怨同一行代码,原因也是一样的。我甚至尝试将
SuppressWarnings
添加到
setName
方法中,但仍然没有任何区别


如何(确切地说!)使用此注释使FindBugs安静

我一直在使用内置的
java.lang.SuppressWarnings
,而不是FindBugs,到目前为止,它还可以工作。此外,对于特定语句,您可能需要将语句保持在注释之后的同一行上。像

    @SuppressWarnings("NP") name = nm;

另外,您确定这里的“NP”是有效的警告标识符吗?如果没有其他办法,我会尝试
“unused”

将注释放在字段上并修复错误标识符。这对我很有用:

public class LogItem {
    @edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_FIELD")
    private String name;

谢谢@Peter,但这些建议都不起作用。当我将FindBugs
SuppressWarnings
替换为您的答案包含的确切代码行时,我仍然得到一个编译器错误:
此行有多个标记-重复的局部变量nm-无法解析为类型-标记“=”上的语法错误,请删除此标记-未读字段:com.me.myorg.LogItem.name
。有什么想法吗?“复制局部变量”表明您的代码中有一些东西没有发布在您的问题中…?@LouisWasserman,我从eclipse中得到了与该类相同的错误。当注释与语句一起使用时,解析器似乎猜错了您的意思。
nm
只定义了一次;这不应该与注释有任何关系,不是吗?我认为eclipse编译器假定“name”是一种类型,因为这是注释之后所期望的。那么不允许使用“=”,因此它会忽略它。所以它认为您正在声明一个名为“nm”的本地,类型为“name”。如何导入它,我需要为gradle依赖添加什么?