[发明专利]一种空指针崩溃的挖掘方法及装置有效
申请号: | 201410664753.2 | 申请日: | 2014-11-19 |
公开(公告)号: | CN105607990B | 公开(公告)日: | 2019-07-05 |
发明(设计)人: | 董杰 | 申请(专利权)人: | 腾讯科技(成都)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 610041 四川省成都市高*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 指针 崩溃 挖掘 方法 装置 | ||
本发明实施例公开了一种空指针崩溃的挖掘方法,及装置,其中方法的实现包括:获取全量代码文件内返回空指针的函数;获取待挖掘的代码中使用了所述空指针的变量作为危险变量;使用所述危险变量进行前向搜索,若搜索得到使用了所述危险变量的代码行,并且所述代码行未进行判空保护,则确定所述代码行为产生空指针崩溃的代码行。首先确定返回空指针的函数,然后通过返回空指针函数被使用的情况确定危险变量,然后通过危险变量定位到产生空指针崩溃的代码行。可以准确找出会导致软件崩溃的空指针。
技术领域
本发明涉及计算机技术领域,特别涉及一种空指针崩溃的挖掘方法,及装置。
背景技术
空指针崩溃是指软件程序中如果直接使用空指针变量的一个属性方法则会引起软件崩溃(Crash)。空指针是指针的一种,指针是指值为内存地址的一种变量,空指针则是内存地址为空(NULL)的指针变量。
空指针崩溃代码,是指使用空指针变量的代码行。因此,空指针崩溃代码存在引起软件崩溃的风险,为了避免这种风险,通常需要通过判空保护来避免软件崩溃。判空保护的过程是:判断指针变量的值是否等于NULL,如果指针变量值等于NULL时,就不使用该指针变量,如果不等于NULL则可以使用该指针变量。
空指针崩溃挖掘是在代码中找出会导致软件崩溃的空指针的过程,目前有实现该功能的工具软件,如CPPcheck工具,其挖掘方法如下:遇到函数会返回指针变量的代码行,则判断该代码行是否有判空保护,如果没有判空保护,则给该代码行报空指针崩溃代码告警。
由于CPPcheck工具遇到函数会返回指针变量的代码行且没有判空保护的代码,就直接给该代码行报空指针崩溃代码告警。但是,如果函数返回值中没有返回NULL的代码实现,即使函数的使用者没有判空保护的代码,也不会产生指针变量为NULL的可能。因此,会导致大量的无效告警。目前,一些产品在使用CPPcheck工具进行空指针崩溃风险挖掘时常会爆出几百,几千甚至上万的告警,由于其误报的存在,导致人工无法对大量的告警进行分析。因此,采用CPPcheck工具进行空指针崩溃挖掘,误报率高。
发明内容
本发明实施例提供了一种空指针崩溃的挖掘方法,及装置,用于准确找 出会导致软件崩溃的空指针。
一种空指针崩溃的挖掘方法,包括:
获取全量代码文件内返回空指针的函数;
获取待挖掘的代码中使用了所述空指针的变量作为危险变量;
使用所述危险变量进行前向搜索,若搜索得到使用了所述危险变量的代码行,并且所述代码行未进行判空保护,则确定所述代码行为产生空指针崩溃的代码行。
一种空指针崩溃的挖掘装置,包括:
函数获取单元,用于获取全量代码文件内返回空指针的函数;
变量获取单元,用于获取待挖掘的代码中使用了所述空指针的变量作为危险变量;
代码搜索单元,用于使用所述危险变量进行前向搜索;
危险确定单元,用于若搜索得到使用了所述危险变量的代码行,并且所述代码行未进行判空保护,则确定所述代码行为产生空指针崩溃的代码行。
从以上技术方案可以看出,本发明实施例具有以下优点:首先确定返回空指针的函数,然后通过返回空指针函数被使用的情况确定危险变量,然后通过危险变量定位到产生空指针崩溃的代码行。可以准确找出会导致软件崩溃的空指针。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(成都)有限公司,未经腾讯科技(成都)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410664753.2/2.html,转载请声明来源钻瓜专利网。