java - 确定传递 Java 导入的工具?

标签 java import code-analysis

是否有某种工具可以指向一组 Java 类,并生成显示每个类的传递导入的输出?

我理解从语言本身的角度来看,导入不是“可传递的”——即,如果 com.acme.X 导入 com.acme.Y,而 com.acme.Y 导入 com.acme.Z,那么并不意味着您可以在 com.acme.X 中引用 com.acme.Z。但这不是我的意思:

相反,我的意思是 com.acme.X 仍然依赖于 com.acme.Z(至少在 X 和 Y 的当前实现下),我想知道这个事实。事实上,我想了解大量类的情况,因此我希望有一种工具可以自动确定它。

独立工具或 Eclipse 插件或功能都很棒。

提前致谢。

EDIT 希望展示我想要的目的:

我有一个巨大的单体 jar,其中包含许多(本质上)完全不相关的功能。我想将它分解成几个更小、更易于管理且更自连的 jar 。

不幸的是,我不能简单地根据包来分解它,因为许多包本身也不是自连贯的。也就是说,例如,有一个“com.acme.utils”包。该包中的两件事可能没有任何共同点,除了它们在某种意义上都是“实用程序”这一事实。一个可能是用于某些特定业务功能的实用程序,另一个可能是 TCP/IP 实用程序,另一个可能是一组字符串实用程序,另一个可能是一些完全不相关的业务功能。

还有一堆这样的包。因此,当您从包的角度来看导入的传递性时,它们会无限制地滚雪球,因此整体 jar 中的所有内容或多或少都依赖于整体 jar 中的其他所有内容。

因此,我想首先从 的角度而不是 的角度考虑导入的传递性。这样我应该能够更轻松地确定哪些类需要从现有的包中重组为新的、更连贯的包,然后我可以通过包/包集将整体 jar 分开。

最佳答案

我们将声纳用于软件指标。 http://www.sonarsource.org/

关于java - 确定传递 Java 导入的工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391044/

相关文章:

java - 等待 Selenium 对给定元素不起作用

c# - 清除 Crystal Reports ReportDocument 对象使用的资源的最佳方法是什么?

java - 可以在不包含 JVM 的计算机中运行桌面应用程序

java - Spring Webservicetemplate连接重置错误

python - zipimporter 找不到/加载子模块

java - 声明的包裹与预期的包裹不匹配

c++ - 如何在 VB.net 中包含/导入 C++ 应用程序

c++ - 适用于复杂 C++ 项目的动态死代码消除工具

c# - Collection<T> 与 List<T> 您应该在界面上使用什么?

java - 如何映射两个类中的所有可用字段(无继承)