主权项 |
应用程序切片技术的静态缺陷检测方法,其特征在于,该方法包括: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、如果当前控制流节点为汇合节点,则按照当前缺陷状态的状态条件进行状态合并。 |