c++ - 如何使用 doxygen 从 C++ 源代码创建 UML 类图

标签 c++ uml doxygen graphviz class-diagram

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

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

如果有更好的工具可以更轻松地实现这一点,请告诉我。

最佳答案

嗯,这似乎是一个老问题,但是由于我最近几天一直在搞乱 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 文档确实是你的 friend ,所以请查看上述设置中的 Doxygen 文档 - 上次我查看时你可以找到详情请访问 http://www.doxygen.nl/manual/config.html .

关于c++ - 如何使用 doxygen 从 C++ 源代码创建 UML 类图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755913/

相关文章:

c# - 可以在 Visual C# 中绘制 UML 图,然后从中生成代码吗?

uml - 如何从 UML 类模型生成关系模型?

python - 如何在 Python 中记录和使用类似枚举的数据类型?

c++ - 将代码内的所有具体注释收集到表格中

c++ - 当数组对象的元素存储被重用时,它的生命周期是否结束?

c++ - const char[] 和 const char* 的区别

c++ - 如何以最好、最简单的方式在文件中搜索?

c++ - OpenMP 如何知道嵌套了多少个循环实例?

javascript - 用于 JavaScript 的 UML?

doxygen - 使用 EXCLUDE_SYMBOLS 的正确语法是什么?