[发明专利]一种基于图挖掘的软件函数变更预测系统及方法有效
申请号: | 201611122377.X | 申请日: | 2016-12-08 |
公开(公告)号: | CN106648636B | 公开(公告)日: | 2020-01-03 |
发明(设计)人: | 王雷;王新晨;李涵 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F8/71 | 分类号: | G06F8/71 |
代理公司: | 11251 北京科迪生专利代理有限责任公司 | 代理人: | 杨学明;顾炜 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明为一种基于图挖掘的软件函数变更预测系统及方法,属于软件工程领域。本发明基于软件网络函数调用关系图进行计算,首先需要获取整个函数调用关系图,通过对相邻版本的函数进行比较获得修改、删除、新增的函数,并得到变更函数子图,利用图挖掘算法gspan,选择参数,主要是跨度和支持度,得到相应的频繁子图,子图所包含的函数就是预测的可能发生变更的函数。 | ||
搜索关键词: | 一种 基于 挖掘 软件 函数 变更 预测 系统 方法 | ||
【主权项】:
1.一种基于图挖掘的软件函数变更预测系统,其特征在于:包括函数调用关系图生成模块、变更函数调用关系图获取模块、图挖掘及变更函数预测模块,其中:/n函数调用关系图生成模块:根据需要处理的相应的软件网络,生成相应软件网络的函数调用关系图;/n变更函数调用关系图获取模块:对相邻版本的函数源码比较,得到变更函数,在已生成的函数调用关系图中,去掉没有变更的函数,得到每个相邻版本源代码的变更函数调用关系图;/n图挖掘及变更函数预测模块:利用得到的变更函数调用关系图,通过图挖掘算法,输入参数,再得到挖掘结果,并输出预测函数;/n所述函数调用关系图生成模块实现过程如下:/n(1)选择需要处理的相应的软件网络,包括操作系统软件源代码,然后调用外部工具cdepn,对于所有.c文件,生成相应的cdepn文件;/n(2)对于生成的cdepn文件,逐行读取文件,当某一行第一个字符为F时,表示该行函数为call函数,之后的开头第一个字符为C的行直到文件尾或者下一个开头第一个字符为F的行为止,包含在里面的函数都被该函数调用,按照此方法则生成相应整个软件网络的函数调用关系图;/n所述变更函数调用关系图获取模块实现过程如下:/n(1)利用ctags获取每个函数在相邻版本中的被定义位置,函数定义总是以‘{’开始,最终以‘}’结束,利用此原理,从函数开始行开始,利用栈的数据结构,去掉注释语句,每读到‘{’入栈,读到‘}’出栈,直到栈为空,这时候的行为该函数的结束行;按照此方法得到函数被定义的结束行,然后提取各函数在相邻版本的源代码,利用diff命令,比较代码是否发生改变,如果是则函数是变更函数;/n(2)得到变更函数后,利用变更函数,对源代码的函数调用关系图进行筛选,去掉没有变更过的函数,剩下的就是变更函数调用关系图;/n所述图挖掘及变更函数预测模块实现过程如下:/n(1)设定参数,包括最小支持度,以及单次挖掘的相邻版本子图数,即跨度,利用修改过的gspan算法进行挖掘,如下:/n1)首先逐条边读取相邻版本子图数的连续版本变更函数子图,对于每条边,记录出现次数,读取完毕后,去掉出现次数低于支持度的边;/n2)剩余边具有以下属性:(x,x1,y,y1,e),x是为调用函数的编号,x1是调用函数的权值,y是被调用函数的编号,y1是被调用函数的权值,e是边的编号,该属性中五个元素都是数字,按照从左到右优先级顺序对所有边按照五个属性值从低到高进行排序,得到最小DFS编码,从记录的第一个函数开始,按照最小DFS编码的边的顺序,从小到大进行扩展,不断加入新的边,直到得到完整的频繁变更子图;/n(2)利用挖掘出的频繁变更子图,得到频繁变更函数即挖掘结果,并作为预测函数输出。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611122377.X/,转载请声明来源钻瓜专利网。
- 上一篇:拖把(拧水旋转)
- 下一篇:一种虚拟桌面的创建方法及系统