EclipseをFindBugsで使用する場合、バグをバグではないものとしてマークし、バグリストから削除できますか?
質問
FindBugsは私のコードに潜在的なバグを発見しました。しかし、それはバグではありません。
この発生を「バグではない」としてマークし、バグリストから削除することはできますか?
各ケースでバグではない理由を非常に明確に文書化しました。
たとえば。クラスは同等のインターフェースを実装します。 compareToメソッドがあります。ただし、equalsメソッドはオーバーライドしていません。
FindBugsはJavaDocsが推奨していると述べているため、これを好まない
(x.compareTo(y)==0) == (x.equals(y))
私の場合、上記の条件は常に真となります。
解決
フィルターを使用する代わりに、 SuppressWarnings アノテーション。 findbugsパッケージの注釈を使用する必要があります。つまり、インポートが必要か、その完全修飾名を使用する必要があります。これは、 SuppressWarnings 以外のJDKには、保持" Class"があります。これは、findbugsがソースコードではなくコンパイルされたバイトコードで動作するために必要です。
例:
@edu.umd.cs.findbugs.annotations.SuppressWarnings(
value="EQ_COMPARETO_USE_OBJECT_EQUALS",
justification="because I know better")
注釈を使用するべきではない可能性のあるケースが1つあります。コードがjarになるライブラリコードである場合、他のプロジェクトで使用できる Java5。この理由は、JDKのバグであり、javacがクラッシュした場合です。注釈はクラスパスにありません。
他のヒント
おそらく、フィルターをfindbugsのパラメーターとして追加する
Match句は、バグインスタンスに実際に含まれる情報のみに一致できます
<Match>
<Class name="com.foobar.MyClass" />
<Method name="myMethod" />
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" />
</Match>
一方で-広く知られている推奨事項に従って潜在的な問題を強調するような自動コードレビューツールを使用している場合、その推奨事項に従う必要があるかもしれません。あなたの後にコードを維持する人のことを考えてください。
コードが時間の経過後に変更された場合はどうなりますか?