Share via


方法: 依存関係グラフを使ってコードを調べる

Visual Studio Ultimate では、依存関係グラフを使用して、既存のコード内の編成や関係の詳細を確認できます。 依存関係グラフは、構造をノード、関係をリンクとして表します。これらはノード間の矢印として表示されます。 グラフを生成するには、「方法: .NET コードに対する依存関係グラフを生成する」を参照してください。

次の例は、グラフが構造および関係をノードおよびリンクとしてどのように表すかを示しています。

ノードとリンクのある依存グラフ

グラフ上のノードとリンク

次の例は、グラフが構造およびコンテインメント関係をグループとしてどのように表すかを示しています。

グループ化されたノードのある依存グラフ

グラフ上のグループ化されたノード

ヒント

グラフには、正常にビルドされるコードの依存関係のみが表示されます。 コンポーネントのビルド エラーが発生した場合、それらのコンポーネントとその内容は表示されません。 したがって、グラフに基づいてアーキテクチャを決定する前に、コンポーネントが実際にビルドされ、依存関係があることを確認してください。

このトピックの内容

  • グラフ上の依存関係を調べる

  • 複雑な領域を検索する

グラフ上の依存関係を調べる

グラフ上の依存関係は、次の種類のリンクで表されます。

  • 個々のリンクは、2 つのノード間の 1 つの依存関係を表します。

  • 集約リンクは、2 つのグループ間で同じ方向をたどるすべての依存関係を表します。

グループ間リンクは、異なるグループ間の 2 つのノードの間のリンクです。

注意

既定では、グラフには選択されたノードのグループ間リンクのみが表示されます。 これらのリンクを常に表示するには、グラフ ツール バーで、[グラフでのグループ間リンクの描画方法を変更します] ボタンの横にあるドロップダウン リストをクリックし、[すべてのグループ間リンクを表示] をクリックします。 グラフ ツール バーが表示されていない場合は、[ビュー] メニューの [ツール バー] をポイントし、[有向グラフ] をクリックします。

目的の依存関係を調べるには、次のタスクを使用します。

目的

手順

リンクが表す依存関係の一覧を表示する

  • リンク上にポインターを置き、依存関係を示すツールヒントを確認します。

名前でノードを検索する

複数のレベルのグループ化されたノードを検索する場合に使用します。

  • Ctrl キーを押しながら F キーを押します。

リンク元またはリンク先を検索する

リンクの数が多すぎて、特定リンクのリンク元またはリンク先を簡単に確認できない場合は、この方法を使用します。

  1. グラフ ツール バーで、グラフのレイアウトをツリー レイアウトまたはクイック クラスター レイアウトに変更します。

    メモメモ
    グラフ ツール バーが表示されていない場合は、[ビュー] メニューの [ツール バー] をポイントし、[有向グラフ] をクリックします。

    詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。

  2. リンクの上にポインターを置きます。

    Visual Studio で、リンクの上に 2 つの矢印ボタンが表示されます。 Visual Studio では、リンクのリンク元とリンク先を識別するツールヒントも表示されます。

  3. 目的の方向を指す矢印ボタンをクリックします。

    選択した方向に基づき、リンク元またはリンク先が選択された状態で表示されます。

異なるグループのノード間の依存関係を調べる

  1. グループのすべての子が表示されるように、目的のグループを展開します。

  2. 目的のすべてのノード (子を含む) を選択します。

    グループ内のノードをすべて選択するには、マウスの左ボタンを押したままの状態で、そのグループを囲む四角形を描画します。 グラフのノードをすべて選択するには、Ctrl キーを押しながら A キーを押します。

    グラフに、選択したノード間のグループ間リンクが表示されます。

    メモメモ
    グループ間リンクを常に表示するには、グラフ ツール バーで、[グラフでのグループ間リンクの描画方法を変更します] ボタンの横にあるドロップダウン リストをクリックし、[すべてのグループ間リンクを表示] をクリックします。グラフ ツール バーが表示されていない場合は、[ビュー] メニューの [ツール バー] をポイントし、[有向グラフ] をクリックします。

集約リンクの背後の依存関係を調べる

