JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.

If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.

If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.

CodeSonar® 9.2p0 CONFIDENTIAL CodeSecure Inc
C and C++
Binaries


DIAG.UNEX.COMP : 解析されない計算

要旨

CodeSonarの解析では、関数内のいくつかのコードは解析されません;解析されないもののなかで最も重要な命令文は加算等のデータに対する計算となります。

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

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

これらのワーニングを減らすためにこの値を高くすると、解析時間が長くなります。

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

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

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

プロパティ

クラス名 Unexercised Computation
日本語クラス名 解析されない計算
クラス分類 診断 (diagnostic)
ニーモニック DIAG.UNEX.COMP
カテゴリー
MisraC2025 MisraC2025:2.1 A project shall not contain unreachable code
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 Computation"

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

SEARCH_BOUND=3

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

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

各々の switch caseで最も重要な命令文の形式は計算なので、計算されない呼び出しワーニングはそれらの文のいずれか一つで発生します。

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

int g(void);
        
void unex_comp(int j)
{
    int i = g();
    switch( j )
    {
    case __LINE__: j++; if (i) i=4; return; break;  /* 'Unexercised Computation' warning issued either here... */
    case __LINE__: j++; if (i) i=4; return; break;  /* ...or here... */
    case __LINE__: j++; if (i) i=4; return; break;  /* ...or here... */
    default: j++; if (i) i=4; return; break;        /* ...or here. */
    }
}

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

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

 

To report problems with this documentation, please visit https://support.codesecure.com/.