依存関係分析
複数のライブラリを使用する複数のモジュールを持つ大規模な Java プロジェクトがある場合、本質的な構造変更を必要とする操作は困難になる可能性があります。例: ライブラリの 1 つを削除したり、API または新しいモジュールを抽出したり、Java 9 Jigsaw(英語) モジュールに切り替えてアプリケーションをモジュール化したりする場合は、プロジェクト内の依存関係を分析して、変更によって何も壊れていないことを確認する必要があります。
IntelliJ IDEA には、アプリケーション内のモジュール、パッケージ、クラス間の依存関係を分析し、構造上の変更に備えることができるツール(依存関係アナライザー)があります。
依存関係の解析
に移動します。
または、特定のアイテムを分析する場合は、プロジェクトツールウィンドウでそのアイテムを右クリックして、 を選択します。
開いたダイアログで、分析するファイルのスコープを指定します。
必要なスコープがまだ作成されていない場合は、
をクリックして、開いたダイアログで新しいスコープを定義します。
テストコードを製品コードと一緒に分析する場合は、テストソースを含めるオプションを選択します。
推移的な依存関係を分析し、必要なしきい値を指定する場合は、推移的依存関係を表示するオプションを選択します。
例: A は B に依存し、B は C に依存します。しきい値を 1 に設定すると、IDE は A の B と C の依存関係を表示します。しきい値を 0 に設定すると、A の B の依存関係のみが表示されます。
分析をクリックして分析を実行します。
分析が終了すると、結果が依存関係ビューアーツールウィンドウに表示されます。
ツールウィンドウの左側のペインで、依存関係を検索するノードを選択します。
右側のペインで、選択したノードが依存しているノードを選択します。
検索結果は、ツールウィンドウの下部ペインに表示されます。ツールバーのオプションを使用して、検索結果を管理します。
モジュール依存関係を解析
モジュール依存関係分析では、指定されたスコープに存在するすべてのモジュール、プロジェクト構造ダイアログの依存関係タブで指定されたこれらのモジュール間の関係、およびモジュール間の循環依存関係が表示されます。
この型の分析を使用して、以前に定義した依存関係がプロジェクトにまだ存在していることを確認できます。
に移動します。
プロジェクトツールウィンドウでモジュールが選択されていない場合は、分析範囲を指定するよう求められます。プロジェクト全体、現在のモジュール、モジュールグループを調べることができます。
または、プロジェクトツールウィンドウでモジュールを右クリックし、 を選択します。
モジュールの依存関係ツールウィンドウが開き、選択したファイルスコープを持つすべてのモジュールが一覧表示されます。
選択したモジュールで循環依存関係が見つかった場合、それらはツールウィンドウの右側に表示されます。
ツリービューでモジュールを選択し、モジュールの依存関係ツールウィンドウのツールバーで
をクリックして、選択したモジュールに依存するモジュールを見つけます。
開いたダイアログで、分析するファイルのスコープを指定します。
テストコードを製品コードと一緒に分析する場合は、テストソースを含めるオプションを選択します。
推移的な依存関係を分析し、必要なしきい値を指定する場合は、推移的依存関係を表示するオプションを選択します。
例: A は B に依存し、B は C に依存します。しきい値を 1 に設定すると、IDE は A の B と C の依存関係を表示します。しきい値を 0 に設定すると、A の B の依存関係のみが表示されます。
分析をクリックして分析を実行します。
分析が終了すると、結果が依存関係ビューアーツールウィンドウに表示されます。
ツールウィンドウの左側のペインで、依存関係を検索するノードを選択します。
右側のペインで、選択したノードが依存しているノードを選択します。
検索結果は、ツールウィンドウの下部ペインに表示されます。ツールバーのオプションを使用して、検索を管理します。
モジュール依存関係ツールウィンドウ
このツールウィンドウは、モジュール依存関係を解析オプションを実行した後に使用可能になり、モジュール設定で定義されているモジュールの依存関係を表示します。このツールウィンドウでは、依存関係の方向を変更し、ソースコードのより詳細な分析を実行できます。
ツールバーボタン
項目 | 説明 |
---|---|
| 現在のタブを閉じます。 |
| 依存関係分析スコープの指定ダイアログを開いて依存関係を分析します。 |
| 依存関係の方向を変更します。 |
| テストの依存関係を含める。 |
コンテキストメニューのオプション
項目 | ショートカット | 説明 |
---|---|---|
すべて展開 / すべて折りたたむ | Ctrl+NumPad + / Ctrl+NumPad - | すべてのノードを折りたたんだり展開したりします。 |
モジュール設定を開く | F4 Ctrl+Enter | プロジェクト構造ダイアログ (Ctrl+Alt+Shift+S) のモジュールページで、選択したモジュールの設定を開きます。 |
依存関係の解析 逆方向の依存関係を解析 循環的な依存関係を解析 | これらのオプションの 1 つを選択して、依存関係を分析します。 |
循環的な依存関係を解析
循環依存関係を分析することにより、指定されたスコープ内のパッケージ間の循環関係を検出できます。
例: パッケージ 1 のクラスがパッケージ 2 のクラスを参照し、パッケージ 2 のクラスがパッケージ 3 のクラスを参照し、パッケージ 3 のクラスがパッケージ 1 のクラスを参照するときにサイクルが発生します。
![スキームに示される循環依存 Cyclic dependencies shown on a scheme](https://resources.jetbrains.com/help/img/idea/2024.1/cycle-dependencies-scheme.png)
に移動します。
または、プロジェクトツールウィンドウでアイテムを右クリックし、 を選択します。
循環依存関係分析スコープの指定ダイアログで、分析するファイルのスコープを選択します。
テストコードを製品コードと一緒に分析する場合は、テストソースを含めるオプションを選択します。
OK をクリックして分析を実行します。
分析が終了すると、結果が依存関係ビューアーツールウィンドウに表示されます。
ツールウィンドウの左側のペインで、循環依存関係を検索するノードを選択します。
検索結果は右ペインに表示されます。ツールバーのオプションを使用して、検索結果を管理します。
逆方向の依存関係を解析
この型の分析では、指定された分析範囲 (プロジェクト全体、モジュール、ファイル、バージョン管理されていないファイルなど) に応じて、特定の範囲のファイル内で他のクラスまたはモジュールを検索できます。
特に大規模なプロジェクトでは、後方依存関係の分析に時間がかかる場合があります。
に移動します。
または、特定のアイテムを分析する場合は、プロジェクトツールウィンドウでそのアイテムを右クリックして、 を選択します。
ダイアログの解析スコープセクションで、依存関係を検索するプロジェクトの部分を指定します。
テストソースを分析する場合は、テストソースを含めるチェックボックスを選択します。
で使用状況を分析するセクションで、依存関係を検索するスコープを指定します。
分析が終了すると、結果が依存関係ビューアーツールウィンドウに表示されます。
ツールウィンドウの左側のペインで、検索するファイルまたはファイルのスコープを選択します。
右側のペインで、選択した依存関係を検索するスコープを選択します。
検索結果は、ツールウィンドウの下部ペインに表示されます。ツールバーのオプションを使用して、検索を管理します。
必要なスコープがまだ作成されていない場合は、 をクリックして、開いたダイアログで新しいスコープを定義します。
依存関係ビューアー
解析が完了すると、依存関係ビューアーツールウィンドウが自動的に開き、結果が表示されます。ツールウィンドウを手動で開くには、メインメニューの に移動しますが、必ず最初に分析を実行してください。
依存関係ビューアーは、次の領域で構成されています。
ツールウィンドウの上部にあるツールバー。これらのボタンを使用して、依存関係をフィルタリングします。
ツールウィンドウの左側にある分析コードペインには、プロジェクトツリーが含まれています。依存関係を検索するアイテムを選択すると、親コードペインが開きます。
右側の親コードペインには、選択が依存するアイテムが表示されます。
親コードペインで項目を選択すると、ツールウィンドウの下部にある使用箇所ペインが開きます。
![Analyzing backward dependencies](https://resources.jetbrains.com/help/img/idea/2024.1/backward-dependencies-animation.png)
分析されたコードツールバーボタン
項目 | ツールチップとショートカット | 説明 |
---|---|---|
| 閉じる | ツールウィンドウの現在のタブを閉じます。 |
| 再実行 Ctrl+F5 | 同じタブで依存関係分析を再実行してください。 |
| パッケージのフラット表示 | すべてのパッケージを単一レベルのツリービューとして表示します。 |
| ファイルの表示 | 分析コードおよび親コードペインにファイルを表示します。それ以外の場合、両方のペインにパッケージのみが表示されます。 |
| モジュールの表示 | ツリービューの対応するモジュールにアイテムを表示します。それ以外の場合、プロジェクトアイテムはパッケージに表示されます。 |
| モジュールのフラット表示 | ユーザー定義のモジュールグループごとにツリー内のアイテムを配置します。 |
| スコープタイプ別にグループ化 | ツリー内のアイテムをスコープ(本番、テスト、ライブラリなど)でグループ化します。 |
| 不正のみ表示 | 無効な依存関係と無効な依存関係のみを表示します。 |
| 不正としてマーク | 選択した依存関係を不正としてマークします。 |
| ルールの編集 | 依存関係分析用のルールを定義します。 |
| テキストファイルにエクスポート | 分析結果をテキストファイルにエクスポートするか、クリップボードにコピーします。 |
依存関係を検証する
依存関係を分析する場合、それらの一部を分析プロセスから除外する必要がある場合があります。依存関係を検証するオプションを使用してそれを行うことができます。
依存関係ビューアーツールバーで、
ルールの編集ボタンをクリックします。
開いたダイアログで、無効な依存関係と有効な依存関係を説明するルールを宣言します。
作成するルールに応じて、ダイアログの必須セクションで
をクリックします。
使用を許可しないリストから、無効として認識される依存関係を選択します。
in リストから、選択した使用箇所が無効として扱われるファイルのスコープを選択します。
必要なスコープがまだ作成されていない場合は、
をクリックして、開いたダイアログで新しいスコープを定義します。
使用を許可するリストから、有効として認識される依存関係を選択します。
唯一のリストから、選択した使用箇所が有効として扱われるファイルのスコープを選択します。これらの使用箇所は、このスコープで使用される場合にのみ有効です。
必要なスコープがまだ作成されていない場合は、
をクリックして、開いたダイアログで新しいスコープを定義します。
インポートステートメントの参照を無視する場合は、import ステートメントをスキップするチェックボックスを選択します。
変更を適用し、ダイアログを閉じます。
依存関係ビューアーツールバーの
をクリックして、新しいルールで分析を再実行します。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/dsm-legend.png)
依存関係構造マトリックス
多数の依存関係を持つ複雑なプロジェクトに取り組むことで、どこで問題を探すのかを理解することが難しくなります。アプリケーションのパフォーマンスや動作に重大な影響を及ぼす可能性のある複雑な関係や周期的な依存関係が発生する可能性があります。これが DSM が役立つところです。DSM は依存関係構造マトリックスの略で、プロジェクトの各部分(モジュール、クラスなど)間の依存関係を視覚化し、情報フローを強調するのに役立つメソッドです。DSM 分析を使用して、変更がプロジェクトに与える影響を確認することができます...
![](https://resources.jetbrains.com/help/img/idea/2024.1/scopes-local-shared.png)
スコープとファイルの色
スコープは、プロジェクト内のファイル、パッケージ、フォルダーのグループです。スコープを使用して、さまざまな IDE ビューのプロジェクトアイテムを視覚的に区別し、特定の操作の範囲を制限できます。スコープは、プロジェクト内のファイルを論理的に編成するように設計されています。テストソースはテスト関連のスコープに移動でき、製品コードは製品ファイルのスコープに関連付けることができます。これらの論理チャンクにより、プロジェクトの管理が容易になります。例: テスト関連のインスペクションをテストクラスでのみ実...
![](https://resources.jetbrains.com/help/img/idea/2024.1/add-dependency.png)
モジュールの依存関係
モジュールは、SDK、JAR ファイル(ライブラリ)、プロジェクト内の他のモジュールに依存できます。コードをコンパイルまたは実行すると、モジュールの依存関係のリストを使用して、コンパイラーまたは JVM のクラスパスが形成されます。新しい依存関係を追加するメインメニューで、に移動し、をクリックします。をクリックして、依存関係の種類を選択します。JAR またはディレクトリ: コンピューター上のファイルから Java アーカイブまたはディレクトリを選択します。ライブラリ: 既存のライブラリを選択す...
![](https://resources.jetbrains.com/help/img/idea/2024.1/project_modules_diagram.png)
モジュール依存関係ダイアグラム
大規模なマルチモジュールプロジェクトで作業するときは、モジュールとその依存関係がグラフでどのように関連しているかを確認するほうが便利なことがあります。次のモジュールの UML ダイアグラムを表示、分析、管理できます。プロジェクトモジュール - これはあなたのマルチモジュールプロジェクトの一部です。Java モジュール - JDK 9 に付属の Jigsaw プロジェクトの一部です。このようなダイアグラムを表示および管理するには、JDK 9 以降のバージョンがインストールされていることを確認してください。モ...
![](https://resources.jetbrains.com/help/img/idea/2024.1/parrot-freeze.png)
チュートリアル: メモリリークを見つける
コードが適切に機能していない状況に陥ることがよくあり、どこから調査を開始すればよいかさえわかりません。解決策が最終的に得られるまで、コードをじっと見つめることはできませんか? もちろんですが、この方法は、プロジェクトに関する深い知識と多くの精神的な努力なしにはおそらく機能しません。より実用的なアプローチは、手元にあるツールを使用することです。彼らはあなたを正しい方向に向けることができます。このチュートリアルでは、IntelliJ IDEA の組み込みツールのいくつかを使用してランタイムの問題を調...
![](https://pleiades.io/icons/idea.png)
依存関係分析スコープの指定ダイアログ
このダイアログを使用して、依存関係または null 許容要素の検索範囲を定義します。ダイアログの内容は分析の種類によって若干異なります。プロジェクト全体プロジェクト全体の検査。モジュール <名前> プロジェクトツールウィンドウで現在選択されているモジュールをインスペクションします。ファイル <名前> プロジェクトツールウィンドウで現在選択されているか、エディターで開かれているファイルを調べます。選択したファイルプロジェクトツールウィンドウで現在選択されているファイルを調べます...