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