ReSharper 2024.3 ヘルプ

プロジェクトの依存関係ダイアグラムを調べる

ReSharper を使用すると、ソリューションアーキテクチャを視覚的に表現して、ソリューション内のプロジェクトの依存関係を調べることができます。

アーキテクチャビューが新しいエディタータブで開き、プロジェクトの依存関係を視覚的に調べたり、ソリューションの現在の状態を以前に取得したスナップショットと比較したりできます。

ReSharper: project dependency diagram

プロジェクトの依存関係ダイアグラムを開く

  1. ソリューションエクスプローラーでは、1 つまたは複数のプロジェクト、1 つまたは複数のソリューションフォルダー、ソリューションノードを選択します。

  2. 選択項目を右クリックして、プロジェクトの依存関係ダイアグラムを表示するを選択するか、メインメニューで ReSharper | アーキテクチャー | プロジェクトの依存関係ダイアグラムを表示するを選択します。

  3. アーキテクチャビューが新しいドキュメントタブで開き、最初に選択したアイテムの依存関係が表示されます。

  4. 最初に選択された項目は、アーキテクチャビューの左部分でもチェックされ、すべての解決項目がリストされます。他の項目をチェックすることができます: ダイアグラムに表示され、対応するリンクが追加されます。

  5. 必要に応じて、ツールバーのグループ化セレクタを使用して項目のグループ化を変更できます。

    • なし - すべてのプロジェクトはグループ化せずに表示されます。

    • ソリューションフォルダー - プロジェクトはソリューションフォルダーごとにグループ化されています。

    • ファイル構造 - プロジェクトとソリューションフォルダーは、ファイルシステム構造によってグループ化されています。

ReSharper は、次の 2 つのステップでダイアグラムを作成します。

  1. プロジェクト参照に基づいて依存関係ダイアグラムを作成します。

    このステップは、ダイアグラムを開くと自動的に実行され、大規模なソリューションでもほとんど時間がかかりません。

  2. 結合(英語)分析を実行して、参照プロジェクトの使用数を計算します。

    この手順はリソースを大量に消費し、最大で数分かかる場合がありますが、バックグラウンドで実行されます。分析の進行状況は、アーキテクチャビューの上部にあるステータスバーに反映されます。

    結合解析の状態は、カップリング分析を有効にする ThemedIcon.MetricDisplay.Screen.(Gray).png ボタンの状態に対応しています。結合分析はリソースを大量に消費するプロセスであり、大規模なソリューションのパフォーマンスに影響を与える可能性があります。ダイアグラムの操作中にラグが発生した場合は、このボタンを使用して結合分析を無効にし、必要に応じてダイアグラムを調整してから、分析を再度有効にすることができます。分析アルゴリズムは、最初に表示されたプロジェクトの結合を計算し、次にビューから隠されたプロジェクトを処理します。

ダイアグラム内のプロジェクト間のリンクは、次の方法で表示できます。

線種

意味

黒い実線

2 つのノード間にプロジェクト参照があることを示します。

これらの行は、結合(英語)分析が進行中または無効になっている場合に使用されるため、プロジェクト間の使用回数は不明です。

特定の幅の青い実線

この参照のカップリング解析は終了しており、参照プロジェクトに少なくとも 1 つの使用箇所が存在します。線の太さは、参照先プロジェクトの型が参照元プロジェクトで使用されている回数を表します。参照の上にマウスを移動すると、この番号がツールチップに表示されます。

点線

結合分析が終了すると表示され、次のいずれかを意味します。

  • あるプロジェクトから別のプロジェクトへのプロジェクト参照があり、using ディレクティブがある場合がありますが、コンパイル時の使用箇所はありません。この参照は安全に削除できます。

    これを行うには、線を右クリックして安全な削除リファレンスを選択します

  • 2 つのプロジェクトは、現在表示されていない他の参照プロジェクトを介してリンクされています。

緑の実線

参照はスナップショットにはありませんが、ソリューションには存在します。差分の表示 ThemedIcon.GraphDiff.Screen.(Gray).png ボタンがオンの場合のみ表示されます。

赤い実線

参照はスナップショットに存在しますが、解決策にはありません。差分の表示 ThemedIcon.GraphDiff.Screen.(Gray).png ボタンがオンの場合のみ表示されます。

アイテムの表示と非表示

左側の対応するアイテムのチェックボックスを使用して、ダイアグラムの特定のソリューションアイテム(プロジェクト、フォルダー、ソリューションフォルダー)を表示または非表示にできます。

