【问题标题】:Variable outside the loop marked as 'DU'-anomaly in PMD在 PMD 中标记为“DU”异常的循环外变量
【发布时间】:2020-01-01 05:17:45
【问题描述】:

我得到了很多这种异常。这里 BufferedData 被 PMD 标记为 DU' 异常。这种方法有什么问题?

    private static void summUpBuffer(BufferedReader in) throws IOException {
        List<String> bufferedData = new ArrayList<>();
        for (String line = in.readLine(); line != null; line = in.readLine()) {
            bufferedData.add(line);
        }
    }

【问题讨论】:

  • 您不使用bufferedData 内容。因为这是一个局部变量,所以这段代码没有意义。请发布整个代码。
  • 您正在向bufferedData 添加元素,但目的是什么?您没有访问或归还它。
  • 其实DU异常在其他地方也出现过类似的情况,这里发的比较复杂。我使用这个代码 sn-p 只是为了演示,虽然不是一个准确的。如果我返回 bufferedDate 那就没问题了,它不会被标记为 DU 异常。

标签: java pmd


【解决方案1】:

'DU Anomaly' 表示代码可能无法达到您的预期。由于您从不使用变量 bufferedData,因此它被标记为无意义的赋值。

本质上你的方法没有做任何事情。它的所有副作用都是局部的,一旦方法返回就会被遗忘。 完成该方法,警告很可能会消失。


编辑:实际上有一个副作用,即阅读BufferedReader。这可能就是为什么 bufferedData 是唯一以这种方式标记的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多