NPE.RET

NullPointerException は、NULL 値を逆参照しようとした場合にスローされます。この逆参照は、関数呼び出し、フィールドの読み取りまたは作成、または配列アクセスなどがあります。NPE.RET は、メソッド呼び出しで NULL の値を返すパスが存在するとき、メソッド呼び出しの結果が逆参照される場合に報告されます。

リリース 2023.2 の時点で、このチェッカーは Jakarta EE をサポートしています。

例 1

コピー
     Reader getReader(String configurationPath) throws IOException {
         File file = new File(configurationPath);
         if (file.exists()) {
             return new BufferedReader(new FileReader(file));
         }
         return null;
     }
 
 
     Reader getDefaultReader() throws IOException {
         return getReader("conf");
     }
 
     public void init() throws IOException {
         load(getDefaultReader());
     }
 
     private String load(Reader reader) throws IOException {
         StringBuffer sb = new StringBuffer();
 
         char[] buffer = new char[1024];
         int length;
         while ((length = reader.read(buffer)) > 0) {
             sb.append(buffer, 0, length);
         }
         return sb.toString();
     }

NPE.RET が 29 行目に対して報告されます。'getDefaultReader()' 呼び出しの戻り値が NULL となる可能性があり、この値が 'load(Reader reader)' メソッドにパラメーターとして渡され、逆参照されるためです。

関連チェッカー

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。

拡張機能

このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。