[发明专利]应用程序切片技术的静态缺陷检测方法有效

专利信息
申请号: 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,如果是包含关系则不进行状态合并。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201010624200.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top