4

我在我的 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;名称无法解析为类型。

因此,我尝试SuppressWarnings在字段本身上添加 FindBugs,但是在类上重新运行 FindBugs 后,FindBugs 仍然抱怨同一行代码并且出于相同的原因。我什至尝试将其添加SuppressWarnings到该setName方法中,但仍然没有区别。

如何(确切地说!)我如何使用这个注释来让 FindBugs 安静?!?

4

2 回答 2

2

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

    @SuppressWarnings("NP") name = nm;

另外,你确定"NP"这里是一个有效的警告标识符吗?"unused"如果没有其他方法似乎可行,我会尝试。

于 2012-06-04T16:24:39.367 回答
2

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

public class LogItem {
    @edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_FIELD")
    private String name;
于 2012-06-04T21:16:43.540 回答