[发明专利]代码检测方法及装置有效
| 申请号: | 201410448592.3 | 申请日: | 2014-09-04 |
| 公开(公告)号: | CN105468508B | 公开(公告)日: | 2018-07-03 |
| 发明(设计)人: | 徐会卿;张翔 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京鸿德海业知识产权代理事务所(普通合伙) 11412 | 代理人: | 倪志华 |
| 地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 函数调用图 检测 代码检测 有向边连接 调用关系 动态分析 准确度 有向边 调用 申请 | ||
本申请提供一种代码检测方法及装置。方法包括:对待检测代码进行动态分析,以获得第一函数调用图,第一函数调用图中的节点表示待检测代码包含的函数,第一函数调用图中的有向边表示有向边连接的两个节点所表示的函数之间的调用关系;根据第一函数调用图,检测待检测代码中是否存在调用环路。本申请可以从整体对代码进行检测,提高检测代码检测稳定性的准确度。
【技术领域】
本申请涉及计算机技术领域,尤其涉及一种代码检测方法及装置。
【背景技术】
代码是指程序员利用开发工具所支持的语言编写出来的源文件,是一组由字符、符号或信号码元等以离散形式表示信息的明确的规则体系。随着编程技术的发展,大多数功能都可以通过代码实现。在具体实现上,代码会包括一些函数,并通过函数之间的相互调用完成所要实现的功能。
在实际应用中,为确保代码的稳定性和可用性等,在开发出代码之后,通常还需要对其进行各种检测,如静态代码检测。现有技术存在以代码中的函数为对象,验证每个函数是否存在循环调用语句的静态检测方法。例如,该方法会检测函数中是否存在类似while(true)这样的初始化死循环语句,或者检测是否存在类似for(;;)这样的无限循环语句等,来判断函数是否存在错误。
由于现有这种代码检测方法仅局限于代码包含的函数内,因此无法从整体角度对代码进行检测,检测准确度较低。
【发明内容】
本申请的多个方面提供一种代码检测方法及装置,用以从整体对代码进行检测,提高代码检测的准确度。
本申请的一方面,提供一种代码检测方法,包括:
对待检测代码进行动态分析,以获得第一函数调用图,所述第一函数调用图中的节点表示所述待检测代码包含的函数,所述第一函数调用图中的有向边表示所述有向边连接的两个节点所表示的函数之间的调用关系;
根据所述第一函数调用图,检测所述待检测代码中是否存在调用环路。
本申请的另一方面,提供一种代码检测装置,包括:
分析模块,用于对待检测代码进行动态分析,以获得第一函数调用图,所述第一函数调用图中的节点表示所述待检测代码包含的函数,所述第一函数调用图中的有向边表示所述有向边连接的两个节点所表示的函数之间的调用关系;
检测模块,用于根据所述第一函数调用图,检测所述待检测代码中是否存在的调用环路。
在本申请中,通过对代码进行动态分析,获得可以表示代码包含的函数以及函数之间调用关系的第一函数调用图,根据第一函数调用图,检测代码中是否存在调用环路。与现有函数内这种局部检测方式相比,本申请是从全局角度发现代码包含的函数之间是否存在调用环路,而不再局限于函数内的检测,函数之间的调用环路可能导致代码在运行时出现死循环,会严重影响代码的整体性能,因此本申请通过检测代码中是否存在调用环路达到检测代码的目的,可以极大的提高代码检测的准确度。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的代码检测方法的流程示意图;
图2为本申请一实施例提供的第一函数调用图的结构示意图;
图3为本申请一实施例提供的步骤101的一种实施方式的流程示意图;
图4为本申请一实施例提供的第二函数调用图的结构示意图;
图5为本申请另一实施例提供的第一函数调用图的结构示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410448592.3/2.html,转载请声明来源钻瓜专利网。





