4

是否有某种工具可以指向一组 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 插件或特性都会很棒。

提前致谢。

编辑希望能显示我想要这个:

我有一个巨大的整体 jar,其中包含许多(基本上)完全不相关的功能。我想把它分成几个更小、更易于管理、更自洽的罐子。

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

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

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

4

1 回答 1

2

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

于 2012-09-12T15:05:10.920 回答