我需要用C++ 代码自动构建流程图,理想情况下每个源文件一个流程图。是否有任何工具(最好是 C++/Python 以及开源或高度可配置的- 所以我可能会改变外观)可用于创建流程图?

我需要用C++ 代码自动构建流程图,理想情况下每个源文件一个流程图。是否有任何工具(最好是 C++/Python 以及开源或高度可配置的- 所以我可能会改变外观)可用于创建流程图?

clang/llvm可以生成graphviz点文件。
例子:
clang -S -emit-llvm -o hello.ll hello.cpp
opt hello.ll -dot-cfg -o hello.dot
这将输出几个.dot文件,每个文件对应于hello.cpp. 您还可以生成优势图、后优势图等(参见此处)。
拥有.dot文件后,您可以使用dot它来将其转换为.png文件。文件本身只包含图形的.dot结构,所以输出dot应该是高度可配置的(但我不是很熟悉)。
如果您不介意纯文本输出,'cflow' 将完成这项工作。它至少在 Debian 的存储库中,并且可能在大多数 Linux 发行版的存储库中。