[发明专利]代码稳定性检测方法及装置在审
申请号: | 201410449768.7 | 申请日: | 2014-09-04 |
公开(公告)号: | CN105468509A | 公开(公告)日: | 2016-04-06 |
发明(设计)人: | 徐会卿;张翔 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京鸿德海业知识产权代理事务所(普通合伙) 11412 | 代理人: | 倪志华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 稳定性 检测 方法 装置 | ||
1.一种代码稳定性检测方法,其特征在于,包括:
对待检测的代码进行静态分析,以确定所述代码包含的函数和函数之间的调用关系;
根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数;
根据所述调用环路的个数,确定所述代码的稳定性等级。
2.根据权利要求1所述的方法,其特征在于,所述根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数,包括:
根据所述代码包含的函数和函数之间的调用关系,生成第一函数调用图;所述第一函数调用图中的节点表示所述代码包含的函数,所述第一函数调用图中的有向边表示所述有向边所连接的两个节点所表示的两个函数之间的调用关系;
对所述第一函数调用图进行拓扑排序处理,以获得不包括入度为0的节点的第二函数调用图;
如果所述第二函数调用图中存在节点,对所述第二函数调用图进行深度优先搜索DFS遍历,以获得遍历所述第二函数调用图中所有节点需要的DFS遍历次数,并确定所述DFS遍历次数为所述调用环路的个数;
如果所述第二函数调用图中不存在节点,确定所述调用环路的个数为0。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述调用环路的个数,确定所述代码的稳定性等级,包括:
如果所述调用环路的个数为0,则确定所述代码的稳定性等级为最高等级;
如果所述调用环路的个数不为0,则根据所述调用环路的个数和预设的个数门限,确定所述代码的稳定性等级为不同于所述最高等级的其他等级。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
在所述调用环路的个数不为0时,获得每个所述调用环路上的函数数目;
在所述调用环路的个数不为0时,所述根据所述调用环路的个数,确定所述代码的稳定性等级,包括:
根据所述调用环路的个数和每个所述调用环路上的函数数目,确定所述代码的稳定性等级。
5.根据权利要求4所述的方法,其特征在于,所述根据所述调用环路的个数和每个所述调用环路上的函数数目,确定所述代码的稳定性等级,包括:
根据每个所述调用环路上的函数数目,获得所有所述调用环路上的函数总数;
根据所述调用环路的个数和所述函数总数,确定所述代码的稳定性等级。
6.一种代码稳定性检测装置,其特征在于,包括:
分析模块,用于对待检测的代码进行静态分析,以确定所述代码包含的函数和函数之间的调用关系;
获取模块,用于根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数;
确定模块,用于根据所述调用环路的个数,确定所述代码的稳定性等级。
7.根据权利要求6所述的装置,其特征在于,所述获取模块包括:
生成单元,用于根据所述代码包含的函数和函数之间的调用关系,生成第一函数调用图;所述第一函数调用图中的节点表示所述代码包含的函数,所述第一函数调用图中的有向边表示所述有向边所连接的两个节点所表示的两个函数之间的调用关系;
拓扑处理单元,用于对所述第一函数调用图进行拓扑排序处理,以获得不包括入度为0的节点的第二函数调用图;
个数获取单元,用于在所述第二函数调用图中存在节点时,对所述第二函数调用图进行深度优先搜索DFS遍历,以获得遍历所述第二函数调用图中所有节点需要的DFS遍历次数,并确定所述DFS遍历次数为所述调用环路的个数;或者,在所述第二函数调用图中不存在节点时,确定所述调用环路的个数为0。
8.根据权利要求6或7所述的装置,其特征在于,所述确定模块具体用于在所述调用环路的个数为0时,确定所述代码的稳定性等级为最高等级;或者,在所述调用环路的个数不为0时,根据所述调用环路的个数和预设的个数门限,确定所述代码的稳定性等级为不同于所述最高等级的其他等级。
9.根据权利要求6或7所述的装置,其特征在于,所述获取模块还用于在所述调用环路的个数不为0时,获得每个所述调用环路上的函数数目;
所述确定模块具体用于在所述调用环路的个数不为0时,根据所述调用环路的个数和每个所述调用环路上的函数数目,确定所述代码的稳定性等级。
10.根据权利要求9所述的装置,其特征在于,所述确定模块具体用于在所述调用环路的个数不为0时,根据每个所述调用环路上的函数数目,获得所有所述调用环路上的函数总数;根据所述调用环路的个数和所述函数总数,确定所述代码的稳定性等级。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410449768.7/1.html,转载请声明来源钻瓜专利网。