嵌套Case语句的声纳问题

时间:2015-12-07 06:44:09

标签: java sonarqube

我正在使用声纳(4.5.4 )来测试代码质量。对于此示例代码:

switch (operationType) {

    case A:
        return doSomething1();

    case B:
        return doSomething2();

    case C:
        return doSomething3();

    case D:
        return doSomething4();

    case E:
        switch (X) {
            case X1:
                return doSomething5();
            case X2:
                return doSomething6();
            default:
                return doSomething7();
        }
    default:
        return doSomething8();

}

我认为这是严重问题:

  

使用无条件中断,继续,返回或抛出语句结束此开关案例。

案例 E &的 X1 即可。我对每个案例都有一个return语句(另外,我包括默认)。

这个问题的原因是什么?

1 个答案:

答案 0 :(得分:1)

这是一个已知问题(因此分析器中存在错误): https://jira.sonarsource.com/browse/SONARJAVA-1336

您的问题背后的主要问题是检查不依赖于分析交换机的控制流来引发问题,而是完全依赖于可能最终出现假阴性(如票证中)或误报(您的错误)的语法情况)。