呼び出し階層の表示

コードの呼び出し階層を表示すると、選択したメソッド、プロパティ、またはコンストラクターとの間のすべての呼び出しに移動できます。 これにより、コード フローをより深く理解し、コードへの変更の効果を評価することができます。 複数レベルのコードを調査し、メソッド呼び出しとコードの追加エントリ ポイントの複雑なチェーンを表示できます。 そうすることで、考えられるすべて実行パスを調べられます。

Visual Studio では、設計時に呼び出し階層を表示できます。 つまり、ブレークポイントを設定してデバッガーを開始し、実行時の呼び出し履歴を表示する必要はありません。

[呼び出し階層] ウィンドウの使用

[呼び出し階層] ウィンドウを表示するには、コード エディターでメソッド、プロパティ、またはコンストラクターの呼び出しの名前を右クリックし、[呼び出し階層の表示] を選びます。

[呼び出し階層] ウィンドウのツリー ビュー ペインに、メンバー名が表示されます。 メンバー ノードを展開すると、[呼び出し先 '<メンバー名>'] サブノードと、C++ の場合は [呼び出し元 '<メンバー名>'] サブノードが表示されます。

C++ コードの場合、メンバーとの間で明示的な呼び出しを確認できます。

Call Hierarchy for C++ code in Visual Studio

Note

C++ コードでは、コンストラクターや型変換メソッドなど、メンバー関数を暗黙的に呼び出すことができます。これらの暗黙的な呼び出しは、必ずしもリストに含まれるとは限りません。

C# および Visual Basic のコードの場合は、呼び出し先のメンバーは確認できますが、呼び出し元のメンバーは確認できません。

Call Hierarchy for C# code in Visual Studio

  • Calls To ノードを展開すると、選択したメンバーを呼び出すすべてのメンバーが表示されます。

  • C++ の場合、[呼び出しからの呼び出し] ノードを展開すると、選択したメンバーによって (明示的に) 呼び出されたすべてのメンバーが表示されます。

その後、各呼び出し元のメンバーを展開して、その呼び出し先ノードと、C++ の場合は呼び出し元ノードを確認できます。 これにより、次の図に示すように、呼び出し元のスタックに移動することができます。

Call Hierarchy window with multiple levels expanded

仮想または抽象として定義されたメンバーの場合、[Overrides method name ]\(メソッド名のオーバーライド\) ノードが表示されます。 インターフェイス メンバーの場合は、 [Implements method name](メソッド名の実装) ノードが表示されます。 これらの拡張可能なノードは、Calls To ノードおよび Calls From ノードと同じレベルで表示されます。

ツールバーの [検索範囲] ボックスには、[マイ ソリューション][現在のプロジェクト]、および [現在のドキュメント] の選択肢が含まれています。

[呼び出し階層]ツリー ビュー ペインで子メンバーを選択した場合:

  • [呼び出し階層] 詳細ウィンドウに、その子メンバーが親メンバーから呼び出されるすべてのコード行が表示されます。

  • [コード定義] ウィンドウが開いている場合は、選択したメンバーのコードが表示されます (C++ のみ)。 このウィンドウの詳細については、「コードの構造の表示」を参照してください。

Note

呼び出し階層機能はメソッド グループ参照を検索しません。これには、メソッドがイベント ハンドラーとして追加される場所、またはメソッドがデリゲートに割り当てられる場所が含まれます。 メソッドへのすべての参照を見つけるには、[すべての参照の検索] コマンドを使用できます。

ショートカット メニュー項目

次の表では、ツリー ビュー ペイン内のノードを右クリックして使用できるいくつかのショートカット メニューのオプションについて説明します。

コンテキスト メニュー項目 説明
新規ルートとして追加 新しいルート ノードとして選択したノードをツリー ビュー ペインに追加します。 これにより、特定のサブツリーに集中することができます。
ルートの削除 選択されたルート ノードをツリー ビュー ペインから削除します。 このオプションはルート ノードからのみ使用できます。

選択したルート ノードを削除するには、[ルートの削除] ツールバー ボタンを使用することもできます。
定義に移動 選択したノードで、[定義へ移動] コマンドを実行します。 これにより、メンバーの呼び出しの元の定義または変数の定義に移動します。

選択したノードをダブルクリックするか、選択したノードで F12 キーを押しても、[定義へ移動] コマンドを実行できます。
すべての参照の検索 選択したノードで、[すべての参照の検索] コマンドを実行します。 これにより、クラスまたはメンバーを参照するプロジェクト内のすべてのコード行を見つけます。

Shift キーを押しながら F12 キーを押しても、選択したノードで [すべての参照の検索] コマンドを実行できます。
コピー 選択したノードのコンテンツをコピーします (そのサブ ノードはコピーしません)。
最新の情報に更新 選択したノードを折りたたみ、再度展開して最新情報が表示されるようにします。