メモメモ
これは、リンクの各端がアセンブリに接続されている場合に限り機能します。アセンブリ情報がない場合は、グラフを作成できません。
  1. グラフ ツール バーで、グラフのレイアウトをツリー レイアウトまたはクイック クラスター レイアウトに変更します。

    メモメモ
    グラフ ツール バーが表示されていない場合は、[ビュー] メニューの [ツール バー] をポイントし、[有向グラフ] をクリックします。詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。
  2. 目的の集約リンクをダブルクリックします。

    または

    1. リンクの上にポインターを置きます。

      Visual Studio で、リンクの上に 2 つの矢印ボタンが表示されます。

    2. 2 つの矢印ボタンの間の正符号 (+) をクリックします。

  3. [依存関係グラフの生成] ダイアログ ボックスで、グラフに含めるノードのレベルをクリックします。

    たとえば、アセンブリ レベルからメソッド レベルまでの依存関係を調べるには、[アセンブリ][名前空間][型]、および [メソッド] をクリックします。 アセンブリとクラスの間の依存関係のみを表示するには、[アセンブリ][クラス] のみをクリックします。

    グラフにメソッドの内容を表示するには、アーキテクチャ エクスプローラーを使用してその要素を検索し、グラフに追加します。 詳細については、「方法: アーキテクチャ エクスプローラーを使用してコードを検索する」を参照してください。

  4. [コンテインメントをグループとして表示] がオンになっていることを確認し、[OK] をクリックします。

    Visual Studio により、選択したノードのレベルとその依存関係を使用して、グラフが生成および表示されます。

  5. グラフで、目的のグループを選択し、選択したグループを右クリックし、[グループ] をポイントして [展開] をクリックします。

    または

    グラフを右クリックし、[グループ] をポイントし、[すべて展開] をクリックします。

    グループが展開され、グループの子が表示されます。

  6. 目的のすべてのノード (子を含む) を選択します。

    グループ内のノードをすべて選択するには、マウスの左ボタンを押したままの状態で、そのグループを囲む四角形を描画します。 グラフのノードをすべて選択するには、Ctrl キーを押しながら A キーを押します。

    グラフに、選択したノード間のグループ間リンクが表示されます。

複雑な領域を検索する

改善の可能性があるコードの領域を識別するには、依存関係グラフを使用します。 適切な依存関係グラフには、最小限の依存関係が表示されます。 たとえば、次のように操作できます。

  • ループまたは循環依存関係があるコードを検索します。

    これらの領域を調べて、簡素化できるかどうかを確認します。 これらの循環を断つことができるかどうかを検討します。

  • 依存関係が多すぎるコードを検索します。

    これらの領域を調べて、実行する関数が多すぎるかどうか、またはこれらの領域を変更した場合の影響を確認します。 コードの保守、変更、テスト、および再利用を簡単にするために、これらの領域がより明確に定義されるようにリファクタリングするか、同様の関数を実行するコードをマージするかを検討します。

  • 依存関係がないコードを検索します。

    これらの領域を調べて、これらが必要かどうか、またはこのコードを削除する必要があるかどうかを確認します。

これらのタスクを実行するために、これらのグラフで特定のアナライザーを実行できます。 これらのアナライザーは、適用後も引き続き実行されます。 グラフを変更すると、適用されたアナライザーが、更新されたグラフを自動的に再処理します。 アナライザーの実行を停止するには、[凡例] ボックスのアナライザーを右クリックし、[削除] をクリックします。

注意

非常に大きなグラフがある場合は、アナライザーを実行するとメモリ不足例外が発生することがあります。 この場合、グラフを編集してスコープを小さくするか、より小さいグラフを生成して、アナライザーを実行します。

コード内の複雑な領域を検索するには

  1. グラフのレイアウトがツリー レイアウトまたはクイック クラスター レイアウトに設定されていることを確認します。

    詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。

  2. グラフを右クリックし、[アナライザー] をポイントし、次のいずれかをクリックします。

    アナライザー

    識別するノード

    循環参照

    相互に循環依存関係があるノード

    メモメモ
    [ジェネリック] グループ内の循環依存関係は、グループを展開してもグラフには表示されません。

    ハブの検索

    複雑にリンクされたノードの上位 25% に含まれるノード

    これらのノードを選択し、グラフの他のノードをすべて非表示にするには

    1. グラフを右クリックし、[詳細な選択内容の表示] をクリックします。

    2. [選択範囲] ボックスで、[プロパティ][ハブ] の順に展開します。

    3. [ハブ][True] をクリックします。

      複雑にリンクされたノードの上位 25% が選択されます。

    4. グラフを右クリックし、[選択範囲] をポイントし、[選択範囲以外を非表示] をクリックします。

      選択範囲以外のノードが非表示になり、アナライザーで新しいノードがハブとして識別されます。

    グラフのレイアウトを依存関係のマトリックス ビューに切り替えることで、依存関係の度合いが高い部分を識別することもできます。 依存関係のマトリックス ビューの詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。

    参照されていないノード

    他のノードからの参照がないノード

    Caution メモ注意
    コードが使用されていないと見なす前に、これらの各ケースを確認します。XAML 依存関係、ランタイム依存関係などの特定の依存関係を、コード内で静的に検索することはできません。

参照

概念

方法: .NET コードに対する依存関係グラフを生成する

その他の技術情報

方法: グラフ ドキュメントを参照および操作する

方法: グラフ ドキュメントを編集およびカスタマイズする