メインコンテンツ

Polyspace デスクトップ ユーザー インターフェイスの [呼び出し階層]

このトピックでは、Polyspace® デスクトップ ユーザー インターフェイスに注目します。Polyspace Access™ Web インターフェイスでの同等のペインについては、Polyspace Access Web インターフェイスの [呼び出し階層] (Polyspace Access)を参照してください。

[呼び出し階層] ペインには、ソース コードの関数の呼び出しツリーが表示されます。

関数 foo の場合は、[呼び出し階層] ペインには、foo を呼び出す関数およびタスク (呼び出し元) と foo によって呼び出される関数およびタスク (呼び出し先) が一覧表示されます。呼び出し元は、function caller icon (関数) または tasks caller icon (タスク) によって示されます。呼び出し先は、function callee icon (関数) または tasks callee icon (タスク) によって示されます。[呼び出し階層] ペインには、直接関数呼び出しと関数ポインターによる間接呼び出しが一覧表示されます。間接呼び出しは アイコンを付けて表示されます。到達不能な呼び出しは関数名がグレーで表示されます。

このペインを開くには、Polyspace デスクトップ ユーザー インターフェイスの [結果の詳細] ペインで、function call tree button ボタンを選択します。

ペインを更新する方法は以下です。

  • [結果のリスト] または [ソース] ペインのランタイム チェックをクリックします。チェックを含む関数とその呼び出し元および呼び出し先が表示されます。

  • ソース コード内の関数名をクリックします。関数の呼び出し元と呼び出し先が表示されます。関数名にも実行時チェックの色が表示される場合、関数名をクリックするのではなく、関数名を右クリックして [定義に移動] を選択します。

この例では、[呼び出し階層] ペインには関数 generic_validation とその呼び出し元および呼び出し先が表示されます。

Call Hierarchy pane with generic_validation callers and callees

[呼び出し階層] ペインの行番号はソース コードの異なる行を参照します。

  • 関数名については、行番号は関数定義の最初を参照。generic_validation の定義は 69 行目から始まる。

  • 呼び出し先名については、行番号は呼び出し先が呼び出される行を参照。呼び出し先 functional_ranges は 86 行目で generic_validation によって呼び出される。

  • 呼び出し元名については、行番号は呼び出し元が関数を呼び出す行を参照。呼び出し元 main は 50 行目で generic_validation を呼び出す。

ヒント

ソース コードの呼び出し場所に移動するには、呼び出し元または呼び出し先の名前を選択します。

[呼び出し階層] ペインでは、次のアクションを実行できます。

呼び出し元および呼び出し先の表示と非表示

ビューをカスタマイズして呼び出し元のみまたは呼び出し先のみを表示します。このボタンをクリックして呼び出し元および呼び出し先を表示または非表示にします。

show/hide callers and callees button

呼び出し階層での移動

ソース コードの呼び出し階層内で移動できます。関数の場合、呼び出し元名または呼び出し先名をダブル クリックし、ソース コードの呼び出し元または呼び出し側の定義に移動します。

関数がスタブ化されているかどうかの判断

関数がスタブ化されているかどうかは、[スタブ] 列で判断できます。列のエントリに、関数がスタブ化された理由が表示されます。

  • 自動: Polyspace で関数定義が見つかりません。たとえば、定義を含むファイルが提供されませんでした。

  • ユーザー指定: オプション [スタブを生成する関数] (-functions-to-stub) を使用して関数定義をオーバーライドしています。

  • ルックアップ テーブル: 特定の種類のルックアップ テーブルから値を返す関数で、生成されたコードを検証します。オプション [Embedded Coder ルックアップ テーブル用スタブの生成] (-stub-embedded-coder-lookup-table-functions) を使用しています。

  • 標準ライブラリ: 関数が標準ライブラリ関数です。Polyspace プロジェクトに関数定義を明示的に提供していません。

  • 標準ライブラリにマッピング: オプション -code-behavior-specifications を使用して関数を標準ライブラリ関数にマッピングしています。

  • コンパイル エラー:関数本体にコンパイル エラーがあるため、関数を解析できません。

詳細については、スタブ関数に関する Code Prover の仮定を参照してください。

プログラムの呼び出し階層全体の表示

プログラムの呼び出し階層全体を表示するには、[ソース] ペインで、main 関数をクリックします。呼び出し階層でノードを右クリックして、[すべてのノードを展開] を選択します。

Call Hierarchy with Expand All Nodes enabled

呼び出し階層全体を一度に表示するのではなく、必要に応じてノードを展開し、呼び出し階層の特定のスライスに注目することができます。