2

私のコードには次のようなものがあります:

if (a.foo() == b.foo()){ ... something ... }

ここで、をfoo()返しますBigInteger。FindBugsはこれをバグとしてフラグ付けする必要があると思います

RC: Suspicious reference comparison (RC_REF_COMPARISON)

しかし、そうではありません。コードを次のように再入力しようとしました。

BigInteger c = a.foo();
BigInteger d = b.foo();
if(c == d){ ... something ...}

しかし、それは効果がありません。同じフォールスネガティブな結果でバグを見つけるいくつかの構成設定を試しました。検証するコードがたくさんあるので、これらのバグをすべて見つける必要があります。どの設定が欠けていますか?

4

1 に答える 1

1

おそらく、FindBugs には、参照として比較してはならないことがわかっているクラスのリストがあり、BigInteger はそのリストにありません。

それらを参照として比較すべきではないことは正しいので、BigInteger をリストに含める必要があります。一般に、FindBugs は、任意のクラスに問題がないかどうかを判断できません。

于 2013-02-22T21:19:49.027 に答える