如何从 Java 源代码生成序列图

Posted

技术标签:

【中文标题】如何从 Java 源代码生成序列图【英文标题】:How to Generate a Sequence Diagram from Java Source Code 【发布时间】:2013-06-23 02:29:33 【问题描述】:

我有一个关于从 Java 源代码生成序列图的问题。当我用谷歌搜索时,我看到有人告诉我使用视觉范式 (VP),但它不会为我生成序列图。我的 VP 中的某些步骤与手动操作不同。手册说要选择方法,但我的 VP 不允许在特殊类中选择方法。 Reverse Engineering Sequence Diagram from Java Source Code

有没有人有从 Java 源代码生成序列图的新想法?

【问题讨论】:

你确定要服从你那不允许选择方法的奇怪VP吗?那么起点是什么? 只选课!!! 【参考方案1】:

使用 Intellij 2019 有两个插件可以完成这项工作:

    SequenceDiagram(当前为 1.3)。 进入您要分析的类方法和 Tool>SequenceDiagram :

    ZenUML support(目前为2019.1.2)

【讨论】:

效果惊人。强烈推荐尝试!也适用于 android Studio 2.0 优秀的工具。非常感谢您的建议。 SequenceDiagram 1.3 与 Intellij 2019.1.3 配合得非常好。太棒了!【参考方案2】:

如果您正在使用或希望使用 Eclipse IDE,那么您可以安装 ObjectAid UML 插件,该插件可以从以下位置进行逆向工程:

Java 堆栈跟踪控制台 调试视图中的 Java 堆栈帧 从调用层次结构视图调用方法

还有更多。

见http://www.objectaid.com/sequence-diagram

【讨论】:

【参考方案3】:

我已经实现了一个基于 junit 测试的序列生成器,它为 pgf-umlsd 乳胶包示例生成序列图:

世界你好

@测试 @SequenceDiagram( Controller.class, Model.class ) 公共无效测试方法() 控制器 c = 新控制器(新模型()); c.init(); c.simpleBeanOperation();

https://github.com/sherif181/java-sequence-diagram-generator

【讨论】:

看起来很有趣。无法设置和使用它。安装和使用文档会有所帮助。 SDTEST 文件夹包含一个工作示例。您还需要一种方法来编译乳胶文件,例如 windows 上的 miktex 或真实操作系统上的 texlive 我同意@supernova。我不熟悉您在该项目中所做的事情,并且可以使用自述文件中的一些指令以 gradle 命令和有关如何生成图表的要求的方式...可能是一个很酷的项目,但没有文档可以开始我我迷路了,去别处看看。【参考方案4】:

试试这个工具,这个工具可以帮助你创建Java源代码到序列和类图,包括每个流程的执行时间。

按照文档中给出的步骤进行操作

http://maintainj.com/

【讨论】:

评估许可,7天无限制使用产品。【参考方案5】:

我使用的是免费的 Umlgraph,请参阅 http://www.umlgraph.org/

但我主要用它在 Javadoc 中生成类图。

要生成序列图,你必须在源文件中写很多行。

见http://www.umlgraph.org/doc/dns.html

您必须安装 Graphviz 才能使其工作。

【讨论】:

【参考方案6】:

UML-VP 可以很好地生成序列图。根据您的描述,我觉得您选择了用于将源文件呈现给工具的包目录。我遇到过类似的问题。解决方法是选择包文件夹上方的“src”文件夹,然后你可以看到一些非常漂亮的图表飞出来。祝你好运。

【讨论】:

【参考方案7】:

另一个从 Java 程序生成序列图的好工具是 JIVE:www.cse.buffalo.edu/jive

它可以作为 Eclipse 的插件使用,并且可以免费下载。还支持多线程Java程序的可视化。

注意:JIVE 为程序的执行生成图表。它还生成对象图,并具有其他有用的功能,例如基于查询的调试。抱歉,如果这不是您的想法。

【讨论】:

JIVE 适用于小程序。它挂在更大的程序上,例如,如果我在 JUnit 测试中使用 PowerMock。 您是否尝试使用 JIVE 的排除过滤器来抑制您不想看到的包的可视化?这可以从运行菜单完成:运行 -> 调试配置 -> JIVE 选项卡。如您所见,JIVE 预装了某些要排除的包,但是当您使用大型应用程序时,这通常是必要的,以防止挂起并保持可视化的可管理性。 是的,我排除了所有 PowerMock 软件包。 请参阅cse.buffalo.edu/jive/tutorials/managing_jive.html 以管理大型运行。如果这适用于您的情况,您可以尝试在一段时间内进行调试。或者您可能需要禁止显示更多包。只是一些建议。【参考方案8】:

我今天尝试了很多选项来使用 IntelliJ Idea 社区版从我现有的代码生成序列图和类图,以下是最终对我有用的解决方案:

仅 Intellij 社区版的特定版本与所需的插件兼容。

因此下载正确版本的 IDE 和插件以使其正常工作非常重要。

以下是对我有用的具有特定版本的完整软件集的链接,请注意我在我的 Mac Book Pro 上测试了这些:

    [IntelliJ Community Edition IDE]

    Code Iris 用于创建类图和可视化代码

    SequenceDiagram Plugin 用于在 IntelliJ 上生成 Seq 图 IDE。

【讨论】:

【参考方案9】:

有许多产品可以从 Java 源代码生成序列图。不幸的是,所有的好东西都要花很多钱。

如果您使用的是 Visual Paradigm 的社区版,它不允许您生成任何图表。您必须升级到付费版本之一。

您可以在此处比较付费版和免费版http://www.visual-paradigm.com/product/vpuml/features/?edition=ce

您需要购买支持代码工程的标准版 Visual Paradigm。

查看其中一些链接以获取也可以生成图表/源代码的替代程序。

Posiden UML http://www.gentleware.com

Argo UML http://argouml.tigris.org


其他资源

How can I generate sequence diagrams from Java source code?

Sequence Diagram Reverse Engineering

http://www.altova.com/umodel/sequence-diagrams.html

【讨论】:

【参考方案10】:

在VP中将Java源代码逆向为时序图时无法选择操作,可能是选择了错误的源文件夹造成的。只要您选择源的根文件夹(根据您的类的“包”声明),它就应该可以工作。顺便说一句,Visual Paradigm 提供订阅许可证,允许用户以相对较低的成本每月订阅许可证。

【讨论】:

以上是关于如何从 Java 源代码生成序列图的主要内容,如果未能解决你的问题,请参考以下文章

我们如何从可编辑的 Java 代码中生成 IntelliJ IDEA 中的序列图?

如何从Visual Studio中的UML类图生成C#源代码

如何在 Visual Studio 2013 中从 C# 解决方案生成序列图?

如何使用 puml 图生成 javadoc?

Java生成缩略图之Thumbnailator

如何从数据库中获取到数据生成饼状图?(Java web)