C and C++ Binaries



DIAG.UNEX.DATA : 解析されないデータフロー

要旨

CodeSonarの解析では、関数内のいくつかのコードは解析されません;解析されないもののなかで最も重要な命令文は単純な割り当てや値を伴った リターン命令です。

これと、その他の解析されないコードのワーニングクラスは一般的に全てのコードの解析を許可する SEARCH_BOUND 設定パラメータの値が十分に高くないために起こります

これらのワーニングを減らすもしくは無くすにはこの値を高くします。

実際のプログラムの多くでは、解析されないコードの全てのワーニングを出力しないように search bound を高くすると、実用的ではないほど解析時間が長くなります。

これらのクラスは、パスカバレッジよりもコードカバレッジに関係しています。いくつかの場合では、プロシージャを介した可能性のあるパスの厳密なサブセットのプロシージャ内の全てのコードを網羅することは可能です。

更なる情報は、解析されない呼び出し:注釈:解析されないコードワーニングクラスを参照してください。

プロパティ

クラス名 Unexercised Data Flow
日本語クラス名 解析されないデータフロー
クラス分類 診断 (diagnostic)
ニーモニック DIAG.UNEX.DATA
カテゴリー
MisraC2023 MisraC2023:2.1 A project shall not contain unreachable code
Misra2012 Misra2012:2.1 A project shall not contain unreachable code
Misra2004 Misra2004:14.1 There shall be no unreachable code
AUTOSARC++14 AUTOSARC++14:M0-1-1 A project shall not contain unreachable code.
  AUTOSARC++14:M0-1-2 A project shall not contain infeasible paths.
MisraC++2008 MisraC++2008:0-1-1 A project shall not contain unreachable code.
  MisraC++2008:0-1-2 A project shall not contain infeasible paths.
MisraC++2023 MisraC++2023:0.0.1 A function shall not contain unreachable statements
CWE CWE:561 Dead Code
CERT-C CERT-C:MSC07-C Detect and remove dead code
  CERT-C:MSC12-C Detect and remove code that has no effect or is never executed
JSF++ JSF++:186 There shall be no unreachable code.
DISA-3r10 DISA-3r10:V-6149 The designer will ensure the application does not contain source code that is never invoked during operation, except for software components and libraries from approved third-party products.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Unexercised Data Flow"

簡潔な説明のために、設定値を減らすために、設定ファイルで以下の設定を加えたとします。

SEARCH_BOUND=3

SEARCH_BOUND=3の場合、CodeSonarはunex_data()のプロシージャの3つのパスのみ探索します。

しかしながら、プロシージャには4つのパスがあり、3つのパスのみが探索された場合、switch caseの一つは解析されません。

各々の switch caseで最も重要な命令文の形式は単純な割り当てなので、解析されないデータフローのワーニングはそれらの文のいずれか一つで発生します。

ソースコードの中でどの一つなのかを正確に予想することはできません。それはCodeSonarのビルドと解析のいくつかの現象によります。

void unex_data(int j)
{   int i;
    switch( j )
    {
    case __LINE__: i=4; return; break; /* Unexercised Data Flow warning issued either here... */
    case __LINE__: i=4; return; break; /* ...or here... */
    case __LINE__: i=4; return; break; /* ...or here... */
    default: i=4; return; break;       /* ...or here. */
    }
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。