I need to automatically construct flowcharts out of C++ code, ideally one flowchart per source file. Is there any tool (preferably C++/Python and either open-sourced or highly configurable - so I may change the look) that I can use to create flowcharts?
clang/llvm
can generate graphviz dot files.
Example:
clang -S -emit-llvm -o hello.ll hello.cpp
opt hello.ll -dot-cfg -o hello.dot
This will output several .dot
files, one for each function defined in hello.cpp
.
You can also generate dominance graph, post dominance graph and more (see here).
After you have your .dot
files you can use dot
to convert it to a .png
file.
The .dot
file itself contains only the structure of the graph, so the output of dot
should be highly configurable (but I am not really familiar with it).