Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我遇到了一个特殊情况,我无法解决 PMD 中的 DD 异常。假设代码是:
BigDecimal amount = BigDecimal.ZERO; for(int i=0;i<5;i++) { amount = amount.add(i); } return amount;
通过 PMD 运行此代码时,它会在声明金额时显示 DD 异常。但是,如果我删除初始化,我会得到一个异常。这种情况如何通过 PMD。任何人?
从“有争议的规则”页面,DataflowAnomalyAnalysis 部分:
DD - 异常:重新定义最近定义的变量。这是不祥之兆,但不一定是错误。
在这种情况下,它绝对不是错误。我建议您抑制或忽略此特定情况的警告。(在计算下一个值时使用原始值的事实表明该规则可以写得更好,老实说。)
了解规则的原因并选择遵守哪些规则以及在何处遵守是非常重要的。例如,我强烈反对“只有一个出口点”的规则——很多时候,拥有多个出口点会使一种方法更易于阅读。要有选择性,如果一条规则通常没问题,但您已验证您的代码在这种特定情况下没问题,请在该位置取消警告。