报告 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");
    }