Java チューニングチュートリアル 4 - 追加指摘を検出するための NPE.RET のチューニング (高度)

注意: 追加指摘を検出する (「未検知」の処理) ための既存チェッカーのチューニングは高度なチューニング機能とみなされます。

アサートが正しくない場合、junit ライブラリのアサートメソッドから実行時例外がスローされます。Java コードの実行時例外は望ましくないため、フィールドはこのケースを使用して、Java knowledge base (ナレッジベース) に @Sink 注釈を使用する方法について示します。

フィールドは、次の抜粋を使用します。

import static junit.framework.Assert.assertNotNull;


public class SinkSample {

   public static void main(final String[] args) {      
      final SinkSample s = new SinkSample();     
      final Object o = s.get();     
      assertNotNull(o);  
   }
   
   private Object get() {      
      if (hashCode() < 0) {       
         return new Object();     
      }     
      return null;   
   }
}

メソッド get() は null を返すことができ、null の場合は assertNotNull(o) 呼び出しで実行時例外がスローされます。このような状況は、NPE.RET チェッカーで検出して防止することが望まれます。