[发明专利]一种基于代码圈复杂度度量的软件演化评估方法在审
申请号: | 201710330642.1 | 申请日: | 2017-05-11 |
公开(公告)号: | CN107239396A | 公开(公告)日: | 2017-10-10 |
发明(设计)人: | 廖力;李必信;何磊 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京苏高专利商标事务所(普通合伙)32204 | 代理人: | 柏尚春 |
地址: | 211189 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于代码圈复杂度度量的软件演化评估方法,先将待评估软件源码通过代码解析生成抽象语法树;然后通过统计抽象语法树中判定结点的数量对该软件从方法层和类层和系统层三个层面进行代码圈复杂度度量;最后将方法层和类层的度量值进行阈值比较评估。在获取软件各个版本的代码圈复杂度度量值之后,该方法将软件演化前后的圈复杂度进行对比分析,定位复杂度变化位置,通过代码变更检测分析复杂度发生变化的原因。该发明的评估方法不仅可以自动解析源码,从软件各个层面评估代码的圈复杂度,对复杂度过高的模块和方法提出预警,而且可以定位引起演化中复杂度变化的位置,并分析变化原因,为软件演化评估提供参考依据。 | ||
搜索关键词: | 一种 基于 代码 复杂度 度量 软件 演化 评估 方法 | ||
【主权项】:
一种基于代码圈复杂度度量的软件演化评估方法,其特征在于,该方法包括以下步骤:步骤1)分别为待评估软件的当前待测目标版本V_current和历史版本V_last的程序源码构造抽象语法树;步骤2)根据所述步骤1)获取的抽象语法树,分别从系统层、类层和方法层三个层次对待测软件版本的代码进行圈复杂度度量,所述待测软件版本包括当前待测目标版本V_current和历史版本V_last;步骤3)从类层和方法层分别评估待测软件版本的圈复杂度度量结果,找出软件中圈复杂度度量结果超出阈值范围的类和方法;步骤4)对待测软件的当前待测目标版本V_current和历史版本V_last的圈复杂度度量结果按层次进行分析比较,以确定变更发生的位置,具体为:先进行两个版本系统层圈复杂度的比较,确定两个版本间类的增删改;然后再进行类层次的分析,对前后版本中圈复杂度发生变化的类,确定其方法的增删改;最后进行方法层次的分析,考察同名方法的圈复杂度变化;步骤5)对当前待测目标版本V_current和历史版本V_last的项目源码本身进行分析比较,找出两者在所述步骤4)确定的变更发生的位置的代码差异,输出到格式文件中;步骤6)针对当前待测目标版本V_current和历史版本V_last,通过所述步骤4)得到的两个版本中圈复杂度发生增删改的类和方法,以及所述步骤5)得到的两个版本的代码差异,进行差异定位,即根据代码差异确定导致度量结果发生变化的原因,形成软件演化评估。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710330642.1/,转载请声明来源钻瓜专利网。