方法: 依存関係グラフを使ってコードを調べる
Visual Studio Ultimate では、依存関係グラフを使用して、既存のコード内の編成や関係の詳細を確認できます。 依存関係グラフは、構造をノード、関係をリンクとして表します。これらはノード間の矢印として表示されます。 グラフを生成するには、「方法: .NET コードに対する依存関係グラフを生成する」を参照してください。
次の例は、グラフが構造および関係をノードおよびリンクとしてどのように表すかを示しています。
グラフ上のノードとリンク
次の例は、グラフが構造およびコンテインメント関係をグループとしてどのように表すかを示しています。
グラフ上のグループ化されたノード
ヒント
グラフには、正常にビルドされるコードの依存関係のみが表示されます。 コンポーネントのビルド エラーが発生した場合、それらのコンポーネントとその内容は表示されません。 したがって、グラフに基づいてアーキテクチャを決定する前に、コンポーネントが実際にビルドされ、依存関係があることを確認してください。
このトピックの内容
グラフ上の依存関係を調べる
複雑な領域を検索する
グラフ上の依存関係を調べる
グラフ上の依存関係は、次の種類のリンクで表されます。
個々のリンクは、2 つのノード間の 1 つの依存関係を表します。
集約リンクは、2 つのグループ間で同じ方向をたどるすべての依存関係を表します。
グループ間リンクは、異なるグループ間の 2 つのノードの間のリンクです。
注意
既定では、グラフには選択されたノードのグループ間リンクのみが表示されます。 これらのリンクを常に表示するには、グラフ ツール バーで、[グラフでのグループ間リンクの描画方法を変更します] ボタンの横にあるドロップダウン リストをクリックし、[すべてのグループ間リンクを表示] をクリックします。 グラフ ツール バーが表示されていない場合は、[ビュー] メニューの [ツール バー] をポイントし、[有向グラフ] をクリックします。
目的の依存関係を調べるには、次のタスクを使用します。
目的 |
手順 |
---|---|
リンクが表す依存関係の一覧を表示する |
|
名前でノードを検索する 複数のレベルのグループ化されたノードを検索する場合に使用します。 |
|
リンク元またはリンク先を検索する リンクの数が多すぎて、特定リンクのリンク元またはリンク先を簡単に確認できない場合は、この方法を使用します。 |
|
異なるグループのノード間の依存関係を調べる |
|
集約リンクの背後の依存関係を調べる
メモ
これは、リンクの各端がアセンブリに接続されている場合に限り機能します。アセンブリ情報がない場合は、グラフを作成できません。
|
|
複雑な領域を検索する
改善の可能性があるコードの領域を識別するには、依存関係グラフを使用します。 適切な依存関係グラフには、最小限の依存関係が表示されます。 たとえば、次のように操作できます。
ループまたは循環依存関係があるコードを検索します。
これらの領域を調べて、簡素化できるかどうかを確認します。 これらの循環を断つことができるかどうかを検討します。
依存関係が多すぎるコードを検索します。
これらの領域を調べて、実行する関数が多すぎるかどうか、またはこれらの領域を変更した場合の影響を確認します。 コードの保守、変更、テスト、および再利用を簡単にするために、これらの領域がより明確に定義されるようにリファクタリングするか、同様の関数を実行するコードをマージするかを検討します。
依存関係がないコードを検索します。
これらの領域を調べて、これらが必要かどうか、またはこのコードを削除する必要があるかどうかを確認します。
これらのタスクを実行するために、これらのグラフで特定のアナライザーを実行できます。 これらのアナライザーは、適用後も引き続き実行されます。 グラフを変更すると、適用されたアナライザーが、更新されたグラフを自動的に再処理します。 アナライザーの実行を停止するには、[凡例] ボックスのアナライザーを右クリックし、[削除] をクリックします。
注意
非常に大きなグラフがある場合は、アナライザーを実行するとメモリ不足例外が発生することがあります。 この場合、グラフを編集してスコープを小さくするか、より小さいグラフを生成して、アナライザーを実行します。
コード内の複雑な領域を検索するには
グラフのレイアウトがツリー レイアウトまたはクイック クラスター レイアウトに設定されていることを確認します。
詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。
グラフを右クリックし、[アナライザー] をポイントし、次のいずれかをクリックします。
アナライザー
識別するノード
循環参照
相互に循環依存関係があるノード
メモ[ジェネリック] グループ内の循環依存関係は、グループを展開してもグラフには表示されません。ハブの検索
複雑にリンクされたノードの上位 25% に含まれるノード
これらのノードを選択し、グラフの他のノードをすべて非表示にするには
グラフを右クリックし、[詳細な選択内容の表示] をクリックします。
[選択範囲] ボックスで、[プロパティ]、[ハブ] の順に展開します。
[ハブ] で [True] をクリックします。
複雑にリンクされたノードの上位 25% が選択されます。
グラフを右クリックし、[選択範囲] をポイントし、[選択範囲以外を非表示] をクリックします。
選択範囲以外のノードが非表示になり、アナライザーで新しいノードがハブとして識別されます。
グラフのレイアウトを依存関係のマトリックス ビューに切り替えることで、依存関係の度合いが高い部分を識別することもできます。 依存関係のマトリックス ビューの詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。
参照されていないノード
他のノードからの参照がないノード
注意コードが使用されていないと見なす前に、これらの各ケースを確認します。XAML 依存関係、ランタイム依存関係などの特定の依存関係を、コード内で静的に検索することはできません。