声纳,S128:开关案件应该以无条件的'#34; break"声明VS继续

时间:2015-06-18 15:51:29

标签: java sonarqube

除非明确说明,否则规则squid:128似乎存在以防止在切换情况下出现问题。这似乎是一个合理的规则,因为忘记休息是一个常见的错误。

然而,在需要时,跌倒是完全有效的。

此规则的文档指出实现延期的唯一方法是使用continue

   case 4:                                // Use of continue statement
   continue;

我还检查了SwitchCaseWithoutBreakCheck的源代码是否实现真正检查"继续"声明

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

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

我是否遗漏了某些内容,或者这条规则完全被破坏并阻止使用堕落?

1 个答案:

答案 0 :(得分:2)

你完全正确地说这里的描述是错误的,如果你想实际使用fallthrough,你实际上没有办法不触发规则(因此你可能想要将问题标记为误报)大小写或完全取消激活规则)

调用规则"破坏"是一个意见,所以我不会争论;)

尽管如此,已经创建了一张票来处理这个问题:http://jira.sonarsource.com/browse/SONARJAVA-1169