[发明专利]基于程序切片的代码缺陷静态检测的并行化方法及装置有效
申请号: | 201210593048.9 | 申请日: | 2012-12-31 |
公开(公告)号: | CN103914372B | 公开(公告)日: | 2017-11-10 |
发明(设计)人: | 孙薇;梁彬;边攀 | 申请(专利权)人: | 北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 栗若木,曲鹏 |
地址: | 100193 北京市海淀区东北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 程序 切片 代码 缺陷 静态 检测 并行 方法 装置 | ||
技术领域
本发明涉及一种代码缺陷静态检测技术,尤其涉及一种基于程序切片的代码缺陷静态检测的并行化方法及装置。
背景技术
目前,代码缺陷静态检测系统普遍存在效率低下的问题,即海量的待分析执行路径需要消耗大量的时间和资源,尤其是在路径爆炸的情况下,静态分析往往是计算不可行的。随着软件规模及复杂度的加大,该问题将越来越严重。目前主流的缺陷检测系统仅依靠引入一些启发式规则和设定分析上界将分析工作限定在一个可接受的范围内。然而这种限定必然会使得部分路径未被分析,从而对检测精度造成影响,导致某些代码缺陷被漏报。
当前,计算机的计算能力得到了空前的提高,主要性能提升手段是引入并行化计算,但在代码缺陷静态检测领域,很少引入并行化来提高检测效率。其中一个主要原因是代码缺陷静态检测的过程耦合度非常高,难以将单个检测过程拆分成多个可以并行的子过程,导致传统的拆分计算过程的并行化方法不能直接应用于代码缺陷静态检测的并行化。
发明内容
本发明提供了一种基于程序切片的代码缺陷静态检测的并行化方法及装置,以克服因代码缺陷静态检测的过程耦合度非常高而无法将传统的拆分计算过程的并行化方法直接应用于代码缺陷静态检测的问题。
本发明提供了一种基于程序切片的代码缺陷静态检测的并行化方法,该方法包括:
利用程序切片技术,将检测对象切分成多个相互独立的子对象;以及
并行执行对各子对象的代码缺陷静态检测。
优选地,所述利用程序切片技术,将检测对象切分成多个相互独立的子对象,包括:
解析检测对象源程序代码,生成源程序的中间表述形式;
获取切片准则;以及
对于每个切片准则,通过程序切片技术获取与所述切片准则相关的程序代码子集,从而将所述检测对象切分成多个相互独立的子对象。
优选地,所述解析检测对象源程序代码,生成源程序的中间表述形式,包括:读取检测对象源程序代码,进行词法分析及语法分析,生成抽象语法树和控制流程图,在所述控制流程图的基础上,进行语义分析,生成程序依赖图;和/或
所述获取切片准则包括:从检测规则或已知类型缺陷中提取所述切片准则,或者接收用户自定义的所述切片准则;其中,所述切片准则包含起始点和/或兴趣点。
优选地,所述对于每个切片准则,通过程序切片技术获取与所述切片准则相关的程序代码子集,包括:
对于只包含起始点的切片准则,采用前向切片的方法遍历所述程序依赖图获取与对应切片准则相关的程序代码子集;
对于只包含兴趣点的切片准则,采用后向切片的方法遍历所述程序依赖图获取与对应切片准则相关的程序代码子集;或者
对于包含起始点和兴趣点的切片准则,采用砍片的方法遍历所述程序依赖图获取与对应切片准则相关的程序代码子集。
优选地,所述并行执行对各子对象的代码缺陷静态检测,包括:
并行运行多个代码缺陷检测引擎,对各个子对象进行缺陷检测。
本发明还提供了一种基于程序切片的代码缺陷静态检测的并行化装置,该装置包括:
切分模块,用于利用程序切片技术,将检测对象切分成多个相互独立的子对象;以及
检测模块,用于并行执行对各子对象的代码缺陷静态检测。
优选地,所述切分模块包括:
解析单元,用于解析检测对象源程序代码,生成源程序的中间表述形式;
获取单元,用于获取切片准则;以及
切分单元,用于对于每个切片准则,通过程序切片技术将所述检测对象切分成多个相互独立的子对象。
优选地,所述解析单元,具体用于:读取检测对象源程序代码,进行词法分析及语法分析,生成抽象语法树和控制流程图,在所述控制流程图的基础上,进行语义分析,生成程序依赖图;和/或
所述获取单元,具体用于:从检测规则或已知类型缺陷中提取所述切片准则,或者接收用户自定义的所述切片准则;其中,所述切片准则包含起始点和/或兴趣点。
优选地,所述切片单元,具体用于:
对于只包含起始点的切片准则,采用前向切片的方式遍历所述程序依赖图获取与对应切片准则相关的程序代码子集;
对于只包含兴趣点的切片准则,采用后向切片的方式遍历所述程序依赖图获取与对应切片准则相关的程序代码子集;或者
对于包含起始点和兴趣点的切片准则,采用砍片的方式遍历所述程序依赖图获取与对应切片准则相关的程序代码子集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司,未经北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210593048.9/2.html,转载请声明来源钻瓜专利网。