依存関係分析
複数のライブラリを使用する複数のモジュールを持つ大規模な 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 のクラスを参照するときにサイクルが発生します。

メインメニューで、に移動します。
または、プロジェクトツールウィンドウでアイテムを右クリックし、を選択します。
循環依存関係分析スコープの指定ダイアログで、分析するファイルのスコープを選択します。
テストコードを製品コードと一緒に分析する場合は、テストソースを含めるオプションを選択します。

OK をクリックして分析を実行します。
分析が終了すると、結果が依存関係ビューアーツールウィンドウに表示されます。
ツールウィンドウの左側のペインで、循環依存関係を検索するノードを選択します。
検索結果は右ペインに表示されます。ツールバーのオプションを使用して、検索結果を管理します。

逆方向の依存関係を解析
この型の分析では、指定された分析範囲 (プロジェクト全体、モジュール、ファイル、バージョン管理されていないファイルなど) に依存する特定の範囲のファイル内の他のクラスまたはモジュールを見つけることができます。
特に大規模なプロジェクトでは、後方依存関係の分析に時間がかかる場合があります。
メインメニューで、に移動します。
または、特定のアイテムを分析する場合は、プロジェクトツールウィンドウでそのアイテムを右クリックして、を選択します。
ダイアログの解析スコープセクションで、依存関係を検索するプロジェクトの部分を指定します。
テストソースを分析するには、テストソースを含めるチェックボックスを選択します。
で使用状況を分析するセクションで、依存関係を検索するスコープを指定します。

分析が終了すると、結果が依存関係ビューアーツールウィンドウに表示されます。
ツールウィンドウの左側のペインで、検索するファイルまたはファイルのスコープを選択します。
右側のペインで、選択した依存関係を検索するスコープを選択します。
検索結果は、ツールウィンドウの下部ペインに表示されます。ツールバーのオプションを使用して、検索を管理します。
必要なスコープがまだ作成されていない場合は、 をクリックして、開いたダイアログで新しいスコープを定義します。
依存関係ビューアー
分析が終了すると、依存関係ビューアーツールウィンドウが自動的に開き、結果が表示されます。ツールウィンドウを手動で開くには、メインメニューのに移動しますが、最初に分析を実行するようにしてください。
依存関係ビューアーは、次の領域で構成されています。
ツールウィンドウの上部にあるツールバー。これらのボタンを使用して、依存関係をフィルタリングします。
ツールウィンドウの左側にある分析コードペインには、プロジェクトツリーが含まれています。依存関係を検索するアイテムを選択すると、親コードペインが開きます。
右側の親コードペインには、選択が依存するアイテムが表示されます。
親コードペインで項目を選択すると、ツールウィンドウの下部にある使用箇所ペインが開きます。

分析されたコードツールバーボタン
項目 | ツールチップとショートカット | 説明 |
|---|---|---|
| 閉じる | ツールウィンドウの現在のタブを閉じます。 |
| 再実行 Ctrl+F5 | 同じタブで依存関係分析を再実行してください。 |
| パッケージのフラット表示 | すべてのパッケージを単一レベルのツリービューとして表示します。 |
| ファイルの表示 | 分析コードおよび親コードペインにファイルを表示します。それ以外の場合、両方のペインにパッケージのみが表示されます。 |
| モジュールの表示 | ツリービューの対応するモジュールにアイテムを表示します。それ以外の場合、プロジェクトアイテムはパッケージに表示されます。 |
| モジュールのフラット表示 | ユーザー定義のモジュールグループごとにツリー内のアイテムを配置します。 |
| スコープタイプ別にグループ化 | ツリー内のアイテムをスコープ(本番、テスト、ライブラリなど)でグループ化します。 |
| 不正のみ表示 | 無効な依存関係と無効な依存関係のみを表示します。 |
| 不正としてマーク | 選択した依存関係を不正としてマークします。 |
| ルールの編集 | 依存関係分析用のルールを定義します。 |
| テキストファイルにエクスポート | 分析結果をテキストファイルにエクスポートするか、クリップボードにコピーします。 |
依存関係を検証する
依存関係を分析する場合、それらの一部を分析プロセスから除外する必要がある場合があります。依存関係を検証するオプションを使用してそれを行うことができます。
依存関係ビューアーツールバーで、
ルールの編集ボタンをクリックします。
開いたダイアログで、無効な依存関係と有効な依存関係を説明するルールを宣言します。
作成するルールに応じて、ダイアログの必須セクションで
をクリックします。
使用を許可しないリストから、無効として認識される依存関係を選択します。
in リストから、選択した使用箇所が無効として扱われるファイルのスコープを選択します。
必要なスコープがまだ作成されていない場合は、
をクリックして、開いたダイアログで新しいスコープを定義します。
使用を許可するリストから、有効として認識される依存関係を選択します。
唯一のリストから、選択した使用箇所が有効として扱われるファイルのスコープを選択します。これらの使用箇所は、このスコープで使用される場合にのみ有効です。
必要なスコープがまだ作成されていない場合は、
をクリックして、開いたダイアログで新しいスコープを定義します。
インポートステートメントの参照を無視する場合は、import ステートメントをスキップするチェックボックスを選択します。
変更を適用し、ダイアログを閉じます。

