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

Plugins 如何使用doxygen从C代码生成流程图,plugins,doxygen,graphviz,flowchart,Plugins,Doxygen,Graphviz,Flowchart,我是多西根的新手, 我对此几乎没有疑问- 我们可以使用Doxygen从C代码生成流程图吗 如果是,是否需要任何插件?实际上我为CallGraph安装了GraphViz 如果有使用Doxygen生成流程图的相关链接,请在此处共享 如果没有,是否有工具可以使用C代码生成文档和流程图 如果你知道,请回答我。 提前感谢。好的,强氧剂不会产生流程图如今毫无用处,因为它们总是太大而无法阅读(它们在20世纪50年代和60年代被使用,当时计算机和程序的体积要小得多)。任何实用的程序都有一个至少有数千个节点的流程

我是多西根的新手, 我对此几乎没有疑问-

  • 我们可以使用Doxygen从C代码生成流程图吗
  • 如果是,是否需要任何插件?实际上我为CallGraph安装了GraphViz
  • 如果有使用Doxygen生成流程图的相关链接,请在此处共享
  • 如果没有,是否有工具可以使用C代码生成文档和流程图
  • 如果你知道,请回答我。
    提前感谢。

    好的,强氧剂不会产生流程图如今毫无用处,因为它们总是太大而无法阅读(它们在20世纪50年代和60年代被使用,当时计算机和程序的体积要小得多)。任何实用的程序都有一个至少有数千个节点的流程图,这是不可读的,所以毫无用处

    自20世纪60年代以来,我们一直避免使用流程图。还记得Dijkstra 1968年的论文吗

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

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

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

    但是您不需要生成流程图(它们在实践中是不可读的)


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

    正如@albert所提到的,我们可以使用C代码生成流程图。下面是从C代码和下面提到的其他语言生成流程图的完整过程的链接

    Moritz是著名工具Doxygen的“附加组件”。它以HTML文件的形式在C/C++源代码中生成函数和方法的Nassi Shneiderman图表,这些图表可以包含在软件文档中,也可以使用HTML浏览器查看

    Moritz提供的功能包括:

  • Moritz是著名工具Doxygen的“附加组件”
  • Moritz支持生成类似Nassi Shneiderman或类似UML的活动图
  • 可用于许多编程语言,如C/C++、Python、Matlab或Pascal
  • 作为控制台应用程序,Moritz可以用作批处理或shell脚本控制的工具链中的一个工具
  • 通过附加XML文件进行详细配置
  • 步骤2:

    必须进行配置设置才能生成点文件

    步骤3:


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

    不生成s。流程图在今天是无用的(因为任何现实世界的程序都有太大的流程图)。自20世纪60年代以来,我们一直避免使用流程图(实际上,流程图太大,因此毫无用处)。所以,即使你生成了它,它也是不可读的(这就是为什么你不需要它),所以看起来你的问题真的很难回答。你的实际问题是什么?为什么需要生成流程图?为谁?请编辑您的问题以改进它。否则,它太宽泛了。是的,实际上我要开发一个自动化的文档工具,我需要一些像这样的基本工具。它不是一个基本工具,正如我在回答中所解释的,它是完全无用的。不要浪费时间(当然也不要浪费在文档上)存在一个外部包“Moritz”(Moritz),它可以根据doxygen结果创建流程图。我同意,但这是客户的要求,然后您需要与客户讨论,向他解释这一点,并了解他真正需要什么(我的猜测是,他不需要流程图,但需要一些其他的东西,可能是一个非常简化的流程图,不应该自动从源代码中提取,而是手动绘制…)。否则,你痛苦地制作的任何东西都不会让他满意,但从实际大小的程序生成流程图需要数月的工作(结果是无用的)存在一个外部包“Moritz”()可以根据强氧结果创建流程图。@albert:Moritz被记录为生成“nassi shneiderman函数和方法图表”,这些不是流程图(而是接近CFG的东西)