ReSharper 2018.2ヘルプ

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

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

With ReSharper, you can explore project dependencies in your solution having a visual presentation of the solution architecture. At any moment, you can get a project dependency snapshot for your solution and study it. Note that the project dependency snapshot is not updated when you change dependencies between projects — to refresh the dependency view, you have to take another snapshot.

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

Project Architecture View window

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

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

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

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

  1. ソリューション・エクスプローラーでは、1つまたは複数のプロジェクト、1つまたは複数のソリューションフォルダ、またはソリューションノードを選択します。
  2. 選択項目を右クリックして、プロジェクトの依存関係図を表示するを選択するか、メインメニューでReSharper | アーキテクチャー | プロジェクトの依存関係図を表示するを選択します。
  3. アーキテクチャビューは、最初に選択した項目の依存関係を示す新しい文書タブで開きます。
  4. 最初に選択された項目は、アーキテクチャビューの左部分でもチェックされ、すべての解決項目がリストされます。他の項目をチェックすることができます:ダイアグラムに表示され、対応するリンクが追加されます。
  5. 必要に応じて、ツールバーのグループセレクタを使用して項目のグループ化を変更できます。
    • なし - すべてのプロジェクトがグループ化されずに表示されます。
    • ソリューション・フォルダー - プロジェクトはソリューション・フォルダー(英語)によってグループ化されます。
    • ファイル構造 - プロジェクトとソリューションフォルダは、ファイルシステム構造によってグループ化されています。

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

  1. プロジェクト参照に基づいて依存関係図を作成します。このステップは、大規模なソリューションでも非常に迅速に実行されます。
  2. 参照プロジェクト内の使用数を計算するためにカップリング(英語)解析を実行します。この手順は数分かかることがあり、バックグラウンドで実行されます。分析の進捗状況は、アーキテクチャビューの上部にあるステータスバーに反映されます。
    デフォルトで有効になっている結合解析の状態は、カップリング解析のオン/オフを切り替える 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 |建築|保存済みと比較...を選択すると、後で保存したスナップショットを読み込んで調べることができます。スナップショットが現在のソリューションと同じソリューションで保存されている場合は、ソリューションの現在の状態とスナップショットに保存されている状態の違いを確認できます。

最終変更日: 2018年9月12日

関連事項