ウォークスルー: NPE.RET 未検知の処理

次の例では、NPE.RET が検出されています。フィールドは 'get()' から null が返され、'o.toString()' で逆参照されています。Klocwork では、'assertNotNull' の呼び出しが有効なメソッドとして認識されないために、NPE.RET が検出されます。

トレースバックでは、指摘に関する詳細情報が得られ、対象のメソッドを特定するために役立ちます。

未検知に対応するために、Java knowledge base (ナレッジベース) の@Bind および @Check という 2 つの注釈を追加します。

  1. エディターで assertNotNull を選択します。
  2. アイコンをクリックするか、<Alt+Enter> キーを押して、JKB ファイルにメソッドを追加します。

    JKB ファイルが作成され、default_tuning.jkbという名前が付けられます。ファイルの最後に、前の手順で選択したメソッドが追加されます。

  3. 以下を追加する必要があります。

    • チューニングするチェッカーを特定するための@Bind 注釈
    • メソッドをチェックとして記述するための @Check 注釈

    package junit.framework;
    @Bind("NPE.RET")
    public class Assert
    public static void assertNotNull(@Check java.lang.Object object);
    }
  4. 解析を再実行します。 をクリックします。NPE.RET が検出されないようになります。