型依存関係ダイアグラムを調べる
ReSharper を使うと、ソリューション内で型同士がどのように依存しているかを視覚的に調査できます。 さまざまなプロジェクトまたはコンパイルされたアセンブリから任意の数の型を型依存関係ダイアグラムに追加し、それらの間のさまざまな種類の依存関係を調査できます。
初期ダイアグラムを作成する
新しい型依存関係ダイアグラムを作成するには、いくつかの方法があります。
ソリューションエクスプローラー、オブジェクトブラウザー、アーキテクチャエクスプローラー、クラスビュー、または アセンブリエクスプローラーウィンドウ で項目を 1 つ以上選択し、メインメニューで を選択、または選択した項目を右クリックして 型の依存関係ダイアグラムを表示する を選択、もしくは Control+Shift+Alt+A を押してから 型の依存関係ダイアグラムを表示する を選択します。
この場合、選択したアイテム内で宣言されたすべての型がダイアグラムに追加され、集約、使用箇所、継承の 依存関係が視覚化されます。
エディター内の任意の場所にキャレットを置き、メインメニューで を選択するか、 インスペクション コマンドを呼び出して( を選択または Control+Shift+Alt+A を押し)、その後 型の依存関係ダイアグラムを表示する を選択します。
この場合、ファイルのすべての型がダイアグラムに追加され、集約、使用箇所、継承の 依存関係が視覚化されます。
プロジェクト依存関係ダイアグラムで 1 つ以上の項目を選択し、選択範囲を右クリックして、コンテキストメニューで 型の依存関係ダイアグラムを表示する を選択します。
使用箇所を表示、 ベースシンボルへ移動、 派生シンボルに移動、 次に移動: API の公開 などのコマンドの結果リストポップアップで、 Alt+Num+ または ダイアグラムで表示する
をクリックします。基本 / 派生シンボルの場合、継承階層の対応する部分がダイアグラムに追加され、継承の依存 関係のみが視覚化されます。 公開 API の場合、ダイアグラムには、指定された型を返すメソッドを含む型と、型の依存 関係のみを返す型が表示されます。
検索結果 ウィンドウや 型階層に表示される結果リストで、 ダイアグラムで表示する
をクリックします。このような場合、すべての使用箇所または階層エントリがダイアグラムに追加され、使用箇所 / 継承の 依存関係が視覚化されます。
1 つ以上のプロジェクト参照を選択し、選択範囲を右クリックして、 ダイアグラムに使用箇所を表示する
を選択します。この場合、ダイアグラムには参照元プロジェクト内の参照アセンブリの型の使用状況が表示されます。
新しく作成された型依存関係ダイアグラムが 階層ウィンドウ の新しいタブに表示されます。
このダイアグラムはソリューションと同期されないことに注意してください。つまり、コード内で型の名前を変更または削除しても、ダイアグラムは変更されません。 ダイアグラムが最新かどうかは、右下に表示されている作成日時で確認できます。 現在のソリューションの状態とダイアグラムを同期するには、ツールバーで リフレッシュ
をクリックし、 型の依存関係をリフレッシュする を選択します。
ダイアグラムの表示を調整する
型依存性ダイアグラムは、次の 2 つの方法でレイアウトできます。
Organic Layouter
— このオプションは、継承関係に従って型を配置します。基本型は上部に移動されます。Business Logic Layouter
— このオプションは、表示されているすべての関係に従って型を配置します。
ダイアグラムの左側にある対応するセレクターを使用して、これらのオプションを切り替えることができます。
ダイアグラムに型を追加または削除した後、または 依存関係フィルターを変更した後にダイアグラムのレイアウトを更新するには、ツールバーの リフレッシュ
をクリックして、 ダイアグラムのレイアウトをリフレッシュ を選択します。
ダイアグラムをパンするには、ダイアグラム項目の外側のダイアグラム領域内の任意の場所をクリックし、ハンドカーソル
が表示されている間にドラッグします。 ズームするには、マウスホイールを使用します。 ダイアグラム領域の左上隅にあるコントロールを使用して、ズームやパンを行うこともできます。
ダイアグラムのレイアウトは自動的に計算されますが、必要に応じて変更できます。すべての項目は移動可能です。 項目(型、依存関係リンク、またはグループ化項目)を移動するには、まずクリックして選択し、クロスカーソル
が表示されている間にクリックしてドラッグします。
必要に応じて、次のいずれかの方法で、ダイアグラムのグループ化項目を折りたたんで展開できます。
グループ化アイテムの左上隅にある下向き矢印をクリックします。 折りたたむと、記号が上矢印に変わり、クリックしてアイテムを展開できます。
ダイアグラム内のグループ化項目を選択し、 Ctrl + Left Arrow と Ctrl + Right Arrow を押します。
ダイアグラムの項目を追加および削除する
いつでも、表示されたダイアグラムを変更して、必要な型だけが表示されるようにすることができます。
必要に応じて、 元に戻す
をクリックするか、
Ctrl+Z
を押すことで、ダイアグラムで行った変更(項目の追加/削除)を段階的に元に戻すことができます。 元に戻す コマンドを元に戻すには、 やり直し,
をクリックするか、
Ctrl+Y
を押してください。
ダイアグラムから型やフォルダーを削除するには、グループ化項目の右上隅にある十字を使用するか、項目を選択した状態で 削除 を押します。 または、保存する項目を選択して右クリックし、コンテキストメニューで 選択したアイテムのみを表示する を選択します。 複数選択する場合は、 Ctrl キーを押しながら項目をクリックします。
ダイアグラムにアイテムを追加する方法はいくつかあります。
型、フォルダー、プロジェクトをソリューションエクスプローラーからダイアグラムにドラッグアンドドロップします。
エディターで型を選択し、選択した型をダイアグラムにドラッグアンドドロップします。
参照されているすべての型を検索して追加するには、型またはグループ化項目を右クリックし、 参照されるすべての型を追加する を選択します。 グループ化項目(フォルダーまたはプロジェクト)でこのコマンドを呼び出すと、ReSharperは現在表示されているすべての型について参照型を追加します。
ソリューションおよび参照アセンブリから名前で型を検索して追加するには、検索フィールドに名前を入力し始めてください。 入力時にワイルドカード (アスタリスク
*など) とキャメルハンプを使用できます。
型を選択して Enter を押すか、型をクリックしてダイアグラムに追加します。 ドロップダウンで緑色でハイライトされている型は、すでにダイアグラムに追加されています。 このような型を選択すると、ダイアグラムのフォーカスがその型に移動します。
詳細ポップアップで、関連する型をクリックして追加するか、 すべての使用された型をダイアグラムに追加する、 ダイアグラムにすべての用途を追加する、 すべての基本型を追加する、 直ちに継承するすべての継承を追加する リンクを使用して複数の型を追加します。
特定の型とコンテナーを研究する
ノードが折りたたまれている場合、ノードの上にカーソルを置くと、内部にあるものをすぐに確認できます。 表示されるポップアップで、このノード内のダイアグラムに追加された型の数と、このノード内から参照されるすべてのモジュールを確認できます。

