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

从Java项目自动创建完整的类图,java,uml,class-diagram,Java,Uml,Class Diagram,是否有一种从Java项目自动创建完整类图的解决方案 我花了大量时间上网,尝试了Papyrus、Jar2UML、UML2Tools、DiaGen、jGraps和类可视化工具,但还没有找到任何当前有效的解决方案。尽管提到的大多数工具都可以工作(有些工具目前不工作),但它们不会自动生成完整类层次结构的图表。我意识到这可能是圣杯,可能需要参数化,但我认为这一天应该是可能的 更广泛使用的要求是: 目前正在工作 易于使用,或者是关于如何做到这一点的最新教程 不需要手动编码 单机版或Eclipse/NetB

是否有一种从Java项目自动创建完整类图的解决方案

我花了大量时间上网,尝试了Papyrus、Jar2UML、UML2Tools、DiaGen、jGraps和类可视化工具,但还没有找到任何当前有效的解决方案。尽管提到的大多数工具都可以工作(有些工具目前不工作),但它们不会自动生成完整类层次结构的图表。我意识到这可能是圣杯,可能需要参数化,但我认为这一天应该是可能的

更广泛使用的要求是:

  • 目前正在工作
  • 易于使用,或者是关于如何做到这一点的最新教程
  • 不需要手动编码
  • 单机版或Eclipse/NetBeans/IntelliJ插件
  • 免费的

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

事实上,我不确定将一个项目的所有类都放在一个类图中是一个好主意,因为很多类的结果都是不可读的,你可以用我的工具来实现这一点。下载/安装/运行后:

  • 创建新项目
  • 在全局菜单语言中选择Java
  • 对于出现的第一个目录对话框,按取消按钮(您没有java目录),然后对于第二个目录对话框,选择包含要建模的所有java源的根目录,然后等待结束
  • 在左边的浏览器中,在任何已创建的类视图或您自己创建的新类视图中,单击鼠标右键并选择“新建类图”,然后双击以打开它
  • 可能您需要在图中隐藏类的详细信息以限制其大小(您可以稍后这样做,但最好现在就这样做,以防您有很多类),在这种情况下,用鼠标右键单击图表或在其上单击浏览器以编辑图形设置,并将设置设置为“是”“隐藏类属性”和“隐藏类操作”,然后确认(按钮“确定”)
  • 使用顶部的双目按钮(靠近打印按钮),将种类更改为类,然后使用按钮搜索,然后标记它们,然后关闭
  • 进入打开的图表(显示在窗口的右侧),单击鼠标右键并选择“添加标记元素”,将类放置在随机位置,然后再次单击鼠标右键并选择“自动布局”(当然,您也可以自己移动类)
正如您所看到的,绘制了类之间的所有关系,而不仅仅是泛化/实现。如果您只想要它们,而不需要手动逐个隐藏所有其他关系,您可以开发一个插件,标记所有类和模型的泛化/实现,然后更改我给出的过程:

  • 编辑图形设置时,也会进入第二个选项卡并将“绘制所有关系”设置设置为“否”
  • 而不是使用浏览器搜索(双目按钮)来选择所有的他类使用你的插件
无论如何,再次强调,将所有类显示在一个图中是一个坏主意,除非只有很少的类

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



注意,您也可以在不使用UML建模器的情况下使用来制作图表,尽管BoUML在这方面做得不错,但对于大型项目来说,它并不漂亮

要获得从源代码完全自动创建基本但完整的类图的更好解决方案,请尝试我用Java编写的简单提取器:

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

注:

  • 无命令行选项-在代码中克隆并运行设置源文件夹
  • 这将生成用于GraphViz(dot)的gv文件,可在以下位置获得:

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

使用IntelliJ visualiser时缺少什么?有用于此的工具,但它们不是免费的。他们中的一些人提出了一个功能较少的免费/社区版本,因此您可能需要重做缺少的功能。试试Visual Paradigm,它的免费版本在前30天是完全功能的。以“是否有”开头的问题在这里被视为离题。感谢您的评论,不幸的是,这些都不是可行的解决方案(而且审判并不等于免费).由于这里发布了非常类似的问题,我确实认为这可能与编码社区有关?感谢bruno的回答,我猜在第二点和第三点之间还有一个额外的操作,可能是工具->反向工程Java?我这样做,生成了我项目的填充层次结构,但是当单击/创建新类图,它总是显示为空。@Yost777是的,你是对的,我错过了相反的调用(有趣)。当然,当你创建一个图时,它是空的,没有魔法水晶球知道你想要什么,第一个列表中的最后两个步骤(使用按钮双目..进入打开的图..)标记所有类以将它们放入图表中感谢您的详细说明-这很有效(发现图标描绘的是双筒望远镜也很好!)我还能够让Doxygen使用GraphViz,尽管它似乎只是为单个类可视化直接连接的类。因此,到目前为止,BoUML确实是完成这项工作的最佳选择,包括大量的定制,尽管它确实看起来是一个完整的类概述,但可以制作更好的东西。