2013-03-01 1 views
5

Я столкнулся с особым случаем, когда я не могу решить аномалию DD в PMD. Предположим, что код:Неизбежная аномалия DD в PMD

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

На запуске этого кода через PMD, он будет показывать DD аномалию при объявлении суммы. Однако, если я удалю инициализацию, я получу исключение. Как эта ситуация может пройти через PMD. Кто угодно?

ответ

10

С "controversial rules" страницы, DataflowAnomalyAnalysis раздел:

DD - Anomaly: Недавно определена переменная переопределяется. Это зловеще, но не обязательно быть ошибкой.

В этом случае это определенно не ошибка. Я предлагаю вам подавить или игнорировать предупреждение для этого конкретного случая. (Тот факт, что исходное значение используется при расчете следующего значения, предполагает, что правило могло быть написано лучше, если быть честным.)

Очень важно, чтобы вы понимали причины правил и выбирали, какие правила вы подчиняетесь и где. Например, I сильно не согласен с правилом «только одна точка выхода» - существует много раз, когда более чем одна точка выхода делает метод значительно проще для чтения. Будьте избирательны, и если правило нормально штраф, но вы подтвердили, что ваш код в порядке, suppress the warning просто в этом месте.

+1

спасибо большое mate .... очень редко кто-то говорит мне, что я прав, и есть какая-то проблема с провидением (прочитайте PMD, eclipse) .... –

 Смежные вопросы

  • Нет связанных вопросов^_^