我最近发现了 FindBugs 的@edu.umd.cs.findbugs.annotations.SuppressWarnings
注释,它非常酷,基本上可以让您告诉 FindBugs 忽略某些警告。
我已经按照他们的建议成功地实现了我自己的 SLF4J 绑定,slf4j-simple
使用您自己的记录器和记录器工厂绑定来获取和修改它,我很高兴地说它就像一个魅力。
我刚刚在包含此 SLF4J 绑定的包上运行了查找错误,它抱怨StaticLoggerBinder
原作者 (Ceki Gulku) 编写的某行代码:
// 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 警告?