报告 switch 语句中的“贯穿”。

case 标签后面的一系列可执行语句不能保证在下一个 case 标签前转移控制权时,就会发生贯穿。 例如,如果分支缺少 break 语句,就可能发生这种情况。 在这种情况下,即便 switch 表达式不等于被贯穿标签之值,控制权也会贯穿到 switch 标签后面的语句。 虽然偶尔是有意为之,但这种结构令人混淆,并且通常由拼写错误所致。

该检查将忽略任何使用与正则表达式模式 (?i)falls?\s*thro?u 相匹配的文本注释的贯穿。

通过修复可以向可能贯穿到下一个分支的分支添加 break

示例:


    switch(x) {
      case (4):
          if (condition) {
              System.out.println("3");
              // 此处无 break
          } else {
              break;
          }
      case (6):
          System.out.println("4");
    }

在应用快速修复后:


    switch(x) {
        case (4):
            if (condition) {
                System.out.println("3");
            } else {
                break;
            }
            break;
        case (6):
            System.out.println("4");
    }