必要に応じて、参照されているモジュールをクリックするか、 不足しているアイテムを追加 をクリックして、このノードから他のアイテムをダイアグラムに追加できます。
任意の型をダブルクリックして、エディターで開くことができます。 型がコンパイル済みアセンブリで定義されている場合、 コンパイル済みコードへの移動の好みの方法で開かれます。
特定の型 (および型間の 依存関係) に関する詳細情報を取得できます。 型の詳細を表示するには、型の上にマウスを置き、詳細ポップアップが表示されたらすぐにマウスポインタをその上に移動します。
型の詳細ポップアップでは、指定された型が使用する型、型が使用される場所、継承された型、コンストラクターパラメーターで使用される型などが表示されます。
型に XML ドキュメントがある場合は、ポップアップに概要も表示されます。
関連する型をクリックしてダイアグラムに追加できます。 緑色でハイライトされている型は、すでにダイアグラムに追加されています。 そのような型をクリックすると、ダイアグラムのフォーカスがその型に移動します。 エディターで型自体を開くには、その名前の横にある 宣言に移動 をクリックします。

型間の依存関係を調査する
型依存ダイアグラムでは、いくつかの種類の依存関係を視覚化できます。 特定の種類の依存関係を表示または非表示にするには、 依存関係をフィルターする
セレクタの対応する項目を使用します。
集約の依存関係 — 型が他の型のコレクションまたはコンテナーである場合に、ある種の依存関係を表示します。
この種の依存関係は緑色の点線で示されています。 対応するフィールドの名前が行の横に表示されます。 この行の上にマウスを置くとフィールド宣言が表示され、エディター内の対応する場所に移動できます。
依存関係を使用する — ある型の変数、パラメーター、メソッドの戻り値が別の型で使用されている場合、一種の依存関係を表示します。
この種の依存関係は青い線で示され、その太さは相対的な使用回数を反映します。 この行の上にマウスを置くと、使用箇所のリストが表示されます。

