如何使用Doxygen从C代码生成流程图

时间:2018-07-13 04:55:31

标签: plugins doxygen graphviz flowchart

我是Doxygen的新手, 我对此几乎没有疑问-

  1. 我们可以使用Doxygen从C代码生成流程图吗?
  2. 如果是,是否需要任何插件?实际上,我为CallGraph安装了GraphViz。
  3. 如果要使用Doxygen生成流程图的任何相关链接,请在此处分享?
  4. 如果否,是否有任何工具可以使用C代码生成文档和流程图?

如果知道,请回答我。 预先感谢。

2 个答案:

答案 0 :(得分:1)

如@albert所述,

我们能够生成流程图,下面是从c代码以及下面提到的其他语言生成流程图的完整过程的链接-

https://sourceforge.net/p/moritz/discussion/572218/thread/6fad0579/?limit=25#4e46

Moritz是著名工具doxygen的“附加组件”。它将c / c ++源代码中的函数和方法的nassi shneiderman图生成为html文件,可以将其包含在软件dokumentaion中,也可以使用html浏览器进行简单的介绍。 莫里茨的特点是:

  1. Moritz是众所周知的工具doxygen的“附件”。
  2. Moritz支持生成图表,例如nassi shneiderman或类似uml的活动图表
  3. 可用于许多编程语言,例如C / C ++,Python,Matlab或pascal
  4. 作为控制台应用程序,Moritz可以用作由批处理或shel-script控制的一系列工具中的一个工具
  5. 通过其他xml文件进行的详细配置。

步骤2:

必须配置配置才能生成点文件。

步骤3:

从DOT文件中,我们可以使用Graphviz生成流程图。

答案 1 :(得分:0)

AFAIK,Doxygen不会生成flowcharts流程图在今天已经没有用了,因为它们总是太大而无法读取(在1950年代和1960年代使用,当时的计算机和程序要小得多)。任何实际程序都具有至少包含数千个节点的流程图,并且该流程图不可读,因此毫无用处。

自1960年代以来,我们一直使用structured programming来避免使用流程图。还记得Dijkstra在1968年发表的论文Go to considered harmful

注意一些事情:许多简单的C宏对应于流程图的某些子部分(大于单个节点)。

您可能想要control flow graph。但是,即使太大也无法阅读(因此在实践中,您可能需要一些缩放功能)。您不需要此CFG,因为实际上它也太大。

您可以开发自己的GCC plugin来生成控制流程图(或某种流程图),但是(由于C具有预处理器,并且这解释了Doxygen无法可靠生成的原因),您需要生成它在您的编译器中。编写这样的GCC插件可能要花费几个月的时间,并且生成的图形可能太大而无法保持可读性(因此肯定不会出现在用户文档中)。因此,在实践中,您不应浪费时间来开发这种无用的工具。

但是您不需要生成流程图(实际上是不可读的)。

如果您的文档需要流程图,则您的代码设计错误。要解释一些代码,请考虑在文档中编写pseudocode。或使用更高级别的概念(例如automatatree traversal等)。最多(但这通常是没有用的)在文档中添加一些非常简化的流程图(然后,当然,您需要自己绘制理想化的流程图)。