我有一个 Java 项目,我已经做了一段时间了。设计开始时还不错,但随着更改的进行而逐渐退化。我正在寻找某种可以分析项目的工具。拥有一张不同类/方法的依赖关系图真是太好了。我觉得某些方法只是为了实现一个非常具体的目标。我想消除不必要的代码并使我的设计更好。
任何建议都会很棒!谢谢!
我有一个 Java 项目,我已经做了一段时间了。设计开始时还不错,但随着更改的进行而逐渐退化。我正在寻找某种可以分析项目的工具。拥有一张不同类/方法的依赖关系图真是太好了。我觉得某些方法只是为了实现一个非常具体的目标。我想消除不必要的代码并使我的设计更好。
任何建议都会很棒!谢谢!
许多工具可用于此,具体取决于系统的大小。它们的祖父是Structure101,一种商业产品。
我在一些大型项目中使用过它——它很复杂,但很容易成为我所知道的所有工具中最全面的。它可以绘制一个巨大的架构,并让你解开一些复杂的东西。它有一个名为 reStructure101 的姊妹产品,您可以在其中执行假设场景。
一个不错的竞争对手是 Stan4j。它远没有那么完整,但做了一些更好的事情,特别是在类级别显示依赖上下文。
(我拥有这两种产品,但与任何一种都没有商业关系)
查看复杂依赖关系的另一种方法,特别是在项目级别,是依赖结构矩阵 (DSM)。虽然 S101 可以做 DSM,但 Lattix 有更多的支持——它可以处理 Spring 和 Hibernate 依赖项:
(我没有使用过 lattix - 他们很难评估它,这很奇怪,因为我在一些非常大的系统上工作)
如果您的软件相当小,并且您对简单的类级别更感兴趣,那么像 Architexa 这样的东西可能会帮助您更好地理解结构:
最后,如果您想自己开发,可以使用 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/
Doxygen可以提供帮助,尤其是在类和方法之间的依赖关系的图形表示方面。
这不是一个完美的答案,但它可能有助于快速检查。如果您使用 Eclipse 进行开发,您可以通过选择方法名称并按 Ctrl-Alt-H(或右键单击并选择“Open Call Hierarchy”)来查看方法的调用图。您可以使用打开的视图查看调用该方法的内容以及该方法调用的方法。
Java有几个很好的分析器。到目前为止,我一直在玩 PMD,并且运气不错。
您可能还想尝试FindBugs。对这些和许多其他问题有很大帮助。
我们使用这个免费的小项目
看看阿帕奇常春藤