发明名称 基于静态分析的冗余代码缺陷检测方法
摘要 基于静态分析的冗余代码缺陷检测方法,涉及基于静态分析的冗余代码缺陷检测方法,为了解决目前缺少成熟的对冗余代码及相关缺陷检测的方法的问题,它包括:步骤1、输入待测试程序,将其解析为抽象语法树;步骤2、分析可能包含显式幂等操作的语句,检测显式幂等操作;步骤3、对局部定义的变量,采用过程内部分析方法,检测冗余的赋值语句;步骤4、遍历程序的抽象语法树,在标准化后的程序依赖图的基础上查找包含缺陷的结构,检测死代码;步骤5、检测冗余的条件表达式;步骤6、检测隐式幂等操作;步骤7、检测冗余的函数参数;根据步骤2至7获得的六种缺陷的检测结果,给出缺陷检测报告。本发明适用于大规模程序代码的分析。
申请公布号 CN102231134A 申请公布日期 2011.11.02
申请号 CN201110216640.2 申请日期 2011.07.29
申请人 哈尔滨工业大学 发明人 苏小红;马培军;王甜甜;龚丹丹;逄龙
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 哈尔滨市松花江专利商标事务所 23109 代理人 牟永林
主权项 基于静态分析的冗余代码缺陷检测方法,其特征是它包括的具体步骤如下:步骤1:输入待测试程序,将其解析为抽象语法树;步骤2:分析可能包含显式幂等操作的语句,检测显式幂等操作:遍历程序的抽象语法树,对可能包含幂等操作的特定类型的抽象语法树子树进行处理,判断是否存在缺陷;步骤3:对局部定义的变量,采用过程内部分析方法,检测冗余的赋值语句:在抽象语法树的基础上,跟踪每一个被赋值的变量,如果在函数结束之前或重新被赋值之前没有被使用,则判为缺陷;步骤4:遍历程序的抽象语法树,对每一个函数子树创建对应的程序依赖图PDG,并将程序依赖图PDG进行选择结构、循环结构的标准化,在标准化后的程序依赖图PDG的基础上查找包含缺陷的结构,检测死代码;步骤5:在抽象语法树的基础上,分析程序的每条路径,计算赋值表达式和条件表达式的值,检测冗余的条件表达式:遍历程序的抽象语法树,跟踪抽象语法树中的赋值语句、条件分支中的谓词集合、以及条件语句中的变量值的界限,来检测分支语句中冗余——总是真或总是假的条件表达式;步骤6:对程序的路径进行分析,检测隐式幂等操作:遍历程序的抽象语法树,分析程序的每条路径,跟踪抽象语法树中的赋值语句,根据赋值语句维护一个等价类集合,该集合记录值相等的变量;当具有相同值的变量之间互相赋值时,则判为存在隐式幂等缺陷;步骤7:对每个函数的参数,采用过程内部分析方法,检测冗余的函数参数:在抽象语法树的基础上,采用过程内部分析方法,跟踪每一个函数参数,如果在函数结束之前或重新被赋值之前没有被使用,则判为存在冗余的函数参数缺陷;根据步骤2至7获得的六种缺陷的检测结果,给出缺陷检测报告。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号
您可能感兴趣的专利