[发明专利]应用程序切片技术的静态缺陷检测方法有效
申请号: | 201010624200.6 | 申请日: | 2010-12-31 |
公开(公告)号: | CN102110051A | 公开(公告)日: | 2011-06-29 |
发明(设计)人: | 宫云战;赵云山;金大海;肖庆;杨朝红;刘莉 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇泽知识产权代理有限公司 11228 | 代理人: | 程殿军 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用程序 切片 技术 静态 缺陷 检测 方法 | ||
技术领域
本发明涉及软件测试技术,尤其涉及一种应用程序切片技术的静态缺陷检测方法,属于路径敏感方法在静态缺陷检测中的应用。
背景技术
软件测试是提高软件质量的重要手段,根据是否运行被测试程序,软件测试可以分为动态测试和静态测试。基于软件缺陷的静态分析方法可以针对小概率缺陷实施有效测试,受到了学术界和工业界的广泛关注。静态分析的效率是影响其能否应用于大型软件缺陷检测的关键,它与分析过程中的计算复杂度密切相关。由于静态分析需要抽象出完整的程序语义信息,该抽象语义信息往往是精确程序语义的“保守”近似,从而导致其计算量要远大于程序精确语义所表示的计算量,因此减少保守性分析时的计算量可以提高分析效率。根据Rice定理,静态分析针对程序的任何非平凡属性(例如:是否存在运行时错误),不可能做到既是可靠的(sound)又是完备的(complete),导致其计算结果可能会出现误报(false positive)和漏报(false negative)。大量的误报会使人对分析工具失去信心,而漏报会造成程序具有较高质量的假象,因此提高精度是完善静态分析功能的又一挑战。
路径敏感的缺陷检测方法从控制流图头节点依次进行状态迭代,每个缺陷状态都会关联当前控制流节点的所有数据流信息,在缺陷状态迭代计算时,与缺陷无关的数据流信息会在控制流上进行传递和计算,这种无关计算势必降低缺陷检测的效率。通过增加控制流节点构造新的路径,或重构控制流图以消除不可达路径的方法,也可实现路径敏感分析,但这是一种典型的以效率换精度的方法,限制了其在大型软件缺陷检测中的应用。
发明内容
有鉴于此,本发明的主要目的在于提供一种应用程序切片技术的静态缺陷检测方法,以提高路径敏感缺陷检测方法的效率及精度,在检测代码量较大程序时可以进一步减少分析时间并减少误报。
为达到上述目的,本发明的技术方案是这样实现的:
应用程序切片技术的静态缺陷检测方法,该方法包括:
A、获取待检测缺陷模式的缺陷特征;
B、根据所述的缺陷特征,计算分支节点的路径条件,并生成切片准则;
C、根据所述的切片准则,遍历控制流图进行程序切片,对控制流图进行重构,得到已重构的控制流图;
D、利用所述的已重构的控制流图,应用缺陷状态迭代算法,进行缺陷模式状态机计算;
E、若当前控制流图节点为非汇合节点,则将所有缺陷状态中的状态条件进行汇聚及更新操作;
F、如果当前控制流图节点为汇合节点,则按照当前缺陷状态的状态条件进行状态合并。
其中,所述步骤A中的根据待检测缺陷模式获取其缺陷特征的过程具体为:
A1、根据缺陷模式状态机FSM的创建条件,检测程序中是否有缺陷模式关联的变量,该缺陷相关变量即为缺陷特征DefectFeature,记为Df(FSM)。
其中,所述步骤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。
其中,步骤C中根据步骤A和步骤B得到的缺陷特征及路径条件,生成切片准则,然后根据每个控制流节点的数据流信息进行程序切片:进一步包括:
C1、按节点序遍历控制流图,获取每个控制流节点的关联变量信息RelVarSet;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010624200.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种叶片辊轧模具进、排气边缘型面的设计方法
- 下一篇:矿用自动排水用操作台