【发布时间】:2015-12-07 16:48:44
【问题描述】:
我正在使用 Sonar(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();
}
我认为这是严重问题:
以无条件的 break、continue、return 或 throw 语句结束此 switch case。
适用于 E 和 X1 的情况。我对每种情况都有一个返回语句(另外,我包括了默认值)。
这个问题的原因是什么?
【问题讨论】:
-
你的代码没问题。这种情况可能只是声纳无法理解的代码模式列表中的另一个。我最喜欢的是它无法检测 try-with-resources 的行/分支的覆盖范围:Sonar 认为捕获中有 8 个分支,你永远无法覆盖。
-
@Bohemian 请注意,这与 SonarQube 无关,但这是 JaCoCo 的问题,请参阅:github.com/jacoco/jacoco/issues/82 和 github.com/jacoco/jacoco/issues/15