到達不能コード
コードが実行中に到達できません。
説明
到達不能コードでは、ステートメント カバレッジを使用して、コードのセクションが実行中に到達できるかどうかが判別されます。ステートメント カバレッジは、プログラム ステートメントが実行されるかどうかをチェックします。ステートメントにテスト条件があり、そのうち 1 つ以上が発生する場合、そのステートメントは実行され、到達可能です。発生しないテスト条件は、対応するコード分岐がある場合を除いて、デッド コードと見なされません。すべてのテスト条件が発生しない場合、そのステートメントは実行されません。また、各テスト条件は到達不能コードのインスタンスです。たとえば、このコードの switch
ステートメントにおいて、case 3
が発生することはありません。
void test1 (int a) { int tmp = 0; if ((a!=3)) { switch (a){ case 1: tmp++; break; default: tmp = 1; break; /* case 3 falls through to case 2, no dead code */ case 3: case 2: tmp = 100; break; } } } void test2 (int a) { int tmp = 0; if ((a!=3)) { switch (a){ case 1: tmp++; break; default: tmp = 1; break; // Dead code on case 3 case 3: break; case 2: tmp = 100; break; } } } |
test1()
では、case 3
に続いて case 2
が実行されるので、チェックではデッド コードが示されません。test2()
では、次の行の break
ステートメントが実行されないため、チェックでは case 3
のデッド コードが示されます。
到達不能コードの他の例には以下があります。
テスト条件が常に false に評価する場合、対応するコード分岐には到達できません。[ソース] ペインで、分岐の左中かっこはグレーになります。
テスト条件が常に true に評価する場合、条件は冗長です。[ソース] ペインで、
if
などの条件キーワードはグレーで表示されます。コードの前に
break
またはreturn
ステートメントがある。
[ソース] ペインでコード ブロックの左中かっこがグレーで表示される場合、ブロック全体を強調表示するには、中かっこをダブルクリックします。
チェックは関数内のコードで動作します。[呼び出されていない関数] および[到達不能な関数] のチェックにより、関数自体が呼び出されていないか、もしくは到達不能コードから呼び出されているかが判定されます。
このチェックの診断
例
チェック情報
グループ: データ フロー |
言語: C | C++ |
頭字語: UNR |