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 解析のチューニングを参照してください。