我需要自动从C++代码中构建流程图,最好是每个源文件一个流程图。是否有任何工具(最好是C++/Python,并且要么开源,要么高度可配置 - 这样我就可以改变外观)可以用来创建流程图?
![http://www.faqs.org/patents/img/20110088010_08.png](https://istack.dev59.com/pd4WB.webp)
clang/llvm
可以生成 graphviz dot 文件。
例如:
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发行版中都有。