声纳,S128:切换情况应以无条件"break"语句 VS 继续



规则 squid:128 似乎存在以防止在开关大小写中失败,除非明确说明。这似乎是一个合理的规则,因为忘记休息是一个常见的错误。

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

此规则的文档指出,实现故障的唯一方法是使用继续

   case 4:                                // Use of continue statement
   continue;

我还检查了SwitchCaseWithoutBreakCheck的源代码,实现是否真的检查了"继续"语句

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

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

我是否遗漏了某些内容,或者此规则完全被破坏并防止使用跌倒?

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

称规则为"打破"是一种观点,所以我不会争论这个;)

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

最新更新