SuppressWarnings不适用于FindBugs

时间:2012-06-04 16:20:50

标签: java annotations findbugs

我在我的Eclipse项目上运行了FindBugs并得到了一个潜在的错误警告,我想根据特定的原因(在这个问题的上下文之外)压制它。这是代码:

public class LogItem {
    private String name;

    private void setName(final String nm) {
        name = nm;
    }
}

当您在此类上运行FindBugs时,会在name = nm分配操作上向您发出警告,说明:Unread field: 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?!?

2 个答案:

答案 0 :(得分:2)

我一直使用内置的java.lang.SuppressWarnings,而不是FindBugs,它到目前为止都有用。此外,对于特定语句,您可能需要在注释后立即将语句保留在同一行。像

    @SuppressWarnings("NP") name = nm;

另外,您确定"NP"是有效的警告标识符吗?如果没有其他似乎可行的话,我会尝试"unused"

答案 1 :(得分:2)

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

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