ダイアグラム領域から直接アイテムを表示 / 非表示にする方法もいくつかあります。

  • ダイアグラム内のいくつかの項目を選択して他の項目を非表示にするには、選択する項目をクリックしてから Ctrl を選択し、右クリックして選択範囲 | 選択したモジュールのみを表示するを選択します。

  • 2 つのリンクされたアイテムを選択するには、それらの間のリンクを右クリックして選択範囲 | 選択したモジュールのみを表示するを選択します。

  • 項目を非表示にするには、ダイアグラムで項目を選択して Delete を押します。

  • 特定のアイテムに焦点を当てるもう 1 つの方法は、依存プロジェクトまたは参照プロジェクトを表示し、他のすべてのアイテムを非表示にすることです。これを行うには、1 つ以上のアイテム(プロジェクトまたはグループ化アイテム)を選択し、選択範囲を右クリックしてこれを表示 / これらおよび依存 / 参照を選択します。これらのコマンドは、無関係なアイテムのみを非表示にし、現在非表示になっている参照 / 依存ノードを追加しないことに注意してください。

  • 特定のプロジェクトによって参照または依存するすべてのアイテムを表示するには、これらのアイテムが現在表示されていなくても、1 つ以上のアイテムを選択して選択範囲 | 参照 / 依存モジュールを追加するを選択します。

必要に応じて、元に戻す ThemedIcon.Undo.Screen.(Gray).png をクリックするか、Ctrl+Z を押して、ダイアグラムの変更(表示 / 非表示のプロジェクト)を段階的に取り消すことができます。元に戻すコマンドを逆にするには、やり直し ThemedIcon.Redo.Screen.(Gray).png をクリックするか、Ctrl+Y を押します。

ダイアグラムをパンおよびズームする

ダイアグラムをパンおよびズームするには、ダイアグラム領域の左上隅にあるコントロールを使用します。または、タッチパッド、スクロールバーを使用してダイアグラムをパンするか、ダイアグラムアイテムの外側のダイアグラム領域の任意の場所をクリックして、ハンドカーソル cursor_hand.png が表示されている間にドラッグすることもできます。マウスホイールを使用してズームすることもできます。

ダイアグラムのアイテムを再配置する

ダイアグラムのレイアウトは自動的に計算されますが、必要に応じて変更できます。すべてのアイテムを移動できます。アイテムを移動するには、まずアイテムをクリックして選択し、次にクロスカーソル cursor_cross.png が表示されている状態でクリックしてドラッグします。

ダイアグラムでプロジェクトをグループ化する

グループ化セレクターを使用すると、ソリューションフォルダーまたはファイルシステム構造ごとにプロジェクトをグループ化できます。グループ化は、左側の部分とダイアグラムの両方に適用されます。

必要に応じて、次のいずれかの方法で、ダイアグラムのグループ化項目を折りたたんで展開できます。

  • グループ化アイテムの左上隅にある下向き矢印をクリックします。折りたたむと、記号が上矢印に変わり、クリックしてアイテムを展開できます。

  • ダイアグラム内のグループ化項目を選択し、Ctrl + Left ArrowCtrl + Right Arrow を押します。

  • ツールバーのツリーを折りたたむ ThemedIcon.CollapseGraph.Screen.(Gray).pngツリーの展開 ThemedIcon.ExpandGraph.Screen.(Gray).png をクリックして、すべてのグループ化項目を折りたたんだり展開したりします。

プロジェクト参照を分析する

あるプロジェクトの型の別のプロジェクトでの使用方法の詳細については、プロジェクト間の対応するリンクを選択して Alt+F7 を押すか、右クリックして使用箇所を表示を選択してください。ReSharper は検索結果ウィンドウでの使用箇所を示します。

特定の参照の結合解析が終了し、ReSharper が未使用として (点線で) ハイライトされた場合、ダイアグラムから切り替えて未使用の参照を削除する必要はありません。選択して Control+Shift+R を押すか、右クリックして選択するだけです。リファクタリング。次に Alt+Delete を押すか、安全なアセンブリ参照の削除をクリックします。

考えられるアーキテクチャの問題を検出する

ソリューションアーキテクチャのベストプラクティスに従おうとしている場合、アプリケーションはおそらく、相互に通信する個別のレイヤーを持つレイヤー構造(英語)を持っています。

可能なパスを表示する ThemedIcon.PossiblePaths.Screen.(Gray).png ボタンを使用すると、グループ化だけでなく、レイヤー間の通信の観点からも、アプリケーションレイヤーが正しく設計されているかどうかを確認できます。要するに、ボタンがオンになっていると、2 つの特定のプロジェクトの間に、現在ビューに隠れている他の参照プロジェクトからなるパスがあるかどうかを確認できます。これらのパスは緑色の点線で示されています。このボタンは、現在表示されているプロジェクトのうちの 2 つをリンクする隠れた中間プロジェクトがある場合にのみ有効になります。

