5

我遇到了一个特殊情况,我无法解决 PMD 中的 DD 异常。假设代码是:

BigDecimal amount = BigDecimal.ZERO;
for(int i=0;i<5;i++)
{
      amount = amount.add(i);
}
return amount;

通过 PMD 运行此代码时,它会在声明金额时显示 DD 异常。但是,如果我删除初始化,我会得到一个异常。这种情况如何通过 PMD。任何人?

4

1 回答 1

11

“有争议的规则”页面,DataflowAnomalyAnalysis 部分:

DD - 异常:重新定义最近定义的变量。这是不祥之兆,但不一定是错误。

在这种情况下,它绝对不是错误。我建议您抑制或忽略此特定情况的警告。(在计算下一个值时使用原始值的事实表明该规则可以写得更好,老实说。)

了解规则的原因并选择遵守哪些规则以及在何处遵守是非常重要的。例如,我强烈反对“只有一个出口点”的规则——很多时候,拥有多个出口点会使一种方法更易于阅读。要有选择性,如果一条规则通常没问题,但您已验证您的代码在这种特定情况下没问题,请在该位置取消警告

于 2013-03-01T07:06:39.333 回答