[英]How to suppress multiple FindBugs warnings for the same line of code
我最近发现了FindBugs的@edu.umd.cs.findbugs.annotations.SuppressWarnings
注释非常酷,并且允许你基本上告诉FindBugs忽略某些警告。
我已经成功实现了我自己的SLF4J绑定,遵循他们的建议,采用slf4j-simple
并使用您自己的记录器和记录器工厂绑定对其进行修改,我很高兴地说它就像一个魅力。
我刚刚在包含此SLF4J绑定的包上运行查找错误,并且它抱怨原始StaticLoggerBinder
作者(Ceki StaticLoggerBinder
)编写的某行代码:
// to avoid constant folding by the compiler, this field must *not* be final.
publicstatic String REQUESTED_API_VERSION = "1.6"; // !final
FindBugs抱怨说这个字段“ 不是最终的,但应该是 ”。 然而,SLF4J的(非常)聪明的人已经想到了这一点,并放置了上面提供的周围评论。
所以,为了让FindBugs闭嘴,我按照惯常的方式修改了FB警告:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
public static String REQUESTED_API_VERSION = "1.6";
当我清理我的项目并重新运行FindBugs时,我在同一行代码上收到第二个警告,这次抱怨:
永远不会读取此字段。 该字段是公共的或受保护的,因此它可能用于未被视为分析一部分的类。 如果没有,请考虑将其从课堂中删除。
当我添加第二个警告抑制时:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
@edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public static String REQUESTED_API_VERSION = "1.6";
我从Eclipse获得了编译器/语法错误:
重复注释@SuppressWarnings。
如何在同一行代码上抑制多个FindBugs警告?
只需在一个注释中列出数组中的所有警告标识符:
@edu.umd.cs.findbugs.annotations.SuppressWarnings({
"MS_SHOULD_BE_FINAL",
"URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"})
public static String REQUESTED_API_VERSION = "1.6";
与标准java.lang.SuppressWarnings
,FindBugs版本也有一个String[]
类型的参数 。 对于单个值,可以省略花括号,以使生活更轻松。
FindBugs 3+风格:
@SuppressFBWarnings(
value={"NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE","STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"},
justification="let me just make the build pass")
试试这个:
@edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_SHOULD_BE_FINAL" , "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"})
public static String REQUESTED_API_VERSION = "1.6";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.