Sonar,S128:Switch case 应该以无条件 "break" 语句结束 VS continue

Sonar, S128: Switch cases should end with an unconditional "break" statement VS continue

规则 squid:128 的存在似乎是为了防止 switch case 失败,除非明确说明。这似乎是一个合理的规则,因为忘记休息是一个常见的错误。

然而,当需要时,失败是完全有效的。

此规则的文档指出实现失败的唯一方法是使用继续

   case 4:                                // Use of continue statement
   continue;

我还检查了 SwitchCaseWithoutBreakCheck 的源代码是否真正检查了 "continue" 语句

的实现
  @Override
  public void visitContinueStatement(ContinueStatementTree tree) {
    super.visitContinueStatement(tree);
    markSwitchCasesAsCompliant();
  }

但是,Java 语言不支持在 switch/case 中继续。在线文档和 ./java-checks/src/test/files/checks/SwitchCaseWithoutBreakCheck.java 都不是有效的 Java 程序。

我是不是遗漏了什么,或者这条规则是否完全被打破并阻止了 fall-through 的使用?

你说这里的描述是错误的是完全正确的,然后你实际上没有办法不触发规则如果你想实际使用 fallthrough (因此你可能想要将问题标记为误报在这种情况下或一起停用规则)

调用规则 "broken" 是一种观点,所以我不会争论 ;)

不过,已经创建了一个工单来处理这个问题:http://jira.sonarsource.com/browse/SONARJAVA-1169