# 程序流程图自动生成技术研究
最近工作中有画出所有函数流程图的需求,由于需要化的流程图太多,又没有足够的时间来完成这个工作,因此想要通过一些技术手段来自动化处理一些流程图绘制的工作量。
## 初步尝试
最初想法是我可以利用 clang 来编译整个 RT-Thread 项目,生成中间过程的 AST,然后对 AST 进行处理,产生调用图,生成类似于 .dot 的文件作图([参考 stack overflow](https://stackoverflow.com/questions/5373714/how-to-generate-a-calling-graph-for-c-code)),或者是生成 markdown 兼容的流程图语法形式,折腾了一番短时间没有能给出很好的结果。
以下面的例子来说明如何生成函数调用图:
```c
static void D() { }
static void Y() { D(); }
static void X() { Y(); }
static void C() { D(); X(); }
static void B() { C(); }
static void S() { D(); }
stati