首页> 中国专利> 一种基于配对资源管理函数的自适应挖掘和分析方法

一种基于配对资源管理函数的自适应挖掘和分析方法

摘要

本发明提供一种基于配对资源管理函数的自适应挖掘和分析方法,包括:S1:分离出源码使用接口函数;S2:根据控制流信息对接口函数按照正常执行和异常处理路径进行归类;S3:统计正常执行和异常处理路径中接口函数成对出现的频度;S4:根据所设定阈值过滤低频次不可信的配对函数;S5:根据过滤后的配对函数检测源码中的使用违例。本发明能够自动从源码中挖掘配对函数,并根据配对函数对源码进行检测。

著录项

  • 公开/公告号CN103942145A

    专利类型发明专利

  • 公开/公告日2014-07-23

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201410150754.5

  • 发明设计人 胡事民;刘虎球;

    申请日2014-04-15

  • 分类号G06F11/36;

  • 代理机构北京路浩知识产权代理有限公司;

  • 代理人李迪

  • 地址 100084 北京市海淀区清华园北京100084-82信箱

  • 入库时间 2023-12-17 00:55:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 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,则视为找到一个使用违例。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员 应当理解;其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不 使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号