源代码转换成图-控制流图、数据流图

代码转换成图

graph:通常是控制流图(CFG)

  • 节点覆盖:执行每个语句
  • 边覆盖:执行每个分支
  • 循环:循环结构,如for循环、while循环等。

数据流覆盖:增加CFG

  • defs是为变量赋值的语句
  • uses是使用变量的语句

控制流图

if Statement
if

if-else
if-return
Loops
while
do-while

for
while-break-continue
switch
switch
try-catch
try-catch

数据流图

  • def:一个值存储在内存中
  1. x出现在赋值的左侧(x=44;)

  2. x是调用中的实际参数,该方法更改其值

  3. x是方法的形式参数(方法启动时的隐式定义)

  4. x是程序的输入

  • use:访问变量的值
  1. x出现在赋值的右侧

  2. x出现在条件测试中

  3. x是方法的实际参数

  4. x是程序的输出

  5. x是return语句中方法的输出

如果def和use出现在同一个节点上,def发生在use之后并且该节点处于Loop中,那么def和use是DU-pair

Example

code
CFG
CFG for Stats


版权声明:本文为weixin_43201090原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。