ReSharper 2018.3ヘルプ

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

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

ReSharperを使用すると、ソリューションのプロジェクト依存関係を探索し、ソリューションアーキテクチャを視覚的に表示できます。どの時点でも、ソリューションのプロジェクト依存性スナップショットを取得し、それを調べることができます。プロジェクト間の依存関係を変更すると、プロジェクト依存関係のスナップショットは更新されません。依存関係ビューを更新するには、別のスナップショットを作成する必要があります。

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

Project Architecture View window

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

プロジェクト依存性スナップショットは、特定の瞬間にとられた、ソリューション内のすべてのプロジェクトとそれらの間のすべての依存関係の記録です。ReSharperを使用すると、そのようなスナップショットを取得して保存することができます。後で、保存されたスナップショットをロードし、ソリューションの現在の状態と比較することができます。依存性スナップショットの視覚的表現は、アーキテクチャビューで提供されています。

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

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

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

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

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

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

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

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

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

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

  1. プロジェクト参照に基づいて依存関係図を作成します。このステップは、大規模なソリューションでも非常に迅速に実行されます。

  2. カップリング(英語)解析を実行して参照プロジェクト内の使用数を計算します。この手順には数分かかることがあり、バックグラウンドで実行されます。分析の進行状況はアーキテクチャビュー上部のステータスバーに反映されます。
    デフォルトで有効になっている結合解析の状態は、Turn Coupling Analysisのオン/オフの状態に対応します。 ThemedIcon MetricDisplay Screen Gray ボタン。カップリング分析はリソースを大量に消費するプロセスであり、大規模ソリューションのパフォーマンスに影響を与える可能性があります。ダイアグラムの処理中に遅延が発生した場合は、このボタンを使用してカップリング解析を無効にし、必要に応じてダイアグラムを調整してから、解析を再度有効にします。分析アルゴリズムは、最初に表示されたプロジェクトの結合を計算し、次にビューから隠されているプロジェクトを処理します。

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

線種

意味

黒い実線

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

特定の幅の青い実線

カップリング分析はこのリファレンスでは終了しており、参照プロジェクトには少なくとも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年1月21日

関連事項