依赖性分析
最后修改时间:2023 年 9 月 7 日如果您有一个大型 Java 项目,其中包含多个使用多个库的模块,则任何需要进行必要的结构更改的操作都可能很困难。例如,如果您决定删除其中一个库、提取 API 或新模块,或者通过切换到Java 9 Jigsaw模块来模块化应用程序,则需要分析项目中的依赖关系,以确保您的更改是有效的。没有破坏任何东西。
IntelliJ IDEA 有一个工具,可以让您分析应用程序中的模块、包和类之间的依赖关系,并为结构更改做好准备 - 依赖分析器。
提示
在 IntelliJ IDEA 中,您可以可视化项目各部分(模块、类等)之间的依赖关系,并使用依赖结构分析突出显示信息流。
分析依赖关系
转到代码| 分析代码 | 依赖关系。
或者,如果您想要分析特定项目,请在“项目”工具窗口中右键单击它,然后选择“分析”|“分析”。分析依赖关系。
在打开的对话框中,指定要分析的文件范围。
如果尚未创建必要的范围,请单击并在打开的对话框中定义新范围。
如果您想将测试代码与生产代码一起分析,请选择“包括测试源”选项。
如果要分析传递依赖性并指定必要的阈值,请选择显示传递依赖性选项。
例如,A依赖于B,B依赖于C。通过将阈值设置为1,IDE将显示A的B和C依赖关系。通过将阈值设置为0,将仅显示A的B依赖关系。
单击“分析”运行分析。
分析完成后,结果将显示在Dependency Viewer工具窗口中。
在工具窗口的左侧窗格中,选择要在其中搜索依赖项的节点。
在右侧窗格中,选择所选节点所依赖的节点。
搜索结果显示在工具窗口的下部窗格中。使用工具栏上的选项来管理您的搜索结果。
分析模块依赖关系
模块依赖性分析显示指定范围内存在的所有模块、在“项目结构”对话框的“依赖性”选项卡中指定的这些模块之间的关系以及模块之间的循环依赖性。
您可以使用此类分析来确保您之前定义的依赖项仍然存在于您的项目中。
转到代码| 分析代码 | 模块依赖性。
如果“项目”工具窗口中没有选定的模块,系统将提示您指定分析范围。您可以检查整个项目、当前模块或模块组。
或者,右键单击“项目”工具窗口中的模块并选择“分析”|“分析”。分析模块依赖性。
“模块依赖关系”工具窗口将打开,其中列出了选定文件范围内的所有模块。
如果在所选模块中发现任何循环依赖性,它们将显示在工具窗口的右侧部分。
在树视图中选择一个模块,然后单击“模块依赖关系”工具窗口工具栏上的,查找依赖于所选模块的模块。
在打开的对话框中,指定要分析的文件范围。
如果您想将测试代码与生产代码一起分析,请选择“包括测试源”选项。
如果要分析传递依赖性并指定必要的阈值,请选择显示传递依赖性选项。
例如,A依赖于B,B依赖于C。通过将阈值设置为1,IDE将显示A的B和C依赖关系。通过将阈值设置为0,将仅显示A的B依赖关系。
单击“分析”运行分析。
分析完成后,结果将显示在Dependency Viewer工具窗口中。
在工具窗口的左侧窗格中,选择要在其中搜索依赖项的节点。
在右侧窗格中,选择所选节点所依赖的节点。
搜索结果显示在工具窗口的下部窗格中。使用工具栏上的选项来管理您的搜索。
提示
要直观地表示项目中的模块依赖关系,请使用模块依赖关系图。
分析循环依赖
通过分析循环依赖关系,您可以检测指定范围内的包之间的循环关系。
例如,当包 1 中的类引用包 2 中的类、包 2 中的类引用包 3 中的类以及包 3 中的类引用包 1 中的类时,就会发生循环。
转到代码| 分析代码 | 循环依赖。
或者,右键单击“项目”工具窗口中的项目并选择“分析”|“ 分析循环依赖关系。
在“指定循环依赖分析范围”对话框中,选择要分析的文件范围。
如果您想将测试代码与生产代码一起分析,请选择“包括测试源”选项。
单击“确定”运行分析。
分析完成后,结果将显示在Dependency Viewer工具窗口中。
在工具窗口的左侧窗格中,选择要在其中搜索循环依赖关系的节点。
搜索结果显示在右侧窗格中。使用工具栏上的选项来管理您的搜索结果。
分析后向依赖关系
通过这种类型的分析,您可以在特定范围的文件中找到其他类或模块,这些文件取决于指定的分析范围(整个项目、模块、文件、未版本化的文件等)。
分析向后依赖关系可能非常耗时,尤其是在大型项目中。
转到代码| 分析代码 | 向后依赖关系。
或者,如果您想要分析特定项目,请在“项目”工具窗口中右键单击它,然后选择“分析”|“分析”。分析向后依赖关系。
在对话框的“分析范围”部分中,指定您想要查找依赖项的项目部分。
如果您希望分析测试源,请选择包括测试源复选框。
在“分析用法”部分中,指定要搜索依赖项的范围。
分析完成后,结果将显示在Dependency Viewer工具窗口中。
在工具窗口的左侧窗格中,选择要搜索的文件或文件范围。
在右侧窗格中,选择要在其中搜索所选依赖项的范围。
搜索结果显示在工具窗口的下部窗格中。使用工具栏上的选项来管理您的搜索。
依赖关系查看器
分析完成后,依赖关系查看器工具窗口会自动打开并显示结果。要手动打开工具窗口,请选择“视图”|“工具”。工具窗口 | 从主菜单中打开依赖关系查看器,但请确保首先运行分析。
依赖关系查看器包含以下区域:
工具栏位于工具窗口的顶部。使用这些按钮来过滤依赖项。
工具窗口左侧的“已分析代码”窗格包含项目树。选择要查找依赖关系的项目将打开“父代码”窗格。
右侧的“父代码”窗格显示您的选择所依赖的项目。
当您在“父代码”窗格中选择一个项目时,工具窗口下部的“用法”窗格将打开。
物品 | 工具提示和快捷方式 | 描述 |
---|---|---|
关闭 | 关闭工具窗口的当前选项卡。 | |
重新运行CtrlF5 | 在同一选项卡中重新运行依赖性分析。 | |
压平封装 | 将所有包显示为单级树视图。 | |
显示文件 | 在“分析的代码”和“父代码”窗格中显示文件。否则,两个窗格仅显示包。 | |
显示模块 | 在树视图中显示相应模块下的项目。否则,项目项将显示在其包下。 | |
扁平化模块 | 按用户定义的模块组排列树中的项目。 | |
按范围类型分组 | 按范围(生产、测试、库等)对树中的项目进行分组。 | |
仅显示非法内容 | 仅显示非法和无效的依赖项。 | |
标记非法 | 将选定的依赖项标记为非法。 | |
编辑规则 | 定义依赖性分析的规则。 | |
导出到文本文件 | 将分析结果导出到文本文件或将其复制到剪贴板。 |
验证依赖关系
分析依赖关系时,您可能需要从分析过程中排除其中一些依赖关系。您可以使用“验证依赖关系”选项来完成此操作。
在依赖关系查看器工具栏上,单击 编辑规则按钮。
在打开的对话框中,声明描述无效和有效依赖项的规则。
根据您要创建的规则,单击对话框中所需的部分。
如果您想要忽略导入语句中的引用,请选中跳过导入语句复选框。
单击“应用”保存更改并关闭对话框。
单击“依赖关系查看器”工具栏以使用新规则重新运行分析。
感谢您的反馈意见!