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