1

FindBugs は、各メソッドで特定のバグの最初の発生のみを表示するようです。これは、FindBugs スタンドアロン クライアントだけでなく、Eclipse でも発生します。すべての発生
を表示するように FindBugs を設定するにはどうすればよいですか?

例:

import javax.annotation.Nonnull;

public class Bar
{
    public void meth(@Nonnull final String pArg) {
        System.out.println(pArg);
    }

    public void foo() {
        String s = null;
        meth(s);      // <<== bug marker here (NP_NONNULL_PARAM_VIOLATION)
        meth(null);   // no bug marker here
        meth(s);      // and none here either  :-(
    }
}

私は最新の FindBugs 2.0.2 Eclipse プラグイン (Eclipse 3.6 を使用) を使用しています。

問題は、バグ パターンに依存しているようです。たとえば、 ではメソッドごとに複数のヒットが見られますが、 では見DLS_DEAD_LOCAL_STOREられませんNP_NONNULL_PARAM_VIOLATION。後者は上に示されています。

ありがとう!

4

1 に答える 1

2

Findbugs は、この特定のエラーのコード行のみをチェックしているようです。実際には、制御フロー分析に従って到達できます。3 つのメソッド呼び出しでは、最初の呼び出しで NPE が発生するため、2 番目と 3 番目の呼び出しには到達しません。

以前のバージョンにも同様のバグ レポートがありました: http://sourceforge.net/p/findbugs/bugs/980/

于 2013-02-24T05:43:53.953 に答える