ReSharper 2018.3ヘルプ

プロジェクト依存関係図の探索

ReSharper | アーキテクチャー | プロジェクトの依存関係図を表示する
ReSharper_ShowProjectDependencyGraph

ReSharperを使用すると、ソリューションアーキテクチャのビジュアルプレゼンテーションを使用して、ソリューション内のプロジェクトの依存関係を探索できます。いつでも、ソリューションのプロジェクト依存関係のスナップショットを取得して調査することができます。プロジェクト間の依存関係を変更してもプロジェクト依存関係スナップショットは更新されないことに注意してください。依存関係ビューを更新するには、別のスナップショットを作成する必要があります。

アーキテクチャビューを使用すると、プロジェクトの依存関係のスナップショットを視覚的に調査し、ソリューションの現在の状態を以前に作成したスナップショットと比較することができます。

Project Architecture View window

プロジェクト依存性スナップショットの取得

A project dependency snapshot is a record of all projects in your solution and all dependencies between them, taken at a specific moment in time. With ReSharper, you can take and save such snapshots. Later, you can load and compare a saved snapshot to the current state of the solution. The visual representation of the dependency snapshots is provided in the アーキテクチャビュー .

大規模なソリューションでは、依存関係図の作成とコード・メトリックの計算に時間がかかることがあります。ただし、分析は非同期に実行され、ソリューションは構築されません。したがって、ダイアグラムの作成中にコードを使って作業を続けることができます。

プロジェクト依存関係のスナップショットを取得するには

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

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

  3. アーキテクチャビューは、最初に選択した項目の依存関係を示す新しい文書タブで開きます。

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

  5. 必要に応じて、ツールバーのグループセレクタを使用して項目のグループ化を変更できます。
    • なし - すべてのプロジェクトはグループ化されずに表示されます。

    • ソリューション・フォルダー - プロジェクトはソリューションフォルダー(英語)によってグループ化されています。

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

依存関係のスナップショットを取得すると、ReSharperは2つのステップでそれを行います。

  1. Build the dependency diagram based on the project references. This step is done very quickly even in large solutions.

  2. Perform the coupling(英語) analysis to calculate numbers of usages in the referencing project. This step can take several minutes and it runs in the background. The progress of the analysis is reflected by the status bar on top of the アーキテクチャビュー .
    The state of the coupling analysis, which is enabled by default, corresponds to the state of the カップリング解析のオン/オフを切り替える ThemedIcon MetricDisplay Screen Gray button. The coupling analysis is a resource-intensive process and may affect performance on large solutions. If you experience any lags when working with the diagram, you can use this button to disable the coupling analysis, adjust the diagram as needed, and then enable the analysis again. The analysis algorithm first calculates the coupling of the displayed projects and then processes projects hidden from the view.

図内のプロジェクト間のリンクは、次の方法で表示できます。

線種

意味

黒い実線

カップリング(英語)分析は進行中または無効になっているため、この参照の使用回数は不明です。

特定の幅の青い実線

カップリング分析はこのリファレンスでは終了しており、参照プロジェクトには少なくとも1つの使用箇所が存在します。線の太さは、参照されているプロジェクトのタイプが参照プロジェクトで何回使用されているかを表します。参照上にマウスを置くと、この番号がツールチップに表示されます。

黒い点線

カップリング解析はこのリファレンスでは終了しており、リファレンスは使用されていません。右クリックして削除することができます。

緑の点線

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

緑の実線

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

赤い実線

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

アイテムの表示と非表示

左側の対応する項目のチェックボックスを使用して、ダイアグラム内の特定のソリューション項目(プロジェクト、フォルダー、ソリューションフォルダー)を表示または非表示にすることができます。また、図エリアから項目を表示/非表示する方法はいくつかあります。

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

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

  • 項目を非表示にするには、図で項目を選択して Deleteを押します。

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

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

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

図のパンとズーム

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

図の項目の並べ替え

ダイアグラムのレイアウトは自動的に計算されますが、必要に応じて変更することができます。すべてのアイテムを移動することができます。項目を移動するには、最初に項目をクリックして選択し、十字カーソル cursor cross が表示されている間にクリックしてドラッグします。

図上のプロジェクトのグループ化

グループセレクターを使用して、ソリューションフォルダー(英語)またはファイルシステム構造によってプロジェクトをグループ化できます。グループ化は、左側部分と図の両方に適用されます。必要に応じて、次のいずれかの方法でダイアグラムのグループ化項目を折りたたんで展開することができます。

  • グループ化項目の左上隅にある下矢印をクリックします。折りたたまれると、記号が上矢印に変わり、それをクリックすると項目が展開されます。

  • 図内のグループ化項目を選択し、Ctrl+Left,ArrowCtrl+Right,Arrowを押します。

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

プロジェクト参照の分析

用途の詳細については、対応するリンクを選択して Alt+F7 を押すか、右クリックして使用箇所の表示を選択してください。ReSharperは検索結果ウィンドウの使用箇所を表示します。

結合分析が特定の参照に対して終わっていて、ReSharperが未使用(点線)で強調表示している場合は、ダイアグラムから切り替えて未使用の参照を削除する必要はありません。選択して Ctrl+Shift+R を押すか、リファクタリングAlt+Delete を押すか、安全なアセンブリ参照の削除をクリックします。

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

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

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

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

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

    Detecting possible architecture problems

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

    Detecting possible architecture problems

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

    Detecting possible architecture problems

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

ダイアグラムをイメージにエクスポートする

依存関係を調べる時点で、現在のビューをイメージにエクスポートできます。これを行うには、PNGにエクスポートする ThemedIcon Export Screen Gray をクリックし、イメージファイルを保存する場所を指定します。

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

アーキテクチャビューに表示される依存関係のスナップショットが現在のソリューション状態と異なる場合は、差異の表示 ThemedIcon GraphDiff Screen Gray ボタンが使用可能になります。

ソリューションの現在の状態を記録する場合は、スナップショットをファイルに保存できます。これを行うには、ツールバーのアーキテクチャグラフを保存する ThemedIcon SaveGraph Screen Gray をクリックし、スナップショットファイルを保存する場所を選択します。

メインメニューでReSharper | アーキテクチャー | 保存済みと比較...を選択すると、後で保存したスナップショットを読み込んで調べることができます。スナップショットが現在のソリューションと同じソリューションで保存されている場合は、ソリューションの現在の状態とスナップショットに保存されている状態の違いを確認できます。

最終更新日: 2019年3月12日

関連事項