我目前正在重构一个大型 Java 应用程序。我已将其中一个中心(Eclipse)项目拆分为大约 30 个单独的“组件”,但它们仍然高度相互依赖。为了更好地了解什么取决于我正在寻找某种方式来绘制编译时依赖关系。
到目前为止,我发现的所有工具都能够绘制包或类依赖关系或 Eclipse 插件之间的依赖关系,但是我的想法应该只是查看每个 Eclipse 项目的类路径设置并从中构建一个更粗粒度的图。
稍后我会更深入,但是现在这只是意味着我无法看到所有树木的森林。
我目前正在重构一个大型 Java 应用程序。我已将其中一个中心(Eclipse)项目拆分为大约 30 个单独的“组件”,但它们仍然高度相互依赖。为了更好地了解什么取决于我正在寻找某种方式来绘制编译时依赖关系。
到目前为止,我发现的所有工具都能够绘制包或类依赖关系或 Eclipse 插件之间的依赖关系,但是我的想法应该只是查看每个 Eclipse 项目的类路径设置并从中构建一个更粗粒度的图。
稍后我会更深入,但是现在这只是意味着我无法看到所有树木的森林。
查看JBoss Tattletale。它可能无法满足您的所有要求,但值得一试。虽然它仍然相对较新。
该工具将为您提供可以帮助您的报告
我相信会做你想做的一个工具是理解。它不是免费的,但您可以在投入任何资金之前下载免费试用版。
看看依赖查找器
我不确定是否有(n Eclipse)类路径分析工具。MattK提到的理解
可能会有所帮助。
在此处引用的所有静态代码分析工具中,我最接近的是JarAnalyzer(虽然没有图表),它能够检测jar 之间的“物理依赖关系”。
听起来像是Degraph的用例。它分析了一堆类文件和 jar,并可视化了依赖关系。
使它适合您的用例(我认为)的原因是可以定义要捆绑在一起的任意类组。因此,您可以重现您的 jar 结构,查看依赖关系,尤其是循环依赖关系。
您可以展开组以查看其包含的类或折叠它们以简化视图。
要快速了解可能的情况,请查看Degraph 示例。
Log4j 的示例:
JDeps已经包含在 JDK 中,并显示了 JAR 依赖项。例如:
jdeps -R -cp "my\jar\dir\*;my\other\jar\dir\*" my\classes\dir
查看类依赖分析器 (CDA): http: //www.dependency-analyzer.org/
我发现它对整理罐子非常有用。
为了记录(以及改进这个知识库),我发现 Shrimp 非常有帮助: http ://www.thechiselgroup.org/shrimp
此外,为了方便检查依赖,Byecycle 值得一试,但似乎不再更新: Byecycle
这两个工具还提供 Eclipse 集成。