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

标签 java sonarqube

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

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

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

   case 4:                                // Use of continue statement
   continue;

我还检查了 SwitchCaseWithoutBreakCheck 的源代码是否真正检查了“continue”语句的实现

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

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

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

最佳答案

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

将规则称为“已损坏”是一种观点,因此我不会对此争论;)

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

关于java - Sonar ,S128 : Switch cases should end with an unconditional "break" statement VS continue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920156/

相关文章:

java - 将词频添加到哈希表

java - 从对象获取信息(JAVA)

java - Hadoop Mapreduce 让 addInputPath 使用特定文件名

java - 使用 Apache poi 在 Stacked bar 上方显示 SUM 值

sonarqube - JaCoCo SonarQube 不兼容版本 1007

java - SonarQube Java Analyser,规则 S2183,我为什么要删除这个无用的移位?

java - 在我的情况下使用 finalize() 吗?

SonarQube:每天有多少小时的技术债务?

github - 从Travis CI上的Forket存储库构建拉取请求时,无权执行任何SonarQube分析

sonarqube - 以下文件缺少责备信息SonarQube错误