ReSharper 2019.2ヘルプ

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

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

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

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

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

最終更新日: 2019年11月13日

関連ページ:

アーキテクチャビュー

アーキテクチャビューを使用すると、プロジェクトの依存関係図を調べたり、以前に取得した依存関係のスナップショットをソリューションの現在の状態と比較することができます。ビューは、ソリューション項目、ダイアグラム領域、およびツールバーで構成されています。ソリューション項目:左のソリューションアイテムには、...

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

ReSharperには、大規模なソリューションを扱う際に特に役立つ一連のプロジェクトレベルの機能が含まれています。本セクション:プロジェクトレベルリファクタリング名前空間を調整する、タイプを一致するファイルに移動する、未使用の参照を削除する、プロジェクト階層の探索、プロジェクト参照の分析と最適化、N...

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

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

次にナビゲート

次にナビゲートは、ほとんどのナビゲーションニーズに対する単一のショートカットです。コンテキスト的に利用可能なすべてのナビゲーション宛先を含むリストを開きます。このコマンドは、エディター、ファイル構造ウィンドウおよびその他のツールウィンドウから呼び出すことができます。コンテキストで利用可能なナビゲーシ...

検索結果ウィンドウ

このウィンドウは、さまざまな検索結果(たとえば、シンボルの使用、外部シンボルの使用、シンボルのAPIの公開など)を表示するために使用されます。最新の検索の結果と以前の検索の結果が別のタブに表示されます。それぞれの新しい検索コマンドの結果は、同じ検索/ナビゲーションコマンドを除いて、別々のタブに表示さ...

型依存関係図の探索

ReSharperを使用すると、タイプがソリューション内でどのように依存するかを視覚的に調べることができます。型依存関係図では、異なるプロジェクトまたはコンパイルされたアセンブリから任意の数の型を追加し、それらの間のさまざまな種類の依存関係を視覚化できます。初期図の作成:新しい型依存関係図を作成する...