软件缺陷检测方法及装置制造方法及图纸

技术编号:12624626 阅读:125 留言:0更新日期:2015-12-31 17:59
本发明专利技术公开了一种软件缺陷检测方法及装置,属于计算机领域。所述方法包括:基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进行软件缺陷检测。本发明专利技术通过对所获初检代码集合包括的代码段中的路径进行危险路径筛选,并对危险路径进行路径可行性检测,进而在保证软件缺陷检测的准确性的前提下,减小缺陷检测所消耗的时间,提高软件缺陷检测的效率。

【技术实现步骤摘要】

本专利技术涉及计算机领域,特别涉及一种软件缺陷检测方法及装置
技术介绍
随着计算机技术的快速发展,开发人员开发出了越来越多的软件,为了保证这些 软件的质量,以及提高这些软件的可靠性,需要对这些软件进行软件缺陷检测,该软件缺陷 检测通常是指对该软件的源代码进行静态分析,通过静态分析可以确定该源代码中存在的 缺陷或者错误,进而将该缺陷或者错误进行上报,以进行后续的修改或改进等。目前,软件缺陷检测的操作可以为:根据事先存储的指定错误类型,从待检测源代 码中,确定多个目标变量,对于该多个目标变量中的每个目标变量,从待检测源代码中,按 照该待检测源代码的执行顺序,获取该目标变量的第一个定值点与该目标变量的多个引用 点之间的指令,该定值点是对该目标变量进行赋值的点,该引用点是引用该目标变量的点, 将获取的指令中与该目标变量相关的指令组成指令集,从而将该多个目标变量分别对应的 指令集组成初检指令集,之后,对于该初检指令集中的每个指令集,检测该指令集中所有可 能的路径是否可行,当该指令集中存在可行的危险路径时,确定该指令集的这条可行路径 上的引用点存在软件缺陷,当该指令集中所有可能的危险路径均不可行时,确定该指令集 不存在软件缺陷,从而完成对待检测源代码的软件缺陷检测。由于指令集中所有可能的路径中不仅可以包括危险路径,还可以包括安全路径, 而安全路径不会造成错误的发生,因此,对该指令集中所有可能的路径进行检测,会增加软 件缺陷检测的工作量,同时也会消耗较长的时间,降低软件缺陷检测的效率。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种软件缺陷检测方法及装置。 所述技术方案如下:第一方面,提供了一种软件缺陷检测方法,所述方法包括:基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中 包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到 所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进 行软件缺陷检测。 结合第一方面,在上述第一方面的第一种可能的实现方式中,所述基于指定错误 类型,从待检测源代码中,获取初检代码集合,包括: 基于指定错误类型,从待检测源代码中,确定多个目标变量; 对于所述多个目标变量中的每个目标变量,从所述待检测源代码中,获取所述目 标变量的多个定值点和多个引用点,所述定值点为对所述目标变量进行赋值的点,所述引 用点为引用所述目标变量的点; 基于所述指定错误类型和所述目标变量的多个定值点,从所述待检测源代码中, 确定所述目标变量的潜在错误源; 基于所述多个目标变量、所述多个目标变量的潜在错误源和所述多个目标变量的 多个引用点,确定初检代码集合。 结合第一方面的第一种可能的实现方式,在上述第一方面的第二种可能的实现方 式中,所述基于所述指定错误类型和所述目标变量的多个定值点,从所述待检测源代码中, 确定所述目标变量的潜在错误源,包括: 基于所述指定错误类型和所述目标变量的多个定值点,确定所述多个定值点的错 误属性; 基于所述多个定值点的错误属性,从存储的错误属性与安全特性之间的对应关系 中,获取所述多个定值点的安全特性; 基于所述多个定值点的安全特性,将所述多个定值点中安全特性为危险的第一个 定值点确定为所述目标变量的潜在错误源。 结合第一方面至第一方面的第二种可能的实现方式中的任一种可能的实现方式, 在上述第一方面的第三种可能的实现方式中,所述对所述代码段进行危险路径筛选,得到 所述代码段的指令集,包括: 对所述代码段中的路径进行二分决策图BDD标注,得到多个BDD路径标注; 从所述多个BDD路径标注中,选择定值点的路径标注,得到多个第一路径标注,以 及从所述多个BDD路径标注中,选择引用点的路径标注,得到多个第二路径标注; 基于所述多个第一路径标注和所述多个第二路径标注,对所述代码段进行危险路 径筛选,得到所述代码段的指令集。 结合第一方面的第三种可能的实现方式,在上述第一方面的第四种可能的实现方 式中,所述对所述代码段中的路径进行二分决策图BDD标注,得到多个BDD路径标注,包 括: 确定所述代码段的潜在错误源的路径标注; 确定所述代码段包括的各个分支路径的路径标注; 基于所述潜在错误源的路径标注和所述各个分支路径的路径标注,对所述代码段 包括的各个分支路径所在的分支点、所述代码段中的定值点和引用点进行BDD标注,得到 多个BDD路径标注。 结合第一方面的第三种可能的实现方式,在上述第一方面的第五种可能的实现方 式中,所述基于所述多个第一路径标注和所述多个第二路径标注,对所述代码段进行危险 路径筛选,得到所述代码段的指令集,包括: 对于所述多个第二路径标注中的每个第二路径标注,从所述多个第一路径标注 中,选择与所述第二路径标注的前缀相同的第一路径标注,从选择的第一路径标注中选择 长度最长的第一路径标注; 基于选择的第一路径标注对应的定值点的安全特性,确定所述第二路径标注对应 的引用点的安全特性; 基于所述多个第二路径标注对应的引用点的安全特性,从所述多个第二路径标注 对应的引用点中,选择安全特性为危险的引用点; 将选择的引用点所在路径上的指令组成所述代码段的指令集。 结合第一方面的第五种可能的实现方式,在上述第一方面的第六种可能的实现方 式中,所述从所述多个第一路径标注中,选择与所述第二路径标注的前缀相同的第一路径 标注,包括: 基于所述多个第一路径标注的长度,对所述多个第一路径标注进行排序,得到路 径标注顺序; 基于所述路径标注顺序,从所述多个第一路径标注中,选择与所述第二路径标注 的前缀相同的第一路径标注。 第二方面,提供了一种软件缺陷检测装置,所述装置包括: 获取模块,用于基于指定错误类型,从待检测源代码中,获取初检代码集合,所述 初检代码集合中包括多个存在潜在缺陷的代码段; 筛选模块,用于对于所述初检代码集合中的每个代码段,对所述代码段进行危险 路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径; 检测模块,用于分别对所述每个代码段的指令集进行路径可行性检测,以对所述 待检测源代码进行软件缺陷检测。 结合第二方面,在上述第二方面的第一种可能的实现方式中,所述获取模块包 括: 第一确定单元,用于基于指定错误类型,从待检测源代码中,确定多个目标变量; 获取单元,用于对于所述多个目标变量中的每个目标变量,从所述待检测源代码 中,获取所述目标变量的多个定值点和多个引用点,所述定值点为对所述目标变量进行赋 值的点,所述引用点为引用所述目标变量的点; 第二确定单元,用于基于所述指定错误类型和所述目标变量的多个定值点,从所 述待检测源代码中,确定所述目标变量的潜在错误源; 第三确定单元,用于基于所述多个目标变量、所述多个目标变量的潜在错误源和 所述多个目标变量的多个引用点,确定初检代码集合。 结合第二方面的第一种可能的实现方式,在上述第二方面的第二种可能的实现方 式中,所述第二确定单元包括: 第一确定子单元,用于基于所述指定错误类型和所述目标变量的多个定值点,确 定所述多个定值点的错误属性; 获取子单元,用于基于所述多个定值点本文档来自技高网...

【技术保护点】
一种软件缺陷检测方法,其特征在于,所述方法包括:基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进行软件缺陷检测。

【技术特征摘要】

【专利技术属性】
技术研发人员:衷璐洁
申请(专利权)人:首都师范大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1