法律状态公告日
法律状态信息
法律状态
2016-08-17
授权
授权
2014-08-20
实质审查的生效 IPC(主分类):G06F11/36 申请日:20140415
实质审查的生效
2014-07-23
公开
公开
技术领域
本发明涉及计算机领域,具体涉及一种基于配对资源管理函数的 自适应挖掘和分析方法。
背景技术
在计算机大型软件系统中,存在大量的函数使用规则,其中一大 类即为两个函数针对同一资源执行相反的功能,在本方法中,称之为 配对函数。由于大型软件文档的缺失,分工开发的人员众多等原因, 使得该类软件中存在大量的违例和配对函数的使用相关。
配对函数作用在同一类资源上,并执行相关的功能,一般是接口 提供者已经实现,一对配对函数中,一个完成资源的申请,另一个完 成资源的释放,但是使用者仅关心功能的实现,可能对接口使用和规 范不熟练,在异常处理中,对申请的资源没有及时释放,从而造成内 核泄露、死锁等问题。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供一种基于配对资源管理函数的 自适应挖掘和分析方法,能够自动从源码中挖掘配对函数,并根据配 对函数对源码进行检测。
(二)技术方案
为了达到以上目的,本发明通过以下技术方案予以实现:
一种基于配对资源管理函数的自适应挖掘和分析方法,该方法包 括:
S1:分离出源码使用接口函数;
S2:根据控制流信息对接口函数按照正常执行和异常处理路径进 行归类;
S3:统计正常执行和异常处理路径中接口函数成对出现的频度;
S4:根据所设定阈值过滤低频次不可信的配对函数;
S5:根据配对函数检测源码中的使用违例。
优选地,所述源码使用接口函数包括:大型操作系统软件中提供 给驱动程序使用的内核扩展函数接口,以及大型软件分层设计实现中 为上层提供的资源管理接口。
优选地,步骤S2具体包括:根据函数返回值进行错误判定,发生 错误时,调用的函数均为异常处理路径中的函数,而执行成功的函数 则处于正常执行路径中。
优选地,步骤S3具体包括:对于正常执行路径和异常处理路径中 的任意两个函数,若其函数参数存在关联性,统计成对出现的次数。
优选地,步骤S4具体包括:根据所设定的阈值对成对的函数进行 过滤,低于或等于所设定阈值的函数被忽略,高于所设定阈值的函数 被保留,并判定为配对函数。
优选地,步骤S5具体包括:根据挖掘和统计分析后所得的配对函 数,对源码中的执行路径进行扫描,若正常路径中调用了配对函数之 一,则检查在执行路径上的异常处理路径是否调用了对应的配对的另 一个函数。
优选地,所述根据函数返回值进行错误判定,具体包括:若调用 的接口函数返回相关的错误或者读取到输入的异常数据,则中断后续 的执行。
优选地,所述参数存在关联性,具体包括:当两个函数作用于同 一具体资源上时,两个函数参数和返回值存在关联性;在规范命名的 大型软件中,两者函数名字存在关联性。
优选地,所述所设定的阈值具体包括频度参数、系统默认值以及 根据统计结果计算的平均值。
优选地,任一所述配对函数包含两个函数,其中一个在正常执行 路径中,另一个出现在与之对应的异常处理路径中,且两者执行相反 的功能或操作。
优选地,所述输入的异常数据具体包括:外部环境、硬件或用户 输入的异常数据,或者输入的数据进行运算后产生的异常数据。
(三)有益效果
本发明至少有如下有益效果:
本发明提供了一种基于配对资源管理函数的自适应挖掘和分析方 法,能够自动地挖掘接口函数中的配对函数,并对源码进行规范检查, 因此对接口函数的使用规范有着重要意义。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面 将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而 易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些 图获得其他的附图。
图1为本发明实施例的一种基于配对资源管理函数的自适应挖掘 和分析方法的流程图;
图2为本发明实施例的一个具体的挖掘和分析源码示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方 案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部 分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普 通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
实施例1:
如图1所示,本发明实施例提供了一种基于配对资源管理函数的 自适应挖掘和分析方法,该方法包括如下步骤:
S1:分离出源码使用接口函数;
S2:根据控制流信息对接口函数按照正常执行和异常处理路径进 行归类;
S3:统计正常执行和异常处理路径中接口函数成对出现的频度;
S4:根据阈值过滤低频次不可信的配对函数;
S5:根据过滤后的配对函数检测源码中的使用违例。
优选地,所述源码使用接口函数包括:大型操作系统软件中提供 给驱动程序使用的内核扩展函数接口,以及大型软件分层设计实现中 为上层提供的资源管理接口。
优选地,步骤S2具体包括:根据函数返回值进行错误判定,发生 错误时,调用的函数均为异常处理路径中的函数,而执行成功的函数 则处于正常执行路径中。
优选地,步骤S3具体包括:对于正常执行路径和异常处理路径中 的任意两个函数,若其函数参数存在关联性,统计成对出现的次数。
优选地,步骤S4具体包括:根据所设定的阈值对成对的函数进行 过滤,低于或等于所设定阈值的函数被忽略,高于所设定阈值的函数 被保留,并判定为配对函数。
优选地,步骤S5具体包括:根据挖掘和统计分析后所得的配对函 数,对源码中的执行路径进行扫描,若正常路径中调用了配对函数之 一,则检查在执行路径上的异常处理路径是否调用了对应的配对的另 一个函数。
优选地,所述根据函数返回值进行错误判定,具体包括:若调用 的接口函数返回相关的错误或者读取到输入的异常数据,则中断后续 的执行。
优选地,所述参数存在关联性,具体包括:当两个函数作用于同 一具体资源上时,两个函数参数和返回值存在关联性;在规范命名的 大型软件中,两者函数名字存在关联性。
优选地,所述所设定的阈值具体包括频度、系统默认值以及根据 统计结果计算的平均值。
优选地,任一所述配对函数包含两个函数,其中一个在正常执行 路径中,另一个出现在与之对应的异常处理路径中,且两者执行相反 的功能或操作。
优选地,所述输入的异常数据具体包括:外部环境、硬件或用户 输入的异常数据,或者输入的数据进行运算后产生的异常数据。
本发明实施例提供了一种基于配对资源管理函数的自适应挖掘和 分析方法,能够自动地挖掘接口函数中的配对函数,并对源码进行规 范检查,从而使得因此对接口函数的使用规范有着重要意义。
实施例2:
如图2所示,为本发明另一实施例提供的一种基于配对资源管理 函数的自适应挖掘和分析方法,在该实施例中将结合操作系统的设备 驱动源码,根据所述的挖掘和分析方法对该款驱动的检测过程进行具 体阐述。
步骤101:分离出函数cp_init_one调用的函数,包括: alloc_etherdev、pci_enable_device、pci_set_mwi、pci_disable_device和 free_netdev。
步骤102:根据控制流信息对接口函数按照正常执行和异常处理路 径进行归类。由于存在多条可能的执行路径,为了简单,选择多条执 行路径中的一条,其中包括正常执行和异常处理两类操作。如图2所 示,在1889行出现错误,此时alloc_etherdev和pci_enable_device执行 成功,位于正常执行路径中,并转入异常执行路径,包括 pci_disable_device和free_netdev两个函数。
步骤103:针对操作系统的所有源码执行上述分析,统计 (pci_enable_device,pci_disable_device)、(pci_enable_device, free_netdev)等的出现频度,由于前者在函数名字、参数等各个方面均 符合配对迹象,以此类推(alloc_etherdev,free_netdev)。最终可以得 出两对配对函数:(pci_enable_device,pci_disable_device)和 (alloc_etherdev,free_netdev),这两对配对函数分别作用在同类资源 上,前者完成设备激活和去激活,后者完成内存申请和释放。
步骤104:再次扫描所有的源码,若存在一个函数执行成功 pci_enable_device,在其后续的错误处理路径中没有调用 pci_disable_device,则视为找到一个使用违例。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员 应当理解;其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不 使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
机译: 应力约束函数敏感度的节点集选择方法及基于相同方法的基于拓扑优化的应力约束函数敏感度分析方法
机译: 通过累积分布函数匹配对连续语音进行快速自适应的方法和装置
机译: 应力约束函数敏感性的节点集选择方法及基于应力拓扑优化的应力约束函数敏感性分析方法