[发明专利]空指针检测方法有效
申请号: | 201811373522.0 | 申请日: | 2018-11-16 |
公开(公告)号: | CN109522232B | 公开(公告)日: | 2021-10-22 |
发明(设计)人: | 胡凇源;周晓聪;衣杨 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 吴开磊 |
地址: | 510000 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 指针 检测 方法 | ||
1.一种空指针检测方法,其特征在于,包括:
获取待分析程序的控制流图;
获取所述控制流图中的所有节点;
沿着所有可能的路径,遍历所述控制流图中的所有节点,获取每个所述节点内待检测的变量值与到达条件;
遍历至所述控制流图出口节点时,结合所述出口节点的变量的值与到达条件,确定返回的变量值是否为空;
所述沿着所有可能的路径,遍历所述控制流图中的所有节点,获取每个所述节点内待检测的变量值与到达条件,包括:
计算所述节点n的入函数In(n),其中n为大于零的整数,且小于或等于待分析程序的控制流图中所有节点的数量;
扩展所述节点n的生成条件定值,并获取扩展后的生成条件定值,所述扩展为:当控制流图里的入口节点的条件取值为ture时,到了下一个节点,若下个节点为if语句,则将入口节点的条件值ture与if语句里条件表达式的条件值进行合取,所得到的合取后的值为扩展后的生成条件定值;
筛选所述扩展后的生成条件定值,并删除未通过筛选的条件定值;
分析剩余的条件定值,确定所述节点n的变量值与对应的条件定值。
2.根据权利要求1所述的空指针检测方法,其特征在于,所述沿着所有可能的路径,遍历所述控制流图中所有节点,获取每个所述节点内待检测的变量值与到达条件之前,还包括:
初始化待检测变量对应入口节点的入函数In(n)和出函数Out(n),其中,所述待检测变量对应的所有节点中除所述入口节点外,其余节点的In(n)和Out(n)均为空集。
3.根据权利要求1所述的空指针检测方法,其特征在于,所述筛选所述扩展后的生成条件定值,并删除未通过筛选的条件定值之后,还包括:
将通过筛选的条件定值加入到Out(n);
其中,若Out(n)中添加了新的条件定值或In(n)中某个条件定值的条件发生变化,都将当前节点n的所有后继节点添加到工作列表。
4.根据权利要求3所述的空指针检测方法,其特征在于,所述筛选所述扩展后的生成条件定值,并删除未通过筛选的条件定值还包括:循环从所述工作列表内取出一个节点进行计算和筛选,直至所述工作列表为空。
5.根据权利要求4所述的空指针检测方法,其特征在于,所述循环从所述工作列表内取出一个节点进行计算和筛选,直至所述工作列表为空,具体包括:
当所述Out(n)中添加了新的条件定值,或者所述In(n)中的某个条件定值的条件发生变化,都将当前节点n的所有后继节点添加到所述工作列表继续进行筛选,直至所述工作列表为空时停止。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811373522.0/1.html,转载请声明来源钻瓜专利网。