[发明专利]一种基于边不稳定性的软件函数变更预测系统及方法有效
申请号: | 201611122380.1 | 申请日: | 2016-12-08 |
公开(公告)号: | CN106775695B | 公开(公告)日: | 2020-11-10 |
发明(设计)人: | 王雷;王新晨;李涵 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F8/71 | 分类号: | G06F8/71;G06F8/73 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;顾炜 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 不稳定性 软件 函数 变更 预测 系统 方法 | ||
1.一种基于边不稳定度的软件函数变更预测系统,其特征在于包括:函数调用关系图生成模块、变更函数调用关系图获取模块和边的不稳定度生成及函数变更预测模块,其中:
函数调用关系图生成模块:根据需要处理相应的软件网络,生成相应软件网络的函数调用关系图;
变更函数调用关系图获取模块:对相邻版本的函数源码比较,得到变更函数,在已生成的函数调用关系图中,去掉没有变更的函数,得到每个相邻版本源代码的变更函数调用关系图;
边的不稳定度生成及函数变更预测模块:根据已生成的变更函数调用关系图,得到每条边的边的不稳定度,对所有边按照边的不稳定度进行排序,根据输入的阈值,去掉不稳定度低于阈值的边,剩下的边所连接的函数节点作为预测结果进行输出;
所述边的不稳定度生成及函数变更预测模块实现过程如下:
(1)逐行录入变更函数调用关系图,每行分为调用函数(call function)和被调用函数(called function),每行录入的时候,调用函数的出度加1,被调用函数入度加1;
(2)变更函数调用关系图录入完毕之后,根据公式:
计算出函数节点的不稳定度Si,是该节点的入度,是该节点的出度;
然后,根据公式Iij=Si-Sj计算出各条边的不稳定度;Iij是边的不稳定度,Si是调用函数节点的稳定度,Sj是被调用函数节点的稳定度;
(3)采用的是快速排序算法,对所有边按照边的不稳定度由高到低排序;
(4)输入阈值,所述阈值在(-1,1)之间,去掉边的不稳定度低于所述阈值的边,剩下的边所连接的函数节点作为预测结果进行输出。
2.根据权利要求1所述的基于边不稳定度的软件函数变更预测系统,其特征在于:所述函数调用关系图生成模块实现过程如下:
(1)选择需要处理相应的软件网络,包括操作系统软件源代码,然后调用外部工具cdepn,对于所有.c文件,生成相应的cdepn文件;
(2)对于生成的.cdepn文件,逐行读取文件,当每一行第一个字符为F时,表示该行函数为call函数,之后的所有开头第一个字符为C的行的直到文件尾或者下一个开头第一个字符为F的行为止,包含在里面的函数都被该函数调用,按照此方法则生成相应整个软件网络的函数调用关系图。
3.根据权利要求1所述的一种基于边不稳定度的软件函数变更预测系统,其特征在于:所述变更函数调用关系图获取模块实现过程如下:
(1)利用ctags获取每个函数在相邻版本中的被定义位置,函数定义总是以‘{’开始,最终以‘}’结束,利用此原理,从函数开始行开始,利用栈的数据结构,去掉注释语句,每读到‘{’入栈,读到‘}’出栈,直到栈为空,这时候的行数为该函数的结束行,按照此方法得到函数被定义的结束行,然后提取各函数在相邻版本的源代码,利用diff命令,比较代码是否发生改变,如果是则是变更函数;
(2)得到变更函数后,利用变更函数,对源代码的函数调用关系图进行筛选,去掉没有变更过的函数,剩下的就是变更函数调用关系图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611122380.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种软件配置代码制品的层次分类方法
- 下一篇:数据处理方法及装置