PMD で DD 異常を解決できない特殊なケースに遭遇しました。コードは次のとおりです。
BigDecimal amount = BigDecimal.ZERO;
for(int i=0;i<5;i++)
{
amount = amount.add(i);
}
return amount;
PMD を介してこのコードを実行すると、金額の申告で DD 異常が表示されます。ただし、初期化を削除すると例外が発生します。この状況はどのように PMD を通過できますか。誰?
PMD で DD 異常を解決できない特殊なケースに遭遇しました。コードは次のとおりです。
BigDecimal amount = BigDecimal.ZERO;
for(int i=0;i<5;i++)
{
amount = amount.add(i);
}
return amount;
PMD を介してこのコードを実行すると、金額の申告で DD 異常が表示されます。ただし、初期化を削除すると例外が発生します。この状況はどのように PMD を通過できますか。誰?
「物議を醸すルール」ページの DataflowAnomalyAnalysis セクションから:
DD - 異常: 最近定義された変数が再定義されています。これは不吉ですが、バグである必要はありません。
この場合、それは間違いなくバグではありません。この特定のケースの警告を抑制するか無視することをお勧めします。(次の値を計算するときに元の値が使用されるという事実は、正直に言うと、ルールがより適切に記述された可能性があることを示唆しています。)
規則の理由を理解し、どの規則に従うか、どこに従うかを選択することが非常に重要です。たとえば、「終了点は 1 つだけ」という規則には強く反対します。終了点が複数あると、メソッドが非常に読みやすくなることがよくあります。選択してください。ルールが通常は問題ないが、この特定のケースでコードが問題ないことを確認した場合は、その 1 か所だけで警告を抑制します。