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。

相关检查器