メインコンテンツ

状況依存性 (-context-sensitivity)

エラーの原因となった関数呼び出しを識別する呼び出しコンテキスト情報の保存

説明

このオプションは Code Prover 解析のみに影響します。

検証で呼び出しコンテキスト情報を保管しなければならない関数を指定します。関数が複数回呼び出される場合、このオプションを使用して他の呼び出しと区別することができます。

オプションの設定

以下のいずれかの方法を使用してオプションを設定します。

  • Polyspace® ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [精度] ノードを選択してから、このオプションの値を選択します。

  • Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [静的解析] タブで [実行時エラー][精度] ノードを選択してから、このオプションの値を選択します。

  • コマンド ラインとオプション ファイル: オプション -context-sensitivity を使用します。コマンド ライン情報を参照してください。

このオプションを使用する理由

2 回呼び出される関数がコードにあるとします。関数本体の各演算に対するチェックの色は、両方の呼び出しを組み合わせた結果です。2 回の呼び出しの色を区別する場合は、このオプションを使用します。

たとえば、2 つの異なる呼び出しに対して、同一の演算の関数にレッド チェックまたはオレンジ チェック、およびグリーン チェックが含まれている場合、演算時にコンテキストが結合されてオレンジ チェックが表示されます。このオプションを使用する場合、チェックがダーク オレンジに変わり、結果の詳細に呼び出しごとのチェックの色が表示されます。

設定

既定値: none

none

ソフトウェアは、関数の呼び出しコンテキスト情報を保管しません。

auto

ソフトウェアは、以下でのチェックに関する呼び出しコンテキスト情報を保管します。

  • 呼び出しツリーの葉を形成する関数。こうした関数は、他の関数から呼び出されますが、自ら関数を呼び出すことはありません。

  • 小さい関数。ソフトウェアは内部しきい値を使用して、関数が小さいかどうかを判別します。

custom

ソフトウェアは、指定された関数の呼び出しコンテキスト情報を保管します。関数の名前を入力するには、 をクリックします。

ヒント

  • このオプションを選択すると、関数本体のツールヒントが非表示になるというメリットがあります (呼び出しコンテキストは別途保持されます)。

  • このオプションを選択すると、解析結果において一部のコード操作がグレーで表示される場合があります (到達不能コード)。その操作までつながる実行パスが特定可能であっても、そのように表示されます。この場合、グレーのコードが示す操作は、特定の呼び出しコンテキストにおいてのみ到達不能となる可能性があります。

    たとえば、次の関数が引数 -1 と 1 で呼び出されるとします。

    int isPositive (int num) {
       if(num < 0)
          return 0;
       return 1;
    }
    この関数において、このような引数の選択肢が用いられる場合、次の 2 つの到達不能コード チェックが存在します。

    • if に対するチェックはグレーになります。関数が引数 -1 で呼び出されると、if 条件が常に true となるからです。

    • if 分岐内のコードに対するチェックはグレーになります。関数が引数 1 で呼び出されると、if 条件が常に false となるからです。

    それぞれの到達不能コード チェックが示すのは、特定の呼び出しコンテキストにおいてのみ到達不能となるコードです。結果の詳細に呼び出しコンテキストが表示されます。

コマンド ライン情報

パラメーター: -context-sensitivity
値: function1[,function2,...]
既定値: none
例 (Code Prover): polyspace-code-prover -sources file_name -context-sensitivity myFunc1,myFunc2
例 (Code Prover Server): polyspace-code-prover-server -sources file_name -context-sensitivity myFunc1,myFunc2

どの関数が呼び出しコンテキスト ストレージを受け取るのかをソフトウェアで判別できるようにするには、-context-sensitivity-auto オプションを使用します。