FindBugs 在我的代码中发现了一个潜在的错误。但这不是错误。
是否可以将此事件标记为“不是错误”并将其从错误列表中删除?
我已经非常清楚地记录了为什么每种情况都不是错误。
例如。一个类实现了类似的接口。它有 compareTo 方法。但是,我没有覆盖 equals 方法。
FindBugs 不喜欢这样,因为 JavaDocs 声明建议
(x.compareTo(y)==0) == (x.equals(y))
尽管在我的情况下,上述条件是并且永远都是正确的。
除了使用过滤器,您还可以使用SuppressWarnings注释。您必须使用 findbugs 包中的注释,这意味着您需要导入或使用它的完全限定名称。这是因为除了来自 JDK 的SuppressWarnings之外,它还具有保留“类”,这是必需的,因为 findbugs 对已编译的字节码而不是源代码进行操作。
例子:
@edu.umd.cs.findbugs.annotations.SuppressWarnings(
value="EQ_COMPARETO_USE_OBJECT_EQUALS",
justification="because I know better")
在一种极端情况下,您可能不应该使用注解:如果您的代码是库代码,最终放在一个 jar 中,那么其他项目可以使用它,而您仍在使用 Java5。原因是 JDK 中的一个错误,如果注释不在类路径中,则会导致 javac 崩溃。
可能是通过添加过滤器作为 findbugs 的参数
匹配子句只能匹配错误实例中实际包含的信息
<Match>
<Class name="com.foobar.MyClass" />
<Method name="myMethod" />
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" />
</Match>
另一方面 - 如果您使用这种自动代码审查工具,根据广为人知的建议突出潜在问题,也许您应该遵守它的建议?想想那些将在你之后维护代码的人。
如果代码在一段时间后发生变化怎么办?