我有一个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/
这不是一个完美的答案,但它可能有助于快速检查。如果您使用Eclipse进行开发,则可以通过选择其名称并按Ctrl-Alt-H(或右键单击并选择“打开调用层次结构”)来查看方法的调用图。您可以使用打开的视图来查看调用方法的内容以及方法调用的方法。
有几个很好的Java分析器。到目前为止,我一直在玩PMD并且运气不错。
您可能还想尝试FindBugs。这些以及许多其他问题有很多帮助。
Doxygen可以提供帮助,特别是对类和方法之间依赖关系的图形表示。
我们使用这个免费的小项目
看看Apache Ivy