从 Java 项目自动创建完整的 class 图表

Automatic creation of complete class diagram from Java project

是否有从 Java 项目自动创建完整 class 图表的解决方案?

我花了很多时间在网上查找,尝试了 Papyrus、Jar2UML、UML2Tools、DiaGen、jGraps、Class-visualizer,但没有找到任何当前可用的解决方案。尽管提到的大多数工具都可以使用(有些目前无法使用),但它们不会自动生成完整 class 层次结构的图表。我意识到这可能是圣杯,可能需要参数化,但我认为今天应该可以实现。

更广泛使用的要求是:

如果没有类似的东西,我正在考虑创建这样的东西。

事实上我不确定将一个项目的全部 class 合并到一个 class 图是个好主意,因为很多 classes 结果是不可读的,你可以用我的工具 BoUML 来做到这一点。在你download/install/run之后它:

  • 创建一个新项目
  • select Java 在全局菜单中 Languages
  • 对于出现的第一个目录对话框,请按按钮 取消(您没有 java 目录)然后对于第二个目录对话框 select 包含你想要建模的 Java 的所有源的根目录,然后等待结束
  • 在左侧浏览器中任何创建的class视图或在您自己创建的新视图中单击鼠标右键并选择新建class图表并双击打开它
  • 可能您需要在图表中隐藏 classes 的详细信息以限制其大小(您可以稍后再做,但最好现在做,以防您有很多 classes ), 在这种情况下,请右键单击图表或在图表上单击浏览器以编辑 绘图设置 并将设置设置为 yes 隐藏classes属性隐藏classes操作然后确认(按钮ok)
  • 使用顶部的双筒按钮(靠近打印按钮),将 kind 更改为 class 然后使用按钮 搜索然后标记它们然后关闭
  • 进入打开的图表(显示在window的右侧部分)点击鼠标右键并选择添加标记元素放置classes在随机位置然后重新点击鼠标右键并选择自动布局(当然你也可以自己移动classes)

如您所见,绘制了 class 之间的所有关系,而不仅仅是 generalization/realization。如果你只想要它们而不需要例如手动隐藏所有其他关系,你可以开发一个标记模型的所有 classes 和 generalization/realization 的插件,然后更改程序 I给定:

  • 当您编辑 绘图设置时 也进入第二个选项卡并设置为 no 设置 draw all关系
  • 而不是使用浏览器搜索(双目按钮)来 select 所有他 class 使用你的 plug-out

无论如何,再次强调,将所有 classes 显示在一张图表中不是一个好主意,除非你的图表很少。

在页面 documentation 中,您有参考手册和(旧的)视频教程,包括两个专门用于 Java 和另一个关于编写插件的教程


请注意,您也可以使用 Doxygen 来制作图表,而无需使用 UML 建模器

虽然 BoUML 在这方面做得不错,但对于一个大型项目来说,它并不漂亮。

为了更好地从源代码自动创建基本但完整的 class 图,请尝试我在 Java 中组合的简单提取器: https://github.com/folterj/ClassDiagramExtractor

该项目使用反射,并从文件夹(和子文件夹)中的所有包生成图表。

备注:

  • 没有命令行选项 - 克隆 & 运行 在代码中设置源文件夹
  • 这会生成一个用于 GraphViz(点​​)的 gv 文件,可在此处获取:https://www.graphviz.org/

结果看起来不错,因为它将包组合在一起,甚至使用了颜色。