我有一个大型共享Java库,其中包含许多Java应用程序使用的许多类。但是,有些类根本没有使用,有些类只由一个应用程序使用,所以它不应该存在于共享库中。
问题是找到大量应用程序(超过100个)未使用的类。重要的是,我希望能够自动化查找未使用代码的过程,例如,通过运行脚本或类似程序,所以这不会成为人们不时要做的手动过程。这就是为什么我认为IntelliJ的“查找用法”功能是不可能的。
一些有用的信息:
是否有任何工具或库可以解决在共享库中查找未使用的代码而不涉及手动处理的任务?
答案 0 :(得分:0)
IntelliJ社区&最终强>
手动你会做:
如果要批量删除,可以选择多个条目,然后选择R-Click和安全删除。
这也解释了here。
要从命令行运行与上述相同的操作并生成报告,您需要按照here所述的步骤操作。最后一页可能无法提供足够的信息。因此,我将总结完成这项工作所需的步骤。
要离线运行检查,您可以:
这些步骤的结果是您在项目中获得了包含所有设置的新XML。例如,如果您将个人资料命名为“UnusedDeclaration”,那么您将获得<proj>/.idea/inspectionProfiles/UnusedDeclaration.xml
。
关闭IntelliJ实例非常重要其他方法无效。
转到命令提示符并键入与此类似的内容(对于Windows计算机):
D:\>C:\Users\andre\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\171.4249.39\bin\inspect.bat D:\MyProjects\MyProject D:\MyProjects\MyProject\.idea\inspectionProfiles\UnusedDeclaration.xml D:\results
注意:这适用于Windows计算机,但对于Linux或Mac,您可以使用inspect.sh代替inspect.bat
。
注意:我使用Toolbox安装IntelliJ。这很有用,因为我可以管理整个套件的安装和更新。因此,我的IntelliJ安装位于C:\Users\andre\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\171.4249.39\
。
通过运行上一个命令,您将获得以下行为:
D:\MyProjects\MyProject
)D:\MyProjects\MyProject\.idea\inspectionProfiles\UnusedDeclaration.xml
)D:\results
)因此,您可以使用D:\results\unused.xml
下的所有未使用的类获取报告。
IntelliJ Ultimate
以下内容可以手动完成,但我发现它对于需要分析代码使用方式的场景非常有用,包括确定是否完全不使用类/命名空间/模块。
你可以:
将出现具有依赖关系的矩阵。
如果某行为空(无数字),则不使用该部分。
您可以通过R单击并安全删除相应的选择。
你可以点击R&gt;查找用法 - 以查看特定部件的使用位置。
可以找到此功能的简要说明here。
<强> JArchitect 强>
JArchitect提供了许多功能,似乎是分析大型项目和确保代码质量的完整解决方案。
它可以提供类似于IntelliJ Ultimate中的Dependency Matrix。
它还提供了一种语言CQLinq,可用于查询代码库。例如,确定未使用的类。您还可以生成更多报告,并创建阈值并集成到正常的持续集成过程中。因此,如果不使用某些类,则可以fail a build。
注意:有一些答案,如this one,讨论了更多用于分析依赖关系的工具。