JAVA.SWITCH.NODEFAULT
switch ステートメントにはデフォルトのラベルがありません。
脆弱性とリスク
デフォルトのラベルが存在しない場合、機能拡張により予期しない動作が発生する可能性があります。
軽減と防止
デフォルトのラベルを作成し、デフォルトの動作、つまり予期しない値が来たときの動作を明示的に記述します。
例 1
コピー
public class C03 {
/* default located at first */
public void testOK1(int num) {
switch (num) {
default:
break;
case 1:
break;
case 2:
break;
}
}
/* default located at last */
public void testOK2(int num) {
switch (num) {
case 1:
break;
case 2:
break;
default:
break;
}
}
/* no default */
public void testNG2(int num) {
switch (num) {
case 1:
break;
case 2:
break;
}
}
}