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

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

線種意味
黒い実線カップリング(英語)分析が進行中または無効になっているため、この参照の使用回数は不明です。
特定の幅の青い実線カップリング分析はこのリファレンスでは終了しており、参照プロジェクトには少なくとも1つの使用箇所が存在します。線の太さは、参照されているプロジェクトのタイプが参照プロジェクトで何回使用されているかを表します。参照上にマウスを置くと、この番号がツールチップに表示されます。
黒い点線この参照のカップリング分析は終了しており、参照は使用されていません。右クリックして、削除することを選択できます。
緑の点線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

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

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

依存関係を調べるときはいつでも、次のツールバーボタンを使用して、図をファイルにエクスポートできます。

  • PNGにエクスポートする icon export to png png は、ダイアグラムの現在のビューをPNGイメージにエクスポートします。

  • GraphMLにエクスポート icon export to graphml png は、外部分析用にGraphML形式でダイアグラムをエクスポートします。

  • 大きな図を印刷する必要がある場合は、XPSにエクスポート icon export to xps png を使用して、図をXPS形式でエクスポートします。

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

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

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

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

最終更新日: 2020年7月21日

関連ページ:

アーキテクチャビュー

ReSharper | アーキテクチャー | プロジェクトの依存関係図を表示するアーキテクチャビューを使用すると、プロジェクトの依存関係図を探索し、以前に取得した依存関係のスナップショットをソリューションの現在の状態と比較できます。このビューは、ソリューションアイテム、ダイアグラム領域、およびツール...

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

ReSharperには、大規模なソリューションを扱う際に特に役立つ一連のプロジェクトレベルの機能が含まれています。本セクション:このセクションの記事を閲覧するには、目次ナビゲーションを使用してください。このセクションで扱う項目以外にも、さまざまなコンテキストで利用できる他の多くの機能があり、プロジェ...

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

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

次にナビゲート

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

検索結果ウィンドウ

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

タイプ依存関係図を見る

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