C++的UML免费反向工程工具(.h/.cpp ==> 类图)

17

有哪些工具可以从一组.h或.cpp文件创建UML类图?

我正在寻找这样的工具:

  • 免费
  • 可以在Windows上直接运行
  • 不需要任何特定的集成开发环境
  • 最好提供GUI界面

2
定义“free”。是指“免费啤酒”中的“free”,还是指“言论自由”中的“free”,还是两者都包括? - user142019
Lol,在这种情况下意为“免费啤酒”。不过两者都很好。 - Ben
如果您只需要一个类图,您也可以使用Doxygen。 - rve
6个回答

7

Dia 是一款非常好用的开源绘图工具,cpp2dia 可以从.h/.cpp 文件生成 UML 图。

我在 Linux 下使用它,不知道是否可在其他平台运行。

cpp2dia 没有图形界面,但其命令行使用非常简单。


@Webclectic,我在Windows上玩了一下Dia,它是一个非常好用和直观的工具!你说你在Linux上使用它,对于一个几乎没有Linux经验的人来说,设置和使用难度有多大?---我只想读取.cpp或.h文件并从中创建图表。不需要太多花哨的东西。---我一直在考虑是否可以在大学的Linux机器上使用它... - Ben
谢谢。关于 cpp2dia,设置和使用难度如何?如果第一次使用它,从下载到完成图表大概需要多长时间的粗略估计?(我有点怀疑,因为我已经尝试过约10个工具,但由于各种原因都没有成功)。 - Ben
1
如果你从零开始,大约两个小时就可以得到第一个图表。这包括在虚拟机中安装Ubuntu、安装Dia和cpp2dia,并将其应用于你的代码。在Ubuntu下安装Dia只需要一个命令:sudo apt-get install dia。cpp2dia需要ctags和graphviz,所以也要安装它们:sudo apt-get install exuberant-ctags graphviz。然后下载cpp2dia并阅读INSTALL文件,它非常简单。最后进入你的代码文件夹并执行它... - pnezis
2
我有两个文件mkvparser.cpp和mkvparser.hpp。你能解释一下如何使用dia或cpp2dia吗? - xXx_CodeMonkey_xXx
显示剩余4条评论

5

关于Bouml

Bouml声称已经在我的代码中发现了错误

反向工程只接受“真正的”C++,因此在类定义或操作定义中使用宏会产生错误,因为没有预处理步骤。

它不会直接将自定义数据类型的数据成员显示为属性

尽可能地使用关系进行反向工程,仅当类型不是已知类或不是类(例如“int”)时才使用属性。

不要进行多个独立的反向工程,可以进行一个反向工程并指定多个顶层目录进行保留(每个指定的目录都会递归遍历)。

Bruno Pagès(Bouml的作者)


3

我开发了一款名为Doxygraph的工具,它可以解析Doxygen生成的XML,并将其转换成交互式UML类图,您可以在Web浏览器中查看或导入到任何可以读取Graphviz“dot”文件的软件中。


如果您能提供已编译的二进制文件,以便我们可以快速演示,那就太好了。 - Mike Trader
1
@MikeTrader 那个页面左下角有一个“实时示例”链接。 - Oktalist

3

我没有亲自尝试过,不过Umbrello看起来是一个可行的选择:http://uml.sourceforge.net/它是基于KDE库构建的,因此应该可以在Linux / Windows / Mac上运行。


我尝试了Umbrello并愿意推荐它。你可以将各种语言的源代码导入其中,但它不会自动为你创建UML CD。然而,你可以轻松地从导入的树中拖放需要显示的项,Umbrello将显示它们的“内在机理”,甚至只要你在屏幕上获得2个相关联的项目,它就会立即为你关联它们。参见此帖:https://dev59.com/dGDVa4cB1Zd3GeqPdndo - Sold Out

2
您可以尝试免费的ArgoUML,它具有漂亮的GUI,并且是用Java编写的,因此可以在任何系统上轻松运行。它能够从UML图生成C++代码;但是,目前反向工程C++源代码由子项目处理。该工具的最新快照可以从源代码库下载。然而,该工具仍在开发中,因此可能不像您期望的那样工作。

1
我已经实现了一个用于StarUML的模块,提供C ++的增量逆向工程支持。它还支持std容器。它仍在开发中,但您可能想尝试一下。http://starumlcmodule.sourceforge.net

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接