有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SuppressWarning不适用于FindBugs

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

public class LogItem {
    private String name;

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

在这个类上运行FindBugs时,is会在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中会出现一个语法(编译)错误,说明:

Duplicate local variable nm; name cannot be resolved to a type.

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

如何(确切地说是!)我要用这个注释让FindBugs安静吗


共 (2) 个答案

  1. # 1 楼答案

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

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

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

        @SuppressWarnings("NP") name = nm;
    

    另外,您确定这里的"NP"是有效的警告标识符吗?如果没有别的办法,我会试试