[发明专利]一种检查源代码中空指针的方法和计算机系统有效

专利信息
申请号: 200910203702.9 申请日: 2009-05-20
公开(公告)号: CN101566968A 公开(公告)日: 2009-10-28
发明(设计)人: 何崚 申请(专利权)人: 阿里巴巴集团控股有限公司
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 北京集佳知识产权代理有限公司 代理人: 马 敬;逯长明
地址: 英属开曼群岛大开曼*** 国省代码: 开曼群岛;KY
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 检查 源代码 中空 指针 方法 计算机系统
【说明书】:

技术领域

本申请涉及空指针检测技术领域,特别涉及一种检查源代码中空指针的 方法和计算机系统。

背景技术

在计算机程序中,具有不定值的指针会随机产生数值,不知道指向什么 地方的指针,或指针指向超出范围的指针是很危险的,因为这种不确定因素 可以使程序陷入瘫痪,因此要定义一个空值针将这些不定因素装进去。这种 空值针也就是通常所说的空指针。

下面以JAVA语言为例,提供一个简单的空指针的例子:

//Hello.java的源代码

import com.xx.Bye;

public class Hello{

private Integer num1;    //声明一个整型的指针num1

private Bye bye;

public int getNum(){

    return num1.intValue();//调用指针num1

}

}

从上面的例子可以看出,在第4行声明了一个类型为整型(Integer)的 指针,该指针名称为num1,在第7行调用了该指针num1,而在对该指针声 明之后,调用之前,并没有对该num1指针进行初始化,因而在运行中会造 成一个典型的空指针异常。

目前,由于空指针异常而使一个程序项目如JAVA项目存在程序缺陷 (bug)的情况非常常见,现有技术主要通过白盒测试和黑盒测试来检测一个 JAVA项目中是否存在异常的空指针。

白盒测试是指已知产品的内部工作过程,通过测试来证明内部每种操作 是否符合设计规格要求,所有内部成分是否以经过检查。白盒测试要写大量 的测试用例,如果测试用例覆盖度不足,白盒测试的效果也不好。

黑盒测试是指已知产品的功能设计规格,可以进行测试证明每个实现了 的功能是否符合要求。黑盒测试是通过功能测试来查找问题,并且要界定bug 的责任人,只能通过人工判断。Bug描述和邮件通知也要消耗人力沟通成本。

此外一些开源的静态源码分析工具,如findbugs,也可以扫描程序代码 中的空指针异常情况,但是会存在很多的问题:

1.许多情况下的空指针问题扫描不出。

现有开源的静态源码分析工具,如findbugs,只检查程序代码中的全局 变量、局部变量等空指针情况,而对于程序代码中涉及方法(“方法”是包含 一系列语句的代码块。程序通过“调用”方法并指定所需的任何方法参数来执 行语句。)参数的空指针不做检测,因而,许多情况下的空指针问题扫描不出。

此外,由于程序不稳定,代码解析过程复杂易出错等问题,也经常导致 空指针问题扫描不出。

2.扫描工具比较庞大,扫描速度慢。

由于findbugs不是专门的空指针扫描器,其还扫描很多其他的东西,虽 然可配置,但是毕竟代码设计冗余,扫描速度比较慢。

3.编译后才能扫描。

现有的findbugs往往需要代码编译完以后,才能进行扫描,因为它是以 字节码为主进行扫描,不能扫描源码,因而需要编译,而编译比较麻烦,准 备时间多,程序开发的精神相悖。

4.现有用于空指针扫描工具所采用的算法比较落后,其构造了大量的复 杂的正则表达式列表,循环递归调用正则表达式,对CPU等资源占用非常大。

发明内容

本申请实施例提供一种检查源代码中空指针的方法和计算机系统,不但 能全面、准确、快速地扫描出异常空指针,且在扫描前不需要对程序代码进 行编译,算法先进,避免占用大量资源。

为实现上述目的,本申请提供了一种检查源代码中空指针的方法,计算 机系统构造可引用变量类型字典,所述可引用变量类型字典中包括各种类型 的变量声明,该方法还包括:

计算机系统接收扫描空指针的指令,格式化待检查的源代码;

扫描所述待检查源代码的全局代码区域,获得与所述可引用变量类型字 典中变量声明类型对应的未初始化全局变量列表;

扫描所述待检查源代码的方法区域,获得与所述可引用变量类型字典中 变量声明类型对应的未初始化局部变量列表;

根据未初始化全局变量列表,获取方法下未初始化全局变量列表;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200910203702.9/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top