【问题标题】:Dependency map for Java classes and methodsJava 类和方法的依赖关系图
【发布时间】:2019-03-24 23:51:12
【问题描述】:

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

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

【问题讨论】:

  • 很多很棒的答案!感谢您的帮助!
  • 这有点不相关,但是 UML 工具 Umbrello 会为您的代码生成 UML 图。这在当时对我很有帮助。
  • 由于您最近的评论才发现这一点,但为了将来参考,您可以查看 Structure101。

标签: java dependencies analyzer


【解决方案1】:

您可能想查看JDepend。它是专门为解决您面临的问题而开发的。

作为一名顾问,我很容易陷入庞大的遗留代码库中。通常我做的第一件事是在它上面运行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/

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这实际上很有帮助。谢谢!
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      您可能还想试试FindBugs。对这些和许多其他问题有很大帮助。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            看看 Apache Ivy

            【讨论】:

            • Ivy 不是一个糟糕的依赖管理器,但它没有回答他的问题,他正在寻找可以分析他现有项目依赖关系的东西。
            猜你喜欢
            • 2019-03-31
            • 2018-10-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-28
            相关资源
            最近更新 更多