代码转换成图

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