メインコンテンツ

MISRA C++:2008 Rule 0-1-9

There shall be no dead code

説明

ルール定義

There shall be no dead code 1

根拠

到達可能ではあるものの、削除してもプログラムの動作に影響しない演算は、デッド コードとなります。たとえば、書き込み操作後に変数が読み取られないとします。この書き込み操作は冗長です。

デッド コードの存在はプログラム ロジックのエラーを示している可能性があります。コンパイラはデッド コードを削除できるため、デッド コードの存在によりコード レビュー担当者が混乱する可能性があります。

Polyspace 実装

Polyspace® は、コードに影響しないステートメントについて、このルールの違反を報告します。たとえば、変数に値を書き込んだものの、その後使用されることがない場合などです。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

#define ULIM 10000

int func(int arg) {
    int res;
    res = arg*arg + arg;
    if (res > ULIM)
        res = 0; //Noncompliant
    return arg;
}

この例では、関数 func はその引数 arg を返すため、res を含む操作は冗長です。関数の効果を変えることなく res を含むすべての操作を削除できます。

チェッカーにより res に対する最後の書き込み操作にフラグが設定されているのは、その時点以降にこの変数がまったく読み取られないためです。デッド コードは意図しないコーディング エラーを示す可能性があります。たとえば、arg の代わりに res の値を返すことを意図していた場合です。

チェック情報

グループ: Language Independent Issues
カテゴリ: 必要

バージョン履歴

R2016b で導入

すべて展開する


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.