控制流图(control flow graph, CFG): 表示程序执行的流转过程,把所有的流转过程用图的结构来构建。包括顶点和边,顶点(vertex)可以来自于程序代码,语句块,函数,模块等;边用来表示模块等之间的流转,跳转,调用等。
如何将控制结构编程控制流图?
if结构:
包含reture,可通过一个亚节点将所有的终止结点引到一个点
while循环:
通过添加额外节点2使得结构更为清晰
do while循环:
for 循环:
初始判断和累加语句需要拆开表示
break and continue:将跳转指向一个目的地
switch:
例子:计算平均值和方差
实际中,代码行数比较多,所以会应用工具产生控制流图
soot为java程序自动产生控制流图,http://sable.github.io/soot