メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C:2012 Rule 2.1

A project shall not contain unreachable code

説明

ルール定義

A project shall not contain unreachable code 1 .

根拠

プログラムが未定義の動作を示さない限り、到達不能コードは実行されません。到達不能コードはプログラムの出力に影響を与えられません。到達不能コードの存在はプログラム ロジックにエラーがあることを示している可能性があります。コンパイラにより削除されない到達不能コードはリソースを無駄に使用します。次に例を示します。

  • ターゲット マシンのメモリ領域を占有する。

  • 到達不能コードの存在により、到達不能コード周辺で制御を移行するときに、コンパイラはより長く時間のかかるジャンプ命令を選択する場合がある。

  • ループ内で、ループ全体が命令キャッシュに配置されない可能性がある。

Polyspace 実装

Polyspace® は、コード内のステートメントに到達できない場合に欠陥を報告します。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

enum light { red, amber, red_amber, green };

enum light next_light ( enum light color )
{
    enum light res;

    switch ( color )
    {
    case red:
        res = red_amber;
        break;
    case red_amber:
        res = green;
        break;
    case green:
        res = amber;
        break;
    case amber:
        res = red;
        break;
    default:
    {
        error_handler ();
        break;
    }
    }

    res = color;
    return res;
    res = color;     /* Non-compliant */
}

この例では、return ステートメントの後に到達不能な演算があるため、ルールに違反しています。

チェック情報

グループ: 未使用コード
カテゴリ: 必要
AGC カテゴリ: 必要

バージョン履歴

R2014b で導入

すべて展開する


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.