その動作を説明するために、次の例を考えてみましょう。

  1. 大きなソリューションを持っており、対応するソリューションフォルダーによって表される「サービス」アーキテクチャレイヤーを分析しているとします。興味を持っている 2 つのプロジェクト、隠されているプロジェクト

    Detecting possible architecture problems
  2. 2 つのプロジェクトにはプロジェクト間の直接の参照はありませんが、可能なパスを表示する ThemedIcon.PossiblePaths.Screen.(Gray).png ボタンを有効にすると、これらのプロジェクト間に他のプロジェクトがあることがわかります。

    Detecting possible architecture problems
  3. これらの 2 つのプロジェクトがどのように相互に依存するかを確認するには、パスリンクを右折してパスの表示を選択します。仲介プロジェクトがダイアグラムに表示され、すべてが別のレイヤーにあることがわかります。

    Detecting possible architecture problems

この情報に基づいて、アプリケーション構造を再作成する必要があるかもしれないことがわかります。

ダイアグラムをファイルにエクスポートする

依存関係を調べている任意の時点で、次のツールバーボタンを使用してダイアグラムをファイルにエクスポートできます。

ダイアグラムのエクスポート ThemedIcon.Export.Screen.(Gray).png をクリックします。開いた「名前を付けて保存」ダイアログで、「ファイルの種類 :」セレクターを使用してダイアグラムをエクスポートする方法を選択できます。

  • PNG — ダイアグラムの現在のビューを PNG イメージにエクスポートします。

  • XML 用紙仕様 — 大きなダイアグラムを印刷するために使用できる XPS 形式でダイアグラムをエクスポートします。

  • GraphML — ダイアグラムを GraphML 形式でエクスポートします。これは、外部分析や ReSharper へのインポートに使用できます。

ダイアグラムのインポート

ReSharper からエクスポートした、または別のツールからエクスポートした GraphML 形式のダイアグラムがある場合は、それをインポートできます。これを行うには、メインメニューから ReSharper | アーキテクチャー | ダイアグラムのインポートを選択するか、プロジェクトまたは型の依存関係ダイアグラムでダイアグラムのインポート ThemedIcon.Import.Screen.(Gray).png をクリックしてから、ダイアグラムを含む *.graphml ファイルを選択します。

保存されたスナップショットを現在のソリューションの状態と比較する

いつでも、ソリューションの現在の状態のスナップショットをファイルに保存し、将来の参照に使用できます。これを行うには、ツールバーの「アーキテクチャグラフの保存 ThemedIcon.SaveGraph.Screen.(Gray).png 」をクリックし、スナップショットファイルの保存場所を選択します。

メインメニューで ReSharper | アーキテクチャー | 保存済みと比較…を選択し、ダイアグラムスナップショットファイル .argr を選択することにより、保存されたスナップショットを後でロードして調査できます。

スナップショットが新しいエディタータブで開き、ソリューションの現在の状態とスナップショットに保存された状態の違いを確認できます。

依存関係ダイアグラムがファイルから開かれた場合、差分の表示 ThemedIcon.GraphDiff.Screen.(Gray).png ボタンが使用可能になり、デフォルトでオンになります。このボタンを使用して、スナップショットと現在のソリューションの状態の違いを表示または非表示にできます。

アーキテクチャビューのツールバーコントロール

コントロール

名前

説明

グループ化

このリストを使用して、To Do アイテムをグループ化するための条件を選択します。いくつかのオプションが提供されます。

  • なし - すべてのプロジェクトはグループ化せずに表示されます。

  • ソリューションフォルダー - プロジェクトはソリューションフォルダーごとにグループ化されています。

  • ファイル構造 - プロジェクトとソリューションフォルダーは、ファイルシステム構造によってグループ化されています。

ThemedIcon.Undo.Screen.(Gray).png

元に戻す

ダイアグラムの変更(表示 / 非表示のプロジェクト)を段階的に元に戻します。

ThemedIcon.Redo.Screen.(Gray).png

やり直し

最後の元に戻す操作を元に戻します。

ThemedIcon.MetricDisplay.Screen.(Gray).png

カップリング解析のオン / オフを切り替える

このトグルボタンを使用すると、バックグラウンドで実行されるカップリング(英語)分析を有効または無効にできます。デフォルトでは、このボタンはオンになっており、新しいダイアグラムを開くとすぐに分析が開始されます。結合分析はリソースを大量に消費するプロセスであり、大規模なソリューションのパフォーマンスに影響を与える可能性があります。ダイアグラムの操作中に遅延が発生した場合は、このボタンを使用して結合分析を無効にし、必要に応じてダイアグラムを調整してから、分析を再度有効にすることができます。分析アルゴリズムは、最初に表示されたプロジェクトの結合を計算し、次にビューから隠されたプロジェクトを処理します。

