Java类和方法的依赖关系图

时间:2010-03-02 21:14:21

标签: java dependencies analyzer

我有一个我已经工作了一段时间的Java项目。设计开始时相当不错,但随着变化而慢慢退化。我正在寻找一种可以分析项目的工具。拥有不同类/方法的依赖关系的地图真的很不错。我觉得某些方法只是为了实现一个非常具体的目标。我想消除不必要的代码并使我的设计更好。

任何建议都会很棒!谢谢!

8 个答案:

答案 0 :(得分:5)

您可能需要查看JDepend。它专门用于解决您所面临的问题。

作为一名顾问,我常常被抛入庞大​​的遗留代码库。通常我做的第一件事就是在其上运行JDepend以试图了解代码库和所有依赖项。

祝你好运。

答案 1 :(得分:2)

根据系统的大小,可以使用许多工具。他们的祖父都是Structure101,一种商业产品。

http://structure101.com

我在一些大型项目中使用过它 - 它很复杂但很容易是我所知道的所有工具中最全面的。它可以绘制一个巨大的架构,并让你解开一些复杂的东西。它有一个名为reStructure101的姐妹产品,您可以在其中进行假设情景。

一个不错的竞争对手是Stan4j。它远没有那么完整,但做得更好一些,尤其是在班级一级显示依赖关系。

http://www.stan4j.com

(我拥有这两种产品,但两者都没有商业联系)

查看复杂依赖关系的另一种方法,特别是在项目级别,是依赖关系结构矩阵(DSM)。虽然S101可以做DSM,但Lattix有更多支持 - 它可以处理Spring和Hibernate依赖:

http://lattix.com/

(我没有使用过lattix - 它们很难评估它,这很奇怪,因为我在一些非常大系统上工作)

如果您的软件相当小,并且您对简单的课程级别更感兴趣,那么像Architexa这样的东西可以帮助您更好地理解结构:

http://www.architexa.com/

最后,如果您想自己动手,可以使用ASM轻松完成此操作。它甚至包括一个依赖矩阵工具,它在包级别跟踪:

http://asm.ow2.org/doc/tutorial-asm-2.0.html (参见nify依赖矩阵的页面)

这是它的来源 - 它非常简单,但很聪明。它可以解决字节码问题。 http://cvs.forge.objectweb.org/cgi-bin/viewcvs.cgi/asm/asm/examples/dependencies/src/org/objectweb/asm/depend/

答案 2 :(得分:1)

Doxygen可以提供帮助,尤其是对类和方法之间依赖关系的图形表示。

答案 3 :(得分:1)

这不是一个完美的答案,但它可能有助于快速检查。如果您使用Eclipse进行开发,则可以通过选择其名称并按Ctrl-Alt-H(或右键单击并选择“打开调用层次结构”)来查看方法的调用图。您可以使用打开的视图来查看调用方法的内容以及方法调用的方法。

答案 4 :(得分:1)

有几种优秀的Java分析器。到目前为止,我一直在玩PMD并且运气不错。

答案 5 :(得分:1)

您可能还想尝试FindBugs。这些以及许多其他问题都有很多帮助。

答案 6 :(得分:0)

我们使用这个免费的小项目

http://www.devx.com/opensource/Article/33729

答案 7 :(得分:-1)

查看Apache Ivy