[发明专利]应用程序切片技术的静态缺陷检测方法有效
申请号: | 201010624200.6 | 申请日: | 2010-12-31 |
公开(公告)号: | CN102110051A | 公开(公告)日: | 2011-06-29 |
发明(设计)人: | 宫云战;赵云山;金大海;肖庆;杨朝红;刘莉 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇泽知识产权代理有限公司 11228 | 代理人: | 程殿军 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用程序 切片 技术 静态 缺陷 检测 方法 | ||
1.应用程序切片技术的静态缺陷检测方法,其特征在于,该方法包括:
A、获取待检测缺陷模式的缺陷特征;
B、根据所述的缺陷特征,计算分支节点处的路径条件,并生成切片准则;
C、根据所述的切片准则,遍历控制流图进行程序切片,对控制流图进行重构,得到已重构的控制流图;
D、利用所述已重构的控制流图,应用缺陷状态迭代算法,进行缺陷模式状态机计算;
E、若当前控制流图节点为非汇合节点,则将所有缺陷状态中的状态条件进行汇聚及更新操作;
F、如果当前控制流图节点为汇合节点,则按照当前缺陷状态的状态条件进行状态合并。
2.根据权利要求1所述的应用程序切片技术的静态缺陷检测方法,其特征在于,所述步骤A中的根据待检测缺陷模式获取其缺陷特征的过程具体为:
A1、根据缺陷模式状态机FSM的创建条件,检测程序中是否有缺陷模式关联的变量,该缺陷相关变量即为缺陷特征DefectFeature,记为Df(FSM)。
3.根据权利要求1所述的应用程序切片技术的静态缺陷检测方法,其特征在于,所述步骤B中,根据步骤A计算得到的缺陷特征,遍历控制流图中的所有分支节点n,根据分支语句块Stmt(n)中是否包含缺陷特征,来确定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。
4.根据权利要求1或3所述的应用程序切片技术的静态缺陷检测方法,其特征在于,步骤C中根据步骤A和步骤B得到的缺陷特征及路径条件,生成切片准则,然后根据每个控制流节点的数据流信息进行程序切片,进一步包括:
C1、按节点序遍历控制流图,获取每个控制流节点的关联变量信息RelVarSet;
C2、通过比较步骤B中的切片准则SCSet与当前节点的RelVarSet的包含关系进行程序切片,如果二者交集为空则执行步骤C4;否则,执行步骤C3;
C3、当前节点的数据流信息集合RelVarSet中包含与缺陷检测或路径条件有关的数据流信息,因此不应该被切片掉,继续执行步骤C2;
C4、当前节点的数据流信息与缺陷检测及路径条件均无关,因此应该被切片掉,即将被切片掉语句的前驱及后继相连接;切片过程中如果遇到条件分支节点,则通过步骤B计算得到的路径条件标志IsPc()来决定是否可以对整个条件分支语句块进行快速切片。
5.根据权利要求1所述的应用程序切片技术的静态缺陷检测方法,其特征在于,步骤E中,从控制流图头节点依次进行状态迭代,每个缺陷状态都关联了当前控制流节点的路径条件,用当前节点每个变量的抽象取值来表示状态条件;如果当前节点为顺序控制流节点:则进一步包括:
E1、状态条件汇聚:将当前控制流节点n的所有前驱节点进行状态条件合并,得到新的状态条件作为n的初始状态条件;
E2、状态条件更新:根据当前控制流节点n的数据流信息,更新步骤E1中计算得到的初始状态条件,并根据状态迁移条件判断是否会发生状态迁移;如果状态迁移到Error状态,则上报一个检测点。
6.根据权利要求4所述的应用程序切片技术的静态缺陷检测方法,其特征在于,步骤F中如果遇到控制流汇合节点,则根据状态属性State Attribute与步骤C1得到切片准则SCSet的包含关系,决定是否进行状态合并,其进一步包括:
F1、获取所有前驱节点的缺陷状态,如果不是相同状态,则只进行状态条件合并操作,否则执行步骤F2;
F2、如果前驱节点的缺陷状态相同,进一步检查其状态属性Attr(State)是否包含于切片准则SCSet,如果是包含关系则不进行状态合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010624200.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种叶片辊轧模具进、排气边缘型面的设计方法
- 下一篇:矿用自动排水用操作台