JD.RC.EXPR.DEAD
当检查局部变量(即使该检查总是导致出现“false”值),以便代码块永远不在该条件下执行时,触发 JD.RC.EXPR.DEAD。
漏洞与风险
逻辑缺陷。仅应对编译时非已知的属性执行检查。
缓解与预防
确保找到正确的值,检查其中相应的变量。
示例 1
复制
void configure(final String path) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(path));
if (in == null) {
log("Was not able to access the file");
return;
}
String line;
while ((line = in.readLine()) != null) {
parseConfiguration(line);
}
}
针对第 15 行的检查报告 JD.RC.EXPR.DEAD:由于在第 14 行进行了分配,in 不为 null。
示例 2
复制
void configure(final String path) throws IOException {
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (in == null) {
log("Was not able to access the file");
return;
}
String line;
while ((line = in.readLine()) != null) {
parseConfiguration(line);
}
}
没有显示代码段的 JD.RC.EXPR.DEAD:如果 FileReader 构造函数在 18 行引发 FileNotFoundException,则第 23 行的 in 可以为 null。