路径敏感检测方法和装置的制造方法_3

文档序号:8543617阅读:来源:国知局
片,以获得与可能错误语句相关的语句集合,并将与可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
[0081]进一步的,获得模块350,具体用于对可能错误语句进行后向切片,以获得语句集合SBT ;对变量的定值语句进行前向切片,以获得语句集合SFS ;计算SBT与SFS的交集STS,并对变量的定值语句进行后向切片,以获得对变量的定值语句进行后向切片的结果;计算获得的对变量的定值语句进行后向切片的结果与STS的并集,并将对变量的定值语句进行后向切片的结果与STS的并集作为与可能错误语句相关的语句集合,并将与可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
[0082]本实施例提供的路径敏感检测装置,通过根据值流错误类型为变量设置初始的与错误相关的属性,沿着定值引用链传播初始的与错误相关的属性,在潜在错误语句处识别变量的与错误相关的属性,根据在潜在错误语句处识别的变量的与错误相关的属性,确定潜在错误语句为可能错误语句,根据可能错误语句获得路径敏感检测的语句输入集,根据路径敏感检测的语句输入集进行路径敏感检测。从而解决现有技术中检测值流错误存在的可扩展性并不理想,无法有效应用于大规模的应用程序的问题,通过减少路径敏感检测的语句输入集降低了检测开销,能够有效应用于大规模的应用程序。
[0083]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0084]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【主权项】
1.一种路径敏感检测方法,其特征在于,包括: 根据值流错误类型为变量设置初始的与错误相关的属性; 沿着定值引用链传播所述初始的与错误相关的属性,所述定值引用链为所有可能流经所述定值点的引用点所组成的集合; 在潜在错误语句处识别所述变量的与错误相关的属性; 根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,所述可能错误语句表示所述变量的定值语句经由部分路径到达会导致错误的引用语句; 根据所述可能错误语句获得路径敏感检测的语句输入集; 根据所述路径敏感检测的语句输入集进行路径敏感检测。
2.根据权利要求1所述的方法,其特征在于,所述根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,包括: 根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述变量的与错误相关的属性是否为不安全的属性; 若所述变量的与错误相关的属性为不安全的属性,则通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句,所述控制节点为所述潜在错误语句相对于所述变量的定值语句的控制流图上的控制节点; 若存在检查语句,则查找是否存在特殊控制流; 若不存在特殊控制流,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤; 在检查过的所有控制节点中都不存在检查语句和特殊控制流的情况下,确定所述潜在错误语句为可能错误语句。
3.根据权利要求2所述的方法,其特征在于,还包括: 若不存在检查语句,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤。
4.根据权利要求2或3所述的方法,其特征在于,还包括: 若存在特殊控制流,则确定所述潜在错误语句为一定不错语句。
5.根据权利要求1?4中任一项所述的方法,其特征在于,所述根据所述可能错误语句获得路径敏感检测的语句输入集,包括: 对所述可能错误语句进行程序切片,以获得与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
6.根据权利要求5所述的方法,其特征在于,所述对所述可能错误语句进行程序切片,以获得与可能错误语句相关的语句集合,包括: 对所述可能错误语句进行后向切片,以获得语句集合Sbt ; 对所述变量的定值语句进行前向切片,以获得语句集合Sfs ; 计算所述Sbt与所述Sfs的交集Sts,并对所述变量的定值语句进行后向切片,以获得对所述变量的定值语句进行后向切片的结果; 计算获得的对所述变量的定值语句进行后向切片的结果与所述Sts的并集,并将所述对所述变量的定值语句进行后向切片的结果与所述Sts的并集作为与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
7.—种路径敏感检测装置,其特征在于,包括: 设置模块,用于根据值流错误类型为变量设置初始的与错误相关的属性; 传播模块,用于沿着定值引用链传播所述初始的与错误相关的属性,所述定值引用链为所有可能流经所述定值点的引用点所组成的集合; 识别模块,用于在潜在错误语句处识别所述变量的与错误相关的属性; 确定模块,用于根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,所述可能错误语句表示所述变量的定值语句经由部分路径到达会导致错误的引用语句; 获得模块,用于根据所述可能错误语句获得路径敏感检测的语句输入集; 检测模块,用于根据所述路径敏感检测的语句输入集进行路径敏感检测。
8.根据权利要求7所述的装置,其特征在于,所述确定模块,具体用于根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述变量的与错误相关的属性是否为不安全的属性;若所述变量的与错误相关的属性为不安全的属性,则通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句,所述控制节点为所述潜在错误语句相对于所述变量的定值语句的控制流图上的控制节点;若存在检查语句,则查找是否存在特殊控制流;若不存在特殊控制流,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤;在检查过的所有控制节点中都不存在检查语句和特殊控制流的情况下,确定所述潜在错误语句为可能错误语句。
9.根据权利要求8所述的装置,其特征在于,所述确定模块,还用于若不存在检查语句,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤。
10.根据权利要求8或9所述的装置,其特征在于,所述确定模块,还用于若存在特殊控制流,则确定所述潜在错误语句为一定不错语句。
11.根据权利要求7?10中任一项所述的装置,其特征在于,所述获得模块,具体用于对所述可能错误语句进行程序切片,以获得与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
12.根据权利要求11所述的装置,其特征在于,所述获得模块,具体用于对所述可能错误语句进行后向切片,以获得语句集合Sbt ;对所述变量的定值语句进行前向切片,以获得语句集合Sfs ;计算所述Sbt与所述Sfs的交集Sts,并对所述变量的定值语句进行后向切片,以获得对所述变量的定值语句进行后向切片的结果;计算获得的对所述变量的定值语句进行后向切片的结果与所述Sts的并集,并将所述对所述变量的定值语句进行后向切片的结果与所述Sts的并集作为与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
【专利摘要】本发明实施例提供一种路径敏感检测方法和装置,本发明路径敏感检测方法,包括:根据值流错误类型为变量设置初始的与错误相关的属性,沿着定值引用链传播初始的与错误相关的属性,在潜在错误语句处识别变量的与错误相关的属性,根据在潜在错误语句处识别的变量的与错误相关的属性,确定潜在错误语句为可能错误语句,根据可能错误语句获得路径敏感检测的语句输入集,根据路径敏感检测的语句输入集进行路径敏感检测。从而解决现有技术中检测值流错误存在的可扩展性并不理想,无法有效应用于大规模的应用程序的问题,通过减少路径敏感检测的语句输入集降低了检测开销,能够有效应用于大规模的应用程序。
【IPC分类】G06F11-36
【公开号】CN104866417
【申请号】CN201410064881
【发明人】衷璐洁, 霍玮, 李丰, 张兆庆
【申请人】华为技术有限公司, 中国科学院计算技术研究所
【公开日】2015年8月26日
【申请日】2014年2月25日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1