【发布时间】:2011-06-12 22:59:24
【问题描述】:
我一直在寻找一些描述如何使用 doxygen 生成简单类图的材料,但找不到。有人可以帮忙吗?
我需要从一组 C++ 文件中创建如下所示的图表。
如果有更好的工具可以更轻松地实现这一点,请告诉我。
【问题讨论】:
-
您是否实现了这样的图表,包括有关属性和方法类型的信息?
标签: c++ uml doxygen graphviz class-diagram
我一直在寻找一些描述如何使用 doxygen 生成简单类图的材料,但找不到。有人可以帮忙吗?
我需要从一组 C++ 文件中创建如下所示的图表。
如果有更好的工具可以更轻松地实现这一点,请告诉我。
【问题讨论】:
标签: c++ uml doxygen graphviz class-diagram
嗯,这似乎是一个老问题,但是由于我最近几天一直在搞乱 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 的支持仍然有点不一致,所以希望这种情况最近可能有所改善。
正如其他 cmets 所提到的,其中一些设置(尤其是DOT_GRAPH_MAX_NODES)确实具有潜在的性能影响,因此 YMMV。
我倾向于讨厌“RTFM”风格的答案,所以对这句话表示歉意,但在这种情况下,Doxygen 文档确实是你的朋友,所以请查看上述设置中的 Doxygen 文档 - 上次我查看时你可以找到http://www.doxygen.nl/manual/config.html的详细信息。
【讨论】:
RECURSIVE 字段更改为 YES
Doxygen 创建继承图,但我认为它不会创建整个类层次结构。它确实允许您使用 GraphViz 工具。如果您使用 Doxygen GUI 前端工具,您将在 Step2: -> Wizard tab -> Diagrams 中找到相关选项。 DOT 关系选项位于专家选项卡下。
【讨论】:
引用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
【讨论】:
Enterprise Architect 将从导入的源代码构建 UML 图。
【讨论】:
我认为您需要编辑 doxys 文件并将 GENERATE_UML(类似的东西)设置为 true。并且您需要安装 dot/graphviz。
【讨论】:
投票率最高的 2 个答案是正确的。到今天为止,我唯一需要更改(从默认设置)是启用使用点生成而不是内置生成器。
一些重要说明:
html/inherits.html 或(来自网站导航)类 => 类层次结构 =>“转到文本类层次结构”中找到。T。
foo 继承自T 并且T 模板类型参数具有默认值,则将采用该默认值。如果有一个从foo<U> 继承的类型bar,其中U 与默认值不同,则bar 将有一个foo<U> 父级。 foo<> 和 bar<U> 不会有共同的父母。variant 实例都将显示为继承自variant<Ts...>。<...> 字符串,表示没有默认值的类型和非类型参数。【讨论】: