[发明专利]一种检测方法及装置在审
| 申请号: | 201511027958.0 | 申请日: | 2015-12-31 |
| 公开(公告)号: | CN105677559A | 公开(公告)日: | 2016-06-15 |
| 发明(设计)人: | 钟云德 | 申请(专利权)人: | 杭州华为数字技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 冯艳莲 |
| 地址: | 310052 浙江省杭州*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 检测 方法 装置 | ||
本发明公开了一种检测方法及装置,用以解决现有技术的代码检测工具无法识别一些复杂场景中的局部变量未初始化,降低了检测效率的问题,该方法包括:根据第一变量配置信息对一测试代码中的第一设定局部变量赋值,并基于所述测试代码中的第一设定局部变量的取值状态,对赋值后的第一设定局部变量进行覆盖,生成第一待编译代码,最终生成第一运行结果,同时,根据第二变量配置信息,对所述测试代码进行上述同样的处理,生成第二待编译代码,最终生成第二运行结果,在第一运行结果和第二运行结果不同时,确定所述测试代码中存在局部变量未初始化,这样,检测装置均可以准确判断程序代码是否存在局部变量未初始化的问题,提高了检测效率。
技术领域
本发明涉及计算机技术领域,尤其涉及一种检测方法及装置。
背景技术
在程序代码中,时常会出现程序代码中使用的局部变量未初始化的问题,这些问题可能会导致该程序代码无法运行,或者存在潜在的缺陷。为了避免这些问题,传统地,业界通常需要代码检测工具(例如PCLint、Coverity等)对程序代码进行分析检测。
然而,现有的代码检测工具无法识别一些复杂场景中的局部变量未初始化,例如,对于一些结构体等聚合数据类型的程序代码,一部分局部变量已经初始化,而另一部分局部变量未初始化的场景。这样,传统的代码检测工具无法检测出程序代码中所有未初始化的局部变量,降低了检测效率。
发明内容
本发明提供一种检测方法及装置,用以解决现有技术中的代码检测工具无法识别一些复杂场景中的局部变量未初始化,降低了检测效率的问题。
本发明提供的具体技术方案如下:
第一方面,提供了一种检测方法,包括:
根据针对一测试代码设置的第一变量配置信息,对所述测试代码中的至少一个第一设定局部变量进行赋值,生成第一初始化代码,所述第一变量配置信息中包含分别为每个第一设定局部变量配置的取值;
基于所述测试代码中的每个第一设定局部变量的取值状态,对所述第一初始化代码中的每个第一设定局部变量的取值进行覆盖,生成第一待编译代码;并基于所述第一待编译代码生成第一运行结果;
根据针对所述测试代码设置的第二变量配置信息,对所述测试代码中的至少一个第二设定局部变量进行赋值,生成第二初始化代码,所述第二变量配置信息中包含分别为每个第二设定局部变量配置的对应的取值;
基于所述测试代码中的所述第二设定局部变量的取值状态,对所述第二初始化代码中的所述第二设定局部变量的取值进行覆盖,生成第二待编译代码;并基于所述第二待编译代码生成第二运行结果;
当所述第一运行结果与所述第二运行结果不同时,确定所述测试代码中存在局部变量未初始化。
这样,无论在任何场景中(例如结构体等聚合数据类型的程序代码),检测装置均可以准确判断程序代码是否存在局部变量未初始化的问题,提高了检测效率,方便用户修改,避免了程序代码因存在未初始化的变量无法运行或运行结果错误的问题。
结合第一方面,在第一方面的第一种可能的实现方式中,根据所述第一变量配置信息,对所述测试代码中的至少一个第一设定局部变量进行赋值,包括:
确定在所述测试代码的栈中,所述测试代码中每个第一设定局部变量的栈区间;
根据所述第一变量配置信息中分别为每个第一设定局部变量配置的取值,对每个第一设定局部变量的栈区间进行填充。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,基于所述测试代码中的每个第一设定局部变量的取值状态,对所述第一初始化代码中的每个第一设定局部变量的取值进行覆盖,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州华为数字技术有限公司,未经杭州华为数字技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201511027958.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:地下综合管廊用预埋滑槽
- 下一篇:一种电动执行器结构





