发明名称 应用程序切片技术的静态缺陷检测方法
摘要 本发明公开一种应用程序切片技术的静态缺陷检测方法,包括:A.获取待检测缺陷模式的缺陷特征;B.根据所述的缺陷特征,计算所有分支节点的路径条件,并生成切片准则;C.按照所述的切片准则,遍历控制流图进行程序切片,对控制流图进行重构,得到已重构的控制流图;D.利用所述已重构的控制流图,应用缺陷状态迭代算法,进行缺陷模式状态机计算;E.若当前控制流图节点为非汇合节点,则将所有缺陷状态中的状态条件进行汇聚及更新操作;F.如果当前控制流图节点为汇合节点,则按照当前缺陷状态的状态条件进行状态合并。采用该方法能够在一定程度上提高缺陷检测的效率,并减少基于路径合并策略的路径敏感检测方法的误报。
申请公布号 CN102110051B 申请公布日期 2014.02.05
申请号 CN201010624200.6 申请日期 2010.12.31
申请人 北京邮电大学 发明人 宫云战;赵云山;金大海;肖庆;杨朝红;刘莉
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京汇泽知识产权代理有限公司 11228 代理人 程殿军
主权项 应用程序切片技术的静态缺陷检测方法,其特征在于,该方法包括:A、获取待检测缺陷模式的缺陷特征;B、根据所述的缺陷特征,计算分支节点处的路径条件,并生成切片准则;根据上述计算得到的缺陷特征,遍历控制流图中的所有分支节点,根据分支语句块Stmt(n)中是否包含缺陷特征,来确定是否为路径条件,记为Pc(n),该步骤B进一步包括;B1、按节点序遍历控制流图,查询所有出度大于2的节点,将其加入分支语句集合BranchList,其中可能包含if‑else、switch条件分支语句,以及while、do‑while、for循环语句;B2、将B1得到的BranchList倒置,然后依次遍历其中的每个分支节点SplitNode,查询其所包含的语句块Stmt(SplitNode)是否包含缺陷特征Df(FSM) ;如果不包含,则执行步骤B3;否则执行步骤B4;B3、当前分支语句块不包含缺陷特征信息,设置其路径条件IsPc()=false,使其在后续的程序切片时可以根据此路径条件标志快速切片掉;B4、当前分支语句块内包含缺陷特征信息,因此将当前分支的条件变量加入路径条件集合PCSet,同时设置IsPc()=true;当所述BranchList遍历完毕,则将缺陷特征Df(FSM)与路径条件集合PCSet合并,从而得到切片准则SCSet ;C、根据所述的切片准则,遍历控制流图进行程序切片 ,对控制流图进行重构 ,得到已重构的控制流图;D、利用所述已重构的控制流图,应用缺陷状态迭代算法,进行缺陷模式状态机计算;E、若当前控制流节点为非汇合节点,则将所有缺陷状态中的状态条件进行汇聚及更新操作;F、如果当前控制流节点为汇合节点,则按照当前缺陷状态的状态条件进行状态合并。
地址 100876 北京市海淀区西土城路10号