18

FindBugs が私のコードに潜在的なバグを発見しました。しかし、これはバグではありません。

この発生を「バグではない」とマークし、バグ リストから削除することはできますか?

それぞれのケースでなぜバグではないのかを明確に文書化しました。

例えば。クラスは、同等のインターフェースを実装します。それにはcompareToメソッドがあります。ただし、equals メソッドはオーバーライドしていません。

FindBugs はこれを好まない。

(x.compareTo(y)==0) == (x.equals(y))

私の場合、上記の条件は常に真です。

4

3 に答える 3

34

フィルターを使用する代わりに、SuppressWarningsアノテーションを使用することもできます。findbugs パッケージの注釈を使用する必要があります。つまり、インポートが必要か、その完全修飾名を使用する必要があります。これは、JDK のSuppressWarnings以外に保持「クラス」があるためです。これは、findbugs がソース コードではなくコンパイルされたバイトコードで動作するために必要です。

例:

@edu.umd.cs.findbugs.annotations.SuppressWarnings(
    value="EQ_COMPARETO_USE_OBJECT_EQUALS", 
    justification="because I know better")

おそらく注釈を使用すべきでないケースが 1 つあります。コードが最終的に jar になるライブラリ コードであり、それが他のプロジェクトで使用される可能性があり、まだJava5 を使用している場合です。この理由は、注釈がクラスパスにない場合に javac をクラッシュさせる JDKのバグです。

于 2008-10-30T08:18:58.913 に答える
6

おそらく、findbugs のパラメーターとしてフィルターを追加することによって

Match 句は、バグ インスタンスに実際に含まれている情報のみを照合できます。

<Match>
   <Class name="com.foobar.MyClass" />
   <Method name="myMethod" />
   <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" />
</Match>
于 2008-10-30T08:09:24.627 に答える
0

一方、広く知られている推奨事項に従って潜在的な問題を強調する自動コードレビューツールを使用している場合は、その推奨事項に従うべきでしょうか? あなたの後にコードを保守する人々のことを考えてみてください。

時間の経過後にコードが変更された場合はどうなりますか?

于 2008-10-30T09:04:37.697 に答える