特定の用途をクリックするとテキストエディターの該当箇所に移動し、 すべての使用箇所を表示 リンクをクリックするとすべての用途が 検索結果 ウィンドウに表示されます。
継承の依存関係 — ある型が別の型を拡張または実装するときに、一種の依存関係を表示します。 この種の依存関係は、濃い緑色の線で示されます。 この行の上にマウスを置くと継承関係が表示され、エディター内の対応する場所に移動できます。
推移的な継承の依存関係は破線を使用して示されています。 そのような線の上にマウスを移動し、ポップアップを使用して依存関係が通過する型を確認し、それらの型をクリックしてダイアグラムに追加できます。

戻り値の型依存性 — ある型に別の型を返すメソッドまたはプロパティがある場合、一種の依存関係を表示します。 この種の依存関係は紫色の線で示されます。 この行の上にマウスを置くとメンバーのリストが表示され、エディター内の対応する場所に移動できます。
コンストラクターインジェクション — ある型が別の型のコンストラクターパラメーターとして公開される場合、一種の依存関係を表示します。 この種の依存関係は茶色の線で示されます。 この行の上にマウスを置くとコンストラクターが表示され、エディター内の対応する場所に移動できます。
ダイアグラム上の他の ReSharper 機能を呼び出す
ダイアグラム上のアイテムから移動する
次に移動 メニューの項目の利用可能なすべてのナビゲーション宛先を一覧表示するには、 Control+Shift+G を押すか、項目を右クリックして 次に移動 を選択します。
項目を選択した状態で Alt+Shift+L を押すと、 ソリューションエクスプローラーで任意の項目(ファイル、フォルダー、プロジェクト)を見つけることができます。
型の 詳細ポップアップで 検索結果ウィンドウにすべての使用済み型を表示する または 検索結果ウィンドウにすべての使用箇所を表示する をクリックするか、 依存関係リンクのポップアップで すべての使用箇所を表示 をクリックすると、関連する使用箇所をリストできます。
ダイアグラムの項目をリファクタリングする
ダイアグラム上の任意の項目から、使用可能なすべてのリファクタリングを呼び出すことができます。 これを行うには、 Control+Shift+R を押すか、右クリックして リファクタリング を選択します。
型を目的のフォルダーにドラッグして、 フォルダーに移動リファクタリングを実行することもできます。 このリファクタリングは、型を含むファイルをターゲットフォルダーに移動し、名前空間参照を修正し、必要に応じて内部の可視性をパブリックに変更します。
デフォルトでは、この動作は有効になっていることに注意してください。 無効にするには、 ドラッグ & ドロップで「フォルダーに移動」を許可する
をクリックします。
ドラッグアンドドロップのリファクタリング後はダイアグラムが自動で更新されますが、 リファクタリング メニューから行う他のリファクタリングではダイアグラムは更新されません。ダイアグラムのツールバーで 型の依存関係をリフレッシュする
をクリックしてください。
ダイアグラムをファイルにエクスポートする
依存関係を調べている任意の時点で、次のツールバーボタンを使用してダイアグラムをファイルにエクスポートできます。
ダイアグラムのエクスポート
をクリックします。 開いた「名前を付け 名前を付けて保存 ダイアログで、 「ファイルの種類 :」セレクターを使用してダイアグラムをエクスポートする方法を選択できます。
PNG — ダイアグラムの現在のビューを PNG イメージにエクスポートします。
XML 用紙仕様 — 大きなダイアグラムを印刷するために使用できる XPS 形式でダイアグラムをエクスポートします。
GraphML — ダイアグラムを GraphML フォーマットでエクスポートでき、外部解析や ReSharper へのインポートに使用できます。
ダイアグラムのインポート
ReSharper からエクスポートした、または他のツールからエクスポートした GraphML フォーマットのダイアグラムがあれば、それをインポートできます。 これを行うには、メインメニューから を選択するか、プロジェクトまたは型の依存関係ダイアグラムで ダイアグラムのインポート
をクリックしてから、ダイアグラムを含む *.graphml ファイルを選択します。
この機能は、次の言語とテクノロジーで サポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。