このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
到達不能コード
先行する制御フロー ステートメントが原因で実行されないコード
説明
この欠陥は、次のいずれかのステートメントを使用した制御フロー内の break が原因で、コードのセクションに到達できなかった場合に発生します。
break
およびreturn
:break
やreturn
などのステートメントは、プログラムのフローを別のセクションまたは関数に移します。このフローのエスケープにより、フロー制御コードに続くステートメントは実行できず、したがってステートメントは到達不能になります。goto
:goto
などのステートメントは、プログラムのフローをコードの別のセクションにジャンプさせます。goto
の直後にあるステートメントに戻るジャンプがない場合、このようなステートメントは実行できません。while(1)
:while(1)
などのトリビアルな無限ループでは、プログラムの終了によってプログラムのフローが解放されます。このタイプの終了は、無限ループの後に来るコードが到達不能になる原因となります。
リスク
到達不能コードは開発時間、メモリ、および実行サイクルを浪費します。開発者は実行されないコードを保守しなければなりません。実行されない命令でも保存およびキャッシュされる必要があります。
修正方法
修正方法は到達不能コードの意図する機能によって異なります。そのコードを実行する場合、コードの配置または制御フローを変えている先行ステートメントの配置をチェックします。たとえば、到達不能コードが return
ステートメントの後にある場合、それらの順序を入れ替えるか、その return
ステートメント全体を削除しなければならない可能性があります。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
グループ: データ フロー |
言語: C | C++ |
既定値: オン |
コマンド ライン構文: UNREACHABLE |
影響度:Medium |
バージョン履歴
R2013b で導入