确定传递Java导入的工具?

时间:2012-09-12 14:57:09

标签: 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插件或功能都会很棒。

提前致谢。

编辑希望能够展示我想要的内容:

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

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

还有很多像这样的软件包。因此,当你从包装的角度来看待进口的传递性时,它们会无限制地滚雪球,所以整体罐子里的所有东西都或多或少都依赖于整体罐子里的其他东西。

因此,我首先考虑从的角度考虑导入的传递性,而不是的观点。这样我就能够更容易地确定哪些类需要从现有的包重新组织成新的,更连贯的包,然后我可以通过包/包来打破单片jar。

1 个答案:

答案 0 :(得分:2)

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