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 チェッカーで検出して防止することが望まれます。