PMD导致的不可避免的DD异常

5

我发现一个特殊情况,我无法解决PMD中的DD异常。假设代码如下:

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

在运行此代码时,通过PMD将显示一个DD异常在amount的声明处。但是,如果我删除初始化,我将收到一个异常。这种情况如何通过PMD?有人知道吗?
1个回答

12

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

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

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

非常重要的是,您理解规则的原因并选择遵守规则的地方。例如,我强烈反对“只有一个退出点”的规则-有很多情况下,具有多个退出点可以使方法更容易阅读。要有选择性,如果一个规则通常没问题,但您已经验证了您的代码在这个特定情况下是好的,那么抑制警告就只在那一个地方。


1
非常感谢你,伙计。很少有人告诉我我是对的,而且在提供方面存在一些问题(阅读PMD、Eclipse)。 - Farrukh Chishti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接