CS.SWITCH.DEFAULT.POSITION
デフォルトのラベルは switch ステートメントの最初または最後のラベルとして表示されていません。
デフォルトのラベルが switch ステートメントの最初または最後にありません。
脆弱性とリスク
デフォルトのラベルが switch ステートメントの最初または最後に配置されていない場合、保守性が損なわれたり、誤ったコーディングによって意図しない動作が発生する場合があります。
軽減と防止
switch ステートメントの最初または最後にデフォルトのラベルを配置します。
例
コピー
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace kmcustom
{
class C03
{
/* default located at first */
public void testOK1(int num)
{
switch (num)
{
default: //OK
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: //OK
break;
}
}
/* default located in the middle */
public void testNG1(int num)
{
switch (num)
{
case 1:
break;
default://NG
break;
case 2:
break;
}
}
/* no default */
public void testNG2(int num)
{
switch (num) //NG
{
case 1:
break;
case 2:
break;
}
}
}
}