[发明专利]一种基于AST的软件版本演化对比分析方法有效
申请号: | 201710258269.3 | 申请日: | 2017-04-19 |
公开(公告)号: | CN107203468B | 公开(公告)日: | 2020-09-25 |
发明(设计)人: | 吴艳霞;刘志江;李晓松;孙彬;卢文祥 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/71 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001 黑龙江省哈尔滨市南岗区*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 ast 软件 版本 演化 对比 分析 方法 | ||
本发明提供的是一种基于AST的软件版本演化对比分析方法。通过Unix的Diff命令对两个软件版本源码进行比对分析,将变化的源码分为三种源码块;通过语法分析器获取两个软件版本源码的AST信息,分析获取每一种源码块的每一行代码对应的AST信息;通过将获取的语法结点信息组合成一个组合信息,将标识一样的相邻代码行组合成模块;通过以模块为单位对比分析两个源码块的标识信息,根据模块演化情况进行分类分析,使用预处理、二次处理方法处理各种演化情况,并将演化信息存入数据库中,并转换成HTML代码。本发明和其他软件版本演化对比分析方法相比,能提高获取演化信息的准确率,并能提高软件版本演化分析的效率。
技术领域
本发明涉及的是一种软件版本演化对比分析方法,具体地说是一种以Diff为基础的AST 软件版本演化对比分析方法。
背景技术
软件版本演化分析,其本质都是针对软件源码进行差异分析,针对软件演化分析的方法和源码差异分析方法,介绍本发明的技术背景。
软件演化分为动态演化和静态演化,动态演化也称在线演化,是指在软件执行期间演化,静态演化更多的是对软件版本源码差异内容的一个理解和展示,接下来阐述的软件版本演化只是针对静态演化。主要是介绍的是与源码差异分析方法相关的,静态演化相关的软件版本演化分析方法。
目前,在软件版本演化分析方面,根据其分析的粒度主要分为四个分类进行研究,第一个分类是针对源码的增加、删除、修改和未改的代码行数进行进一步研究。第二个分类是针对增加、删除、修改和未改的类函数等语法结构进一步研究,通过将软件版本的变化分为47 种来理解软件演化的过程,到底是什么决定了软件演化的走向,其种类划分的依据是类函数等语法结构的属性参数和语句的种类,如函数的参数改变了是一种变化的种类,语句则有条件、循环和else语句等。其中比较有代表性的是一种改进的基于AST的软件演化分析方法,该方法是基于AST编辑距离(Levenshtein Distance,LD)的方法的改进,基于AST编辑距离 (Levenshtein Distance,LD)方法通常被用于输入字符串的快速模糊匹配、英文辅助,写作等领域,是一种经典而广为使用的方法。早在1996年的时候有人将LD算法的思想迁移到源码的对比,Chawathe提出了基于AST的最短编辑距离算法分析分层结构化代码,假设分层结构化代码都是对称的,类函数等模块的语法结点都是一样的,只是具体属性有所变化。基于此方法思想,提出了一种改进的基于AST的软件演化分析方法,提高了算法的效率和准确性,将算法的适用范围拓宽了,不只限于分层结构化代码。
第三个分类是针对改变和未变的代码进行视图显示,然后进行进一步研究,从文本和软件工程两个角度分析,通过完善Diff的工作,构造了一个VCN(Visual CodeNavigator),通过视图显示演化信息,可视化的理解版本演化规律,但是VCN只支持C/C++。第四个分类是针对软件源码的模型进行研究,模型映射与比较可以用于软件复用和软件版本演化分析研究虽然能很好的满足软件开发者的需求,但是需要对软件版本的模型进行获取分析,有的软件版本无法获取模型,总的来说这个方法操作难度较大。针对每一个方向都有各种实现方式,每一种方式也有各自的优缺点。
从这些研究者的研究内容看出,虽然软件版本演化分析算法和源码的差异分析算法种类繁多,但是大多是从语义的角度切入,基于AST的版本演化对比分析已经成为了源码分析的热点。相对于原有的静态源码分析,针对整个的源码版本的整体架构的分析算法,演化分析的准确性和效率都不高。
发明内容
本发明的目的在于提供一种能提高获取演化信息的准确率,并能提高软件版本演化分析效率的基于AST的软件版本演化对比分析方法。
本发明的目的是这样实现的:
步骤一:通过Unix的Diff命令对两个软件版本源码进行比对分析,根据分析结果文件 Patch获取代码行的增加、删除、改变的情况,将变化的源码分为三种源码块;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710258269.3/2.html,转载请声明来源钻瓜专利网。