Java类和方法的依赖关系图

问题描述 投票:8回答:8

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

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

java dependencies analyzer
8个回答
5
投票

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

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

祝好运。


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/


1
投票

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


1
投票

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


1
投票

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


1
投票

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


0
投票

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

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


-1
投票

看看Apache Ivy

© www.soinside.com 2019 - 2024. All rights reserved.