对于下面的设计示例(实际代码实际上是有道理的,我保证),使用Java插件2.10的Sonarqube 5.3将给我可怕的“更改此条件,以便它不总是评估为”true“”:
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同意,BTW,告诉我two
总是如此当它被评估时)。我在这里遇到了Sonarqube的一个小虫吗?
答案 0 :(得分:0)
Sonar也应该报告缺少break语句的错误。
切换案例应以无条件“中断”声明结束(Squid:S128)。
在两种情况下都有break语句后,语句永远不会被执行为true。