Для следующего надуманного примера (реальный код на самом деле имеет смысл, я обещаю), Sonarqube 5.3 с плагином Java 2.10 даст мне страшное «Измените это условие, чтобы оно не всегда оценивать «истина»»:squid: S2583 - Sonarqube ложно положителен при использовании переключателя
public String sonarLint(DayOfWeek dow) {
boolean one = false;
boolean two = false;
switch (dow) {
case MONDAY:
one = true;
case TUESDAY:
two = true;
break;
default:
// nothing
}
return one && two ? "yes" : "no";
}
насколько я могу видеть, когда dow
является MONDAY
, условие истинно, в то время как оно ложно в противном случае (IntelliJ соглашается, кстати, говорил мне, что two
всегда whill быть правдой когда он вообще оценивается). Я ударил ошибку в Sonarqube здесь?
Это правда, но это не имеет никакого отношения к моему вопросу. Как уже отмечалось, реальный код выглядит немного по-другому. –
Каковы все значения, которые имеет ваш DayOfWeek Enum? Если есть только два разных значения, которые он может иметь (MONDAY, TUESDAY), тогда он сообщит о той же ошибке, что ваше условие всегда будет оценено как true. – PyThon
'java.time.DayOfWeek' содержит, а не неожиданно, 7 значений enum. Даже если это не так, пути для «MONDAY» и «TUESDAY» достаточно разные. –