【问题标题】:Inevitable DD anomaly in PMDPMD中不可避免的DD异常
【发布时间】:2013-03-01 07:03:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: java performance pmd


    【解决方案1】:

    来自"controversial rules" 页面,DataflowAnomalyAnalysis 部分:

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

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

    了解制定规则的原因并选择遵守哪些规则以及在何处遵守这一点非常重要。例如,我强烈不同意“只有一个出口点”的规则 - 很多时候,拥有多个出口点会使方法更易于阅读。要有选择性,如果一个规则正常没问题,但你已经验证你的代码在这种特定情况下没问题,suppress the warning 就在那个地方。

    【讨论】:

    • 非常感谢队友....很少有人告诉我我是对的,并且天意存在一些问题(阅读 PMD,日食)....
    猜你喜欢
    • 2016-06-14
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多