ThemedIcon.TransitiveEdges.Screen.(Gray).png

推移的な参照を隠す / 表示する

このトグルボタンを使用すると、プロジェクト間の推移的な参照を表示できます。これらはデフォルトで非表示になっており、アーキテクチャー構造を失うことなくダイアグラムを簡素化します。たとえば、プロジェクト参照 A > B > C および A > C がある場合、このボタンを使用すると A > C 参照が非表示になります。

ThemedIcon.SaveGraph.Screen.(Gray).png

アーキテクチャグラフを保存する

依存関係のスナップショットをファイルに保存します。詳細については、プロジェクトの依存関係ダイアグラムを調べるを参照してください。

ThemedIcon.GraphDiff.Screen.(Gray).png

差分の表示

このボタンは、ビューに表示されるスナップショットが現在のソリューションと異なる場合にのみ有効です。ボタンをクリックして、スナップショット内のソリューションの状態を現在の状態と比較します。

ThemedIcon.CollapseGraph.Screen.(Gray).png

ツリーを折りたたむ

ダイアグラム内のすべての要素を折りたたみます。

ThemedIcon.ExpandGraph.Screen.(Gray).png

ツリーの展開

ダイアグラム内のすべての要素を展開します。

ThemedIcon.PossiblePaths.Screen.(Gray).png

可能なパスを表示する

ボタンがオンの場合、2 つの特定のプロジェクト間に、現在ビューから非表示になっている他の参照プロジェクトで構成されるパスがあるかどうかを確認できます。これらのパスは緑色の点線で示されています。このボタンは、現在表示されている 2 つのプロジェクトをリンクする非表示の中間プロジェクトがある場合にのみ有効になります。詳細については、考えられるアーキテクチャ上の問題の検出を参照してください。

ThemedIcon.Export.Screen.(Gray).png

PNG にエクスポート

ダイアグラムの可視部分を PNG イメージファイルとして保存するには、このボタンをクリックします。

関連ページ:

プロジェクトレベルの支援

ReSharper には、大規模なソリューションを扱う際に特に役立つ一連のプロジェクトレベルの機能が含まれています。本セクション: プロジェクトレベルリファクタリング名前空間を調整する、タイプを一致するファイルに移動する、未使用の参照を削除する、プロジェクト階層を探索する、プロジェクト参照を分析および最適化する、このセクションで扱う項目以外にも、さまざまなコンテキストで利用できる他の多くの機能があり、プロジェクトを管理する際に役立ちます。ビジュアルプロジェクトの依存関係分析を使用すると、何もコンパ...

特定の範囲でコードの問題を見つける

設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。開始コードインスペクション:ソリューション、プロジェクト、カスタムスコープのコードをインスペクションするソリューションワイドのインスペクションの結果(たとえば、未使用のパブ...

次に移動

次に移動は、ほとんどのナビゲーションニーズに対応する 1 つのショートカットです。コンテキストに応じて利用可能なすべてのナビゲーション宛先を含むリストが開きます。このコマンドは、ソリューションエクスプローラー、ファイル構造ウィンドウ、その他のツールウィンドウから呼び出すことができます。コンテキストで利用可能なナビゲーションアクションを表示するエディター内のシンボルにキャレットを配置するか、ツールウィンドウでシンボルを選択するか、エディター内の任意の場所にキャレットを配置します。を押すか、メインメ...

検索結果を分析する

ReSharper のナビゲーション操作と検索操作で複数の結果が得られた場合、これらの結果を検索結果ウィンドウに表示することができます。検索結果ウィンドウは、検索結果を分析するためのさまざまな方法を提供します。デフォルトの動作を変更して、見つかった単一の使用箇所も検索結果ウィンドウに表示されるようにすることができます。これを行うには、ReSharper オプション Alt+R, O のページで使い方: 1 つだけの結果がある場合は .... チェックボックスをオフにします。一部のアクション、たとえば使...

型依存関係ダイアグラムを調べる

ReSharper を使用すると、ソリューション内で型が相互にどのように依存しているかを視覚的に調べることができます。さまざまなプロジェクトまたはコンパイルされたアセンブリから任意の数の型を型依存関係ダイアグラムに追加し、それらの間のさまざまな種類の依存関係を調べることができます。初期ダイアグラムを作成する:新しい型依存関係ダイアグラムを作成するには、いくつかの方法があります。ソリューションエクスプローラー、オブジェクトブラウザー、アーキテクチャエクスプローラー、クラスビュー、またはアセンブリ...