鱿鱼:S2583 - 使用开关时Sonarqube误报

时间:2016-02-26 12:57:04

标签: java sonarqube

对于下面的设计示例(实际代码实际上是有道理的,我保证),使用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";
}

据我所知,当dowMONDAY时,条件为真,否则为假(IntelliJ同意,BTW,告诉我two总是如此当它被评估时)。我在这里遇到了Sonarqube的一个小虫吗?

1 个答案:

答案 0 :(得分:0)

Sonar也应该报告缺少break语句的错误。

切换案例应以无条件“中断”声明结束(Squid:S128)。

在两种情况下都有break语句后,语句永远不会被执行为true。