如何使用doxygen从C ++源创建UML类图

问题描述 投票:74回答:5

我一直在寻找一些描述如何使用doxygen生成简单类图的材料,但却找不到。有人可以帮忙吗?

我需要从一组C ++文件中创建如下所示的图表。

如果有更好的工具来实现这一目标,请告诉我。

c++ uml doxygen graphviz class-diagram
5个回答
48
投票

Doxygen创建了继承图,但我认为它不会创建一个完整的类层次结构。它允许您使用GraphViz工具。如果您使用Doxygen GUI前端工具,您将在Step2: -> Wizard tab -> Diagrams中找到相关选项。 DOT关系选项位于“专家”选项卡下。


41
投票

引自this post(由doxygen自己的作者撰写):

run doxygen -g and change the following options of the generated Doxyfile:

    EXTRACT_ALL            = YES
    HAVE_DOT               = YES
    UML_LOOK               = YES

run doxygen again

31
投票

嗯,这似乎是一个古老的问题,但是因为我过去几天一直在搞乱Doxygen配置,而我的头仍然充满了当前的信息让我们有一个刺 -

我认为以前的答案几乎有它:

缺少的选项是在Doxyfile中添加COLLABORATION_GRAPH = YES。我假设你可以在doxywizard GUI中的某个地方做同等的事情(我不使用doxywizard)。

因此,作为一个更完整的示例,我倾向于使用的与UML输出相关的典型“Doxyfile”选项是:

EXTRACT_ALL          = YES
CLASS_DIAGRAMS      = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT             = YES
CLASS_GRAPH          = YES
COLLABORATION_GRAPH  = YES
UML_LOOK             = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS   = YES
DOT_GRAPH_MAX_NODES  = 100
MAX_DOT_GRAPH_DEPTH  = 0
DOT_TRANSPARENT      = YES

这些设置将生成“继承”(CLASS_GRAPH=YES)和“协作”(COLLABORATION_GRAPH=YES)图。

根据您的doxygen输出“部署”目标,设置DOT_IMAGE_FORMAT = svg也可能有用。使用svg输出,图表是“可伸缩的”,而不是像.png这样的位图格式的固定分辨率。显然,如果在IE以外的浏览器中查看输出,还有INTERACTIVE_SVG = YES,它将允许生成的svg图的“交互式缩放和平移”。我之前尝试过这个,并且svg输出在视觉上很有吸引力,但当时浏览器对svg的支持仍然有点不一致,所以希望这种情况最近可能有所改善。

正如其他评论所提到的,其中一些设置(特别是DOT_GRAPH_MAX_NODES)确实会对性能产生影响,因此YMMV。

我倾向于讨厌“RTFM”风格的答案,所以对这句话表示道歉,但在这种情况下,Doxygen文档确实是你的朋友,所以在上面提到的设置上查看Doxygen文档 - 上次我看到你可以在http://www.doxygen.nl/manual/config.html


4
投票

我想你需要编辑doxys文件并将GENERATE_UML(类似的东西)设置为true。你需要安装dot / graphviz。


4
投票

Enterprise Architect将根据导入的源代码构建UML图。

© www.soinside.com 2019 - 2024. All rights reserved.