依存関係ビューアーツールバーの
をクリックして、新しいルールで分析を再実行します。
関連ページ:
依存関係構造マトリックス
依存関係の多い複雑なプロジェクトでは、どこに問題があるのか把握するのが難しくなります。複雑な関係性や循環的な依存関係に遭遇し、アプリケーションのパフォーマンスや動作に深刻な影響を与える可能性があります。そこで DSM が役立ちます。DSM は依存関係構造マトリックスの略で、プロジェクトの各部分(モジュール、クラスなど)間の依存関係を視覚化し、情報フローを強調するのに役立つメソッドです。DSM 分析を使用して、変更がプロジェクトに与える影響を確認することができます。例: クラスの 1 つを変更する必要...
スコープとファイルの色
スコープは、プロジェクト内のファイル、パッケージ、フォルダーの名前付きセットです。スコープを使用すると、さまざまな IDE ビューでプロジェクト項目を視覚的に区別し、特定の操作の範囲を制限できます。スコープを使用すると、ファイルを論理的に整理できます。たとえば、テストソースをテストスコープに配置し、本番環境のコードを本番環境スコープに配置することができます。これにより、大スコーププロジェクトでの作業が容易になります。インスペクションをテストのみで実行すると、コードベース全体で実行するよりも高速に...
モジュールの依存関係
モジュールは、SDK、JAR ファイル(ライブラリ)、プロジェクト内の他のモジュールに依存できます。コードをコンパイルまたは実行すると、モジュールの依存関係のリストを使用して、コンパイラーまたは JVM のクラスパスが形成されます。新しい依存関係を追加するメインメニューで、に移動し、をクリックします。をクリックして、依存関係の種類を選択します。JAR またはディレクトリ: コンピューター上のファイルから Java アーカイブまたはディレクトリを選択します。ライブラリ: 既存のライブラリを選択す...
モジュール依存関係ダイアグラム
大規模なマルチモジュールプロジェクトで作業するときは、モジュールとその依存関係がグラフでどのように関連しているかを確認するほうが便利なことがあります。次のモジュールの UML ダイアグラムを表示、分析、管理できます。プロジェクトモジュール - これはあなたのマルチモジュールプロジェクトの一部です。Java モジュール - JDK 9 に付属の Jigsaw プロジェクトの一部です。このようなダイアグラムを表示および管理するには、JDK 9 以降のバージョンがインストールされていることを確認してください。モ...
スレッドダンプ
スレッドダンプは、特定の瞬間におけるアプリケーションの状態を調べるためのツールです。アプリケーション内のスレッドのリストとスタックトレースが提供されるため、デッドロックや UI の応答なしなどの問題のデバッグに役立ちます。スレッドダンプの主な利点は、プレーンテキスト形式であることと、それをキャプチャーして処理できるツールが多数あることです。IntelliJ IDEA を使用すると、実行中のプロセスのスレッドダンプをキャプチャーできるほか、IntelliJ IDEA または jstack や jcmd な...
依存関係分析スコープの指定ダイアログ
このダイアログを使用して、依存関係または null 許容要素の検索範囲を定義します。ダイアログの内容は分析の種類によって若干異なります。プロジェクト全体プロジェクト全体の検査。モジュール <名前> プロジェクトツールウィンドウで現在選択されているモジュールをインスペクションします。ファイル <名前> プロジェクトツールウィンドウで現在選択されているか、エディターで開かれているファイルを調べます。選択したファイルプロジェクトツールウィンドウで現在選択されているファイルを調べま...