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