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