NPE.RET
如果尝试取消引用 null 值,将引发 NullPointerException。取消引用可以是函数调用、字段读取或写入,或数组访问。当在某个路径上来自某个方法调用的值返回空值时,取消引用方法调用将导致报告 NPE.RET。
从 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();
}
针对第 29 行报告 NPE.RET,因为 getDefaultReader() 调用返回的值可能为 null,而它又作为参数被传递到 load(Reader reader) 方法中,在此将取消引用它。
外部指导
扩展
此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。