代码相似性检测及其一致性维护研究

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:youdong1964
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在软件开发和维护过程中,开发者们经常采用复制代码片段不经过任何修改直接粘贴复用、或者粘贴后经过些许修改后复用的开发方法以提高开发效率,这使得软件系统中存在大量相似的代码片段,这些代码片段被称为克隆。虽然代码克隆可以提高开发效率,但是代码克隆也给软件维护带来了巨大的挑战。当其中一个代码片段发生修改,即与克隆中其他的代码片段的一致性被破坏,很有可能会在软件系统中引入与克隆相关的错误。这些错误不容易被发现而且可能会在软件演化过程中潜伏很长时间,可能会对代码质量造成严重威胁。代码克隆检测能帮助开发者发现软件系统中的相似代码片段,而代码一致性维护能帮助维护者管理这些相似代码片段,从而防止克隆相关的错误的引入。根据克隆代码是否用同一种程序语言编写,可以将代码克隆检测技术分为单语言和跨语言的克隆代码检测。目前,代码克隆检测技术主要针对同一种语言编写的代码的相似性进行检测,跨语言的克隆代码检测研究存在着巨大挑战。不同的程序语言有不同的语法和应用程序编程接口。不同语言的代码片段,即使实现相同的功能,在结构上也有差异,而不同的程序语言之间很少存在共同的中间表示语言来比较代码片段进而区分代码克隆。而现有的跨语言的代码克隆检测技术,仅支持跨.NET语言家族中的语言,这些语言都共享一个中间表示语言。然而,并不是所有程序语言都共享该中间表示语言。为此,本文引入不需要中间表示语言的跨语言克隆检测方法。此外,本文还以移动应用为研究对象,利用该方法进一步探索差异更大的跨平台的代码相似性的检测方法。相似代码的一致性维护则是防止克隆相关错误的另一个关键技术。在同一代码克隆组(对)中,当其中一个克隆实例发生修改时,克隆组(对)中的其他克隆实例可能需要相同或者相似的修改来维持克隆代码之间的一致性。然而,相似代码的一致性维护技术的研究滞后于相似代码的检测,现有的单语言克隆代码的一致性维护技术只能维护差异较小的克隆代码之间的一致性,这并不能满足相似代码一致性维护的需求,为此,本文提出规则制导的对差异较大但仍然存在相似性的代码片段的一致性进行维护的方法。此外,本文还提出一种基于双向变换的相似代码一致性维护方法,同步重构前后结构上差异较大的代码。本文主要的贡献如下:·本文提出第一个无需中间表示语言的检测跨语言克隆的方法CLCMiner。该方法从软件演化的历史版本中挖掘克隆代码,通过比较软件历史版本中的代码变化将跨语言克隆检测问题转化为差异匹配问题。·本文研究不同程序语言编写的不同移动平台的同一应用的标识符的相似性,并透过标识符相似性洞察检测跨平台克隆的可行方法。·本文提出一种规则制导的代码克隆同步的方法CCSync。该方法可以抹平克隆代码相互间的结构上的差异,从克隆关系中提取出同步规则,当克隆中的一个代码片段被更新,通过同步规则自动将更新传导给其他代码片段中。·本文提出一种利用双向变换对重构前后代码进行同步与维护的方法,并应用该方法实现对重构后代码选择性的撤销这一功能,帮助程序员可以保留重构以后代码的修改而撤销重构操作。本文通过在一个具体的重构上实现了选择性的撤销验证了该方法的可行性。本文基于上述方法,开发了对应的工具原型,并设计实验评估其精度和准度,实验结果显示上述方法具有较高的精度与准度,从而验证了上述方法的有效性。
其他文献
复杂信息网络的元素量级大,而且所包含的数据还呈现多样化、异质化等特征。随着科学技术的发展,很多实体之间的交互信息被记录。复杂网络的社区发现技术因在群体研究、智能推
班组建设工作在电力企业中具有极为重要的意义,班组属于电力企业中各项工作的基础组成单位,只有充分做好班组建设与管理工作,才能够使电力企业在发展期间的各项工作有条不紊
西方经济学前沿进展中一个基本特征是对于方法论讨论兴趣的日益上升 ,本文分析并评价了数学化及计量学化、物理学化、社会学化、演化论化、古典主义复兴等方法论趋向及其优势
为研究华北落叶松(Larix principis-rupprechtii)次生林的种内、种间关系,探讨环境因子对其竞争的影响及华北落叶松对竞争的响应机制,本文以山西太岳山为例,选取灵空山林场和
网络交往是一把"双刃剑",它在给大学生的学习、生活带来机遇的同时,也带来挑战。要引导大学生正确认识网络交往,建立网络交往准则,加强网络交往时代高校思想政治教育的文化内
目的:研究女贞子总黄酮对高脂模型大鼠脂代谢的影响并探讨其作用机制.方法:以Triton诱导大鼠高脂模型,女贞子总黄酮以15,45,150mg/kg体质量给药3d,以苯扎贝特为阳性对照,生化方法检测
信托制度起源于英国,自诞生以来,信托作为一种有效的财产管理方式被世界上很多国家移植继受,成为经济发展中一项新的财产管理工具。随着社会经济的发展、财富形式的多元化以及投
由于晶格、自旋、电荷和轨道多种自由度之间的强耦合作用,过渡金属氧化物展现了许多奇特的物理和化学性质,如高介电常数、压电性、热电性、铁电性、高温超导性与庞磁电阻效应,以
自2013年余额宝推出后,各家银行也推出银行宝类产品。本文在分析银行推出宝类产品的成本收益基础上,选取股份制商业银行(1)2014~2016年相关数据,通过构建模型,说明银行推出宝
近年来,我国汽车保有量年平均增长速度为15%-20%,而停车泊位增速仅有3%左右,停车泊位和车辆的增长速度严重失衡,现有泊位量和增长量远远小于泊车的需求量,从而引发停车难及交通拥堵等问题。因此市面上出现了如巷道堆垛式、垂直升降式等机械式立体车库对车辆进行自动存取,其占地面积少,智能化程度高,但开发及维护成本高,结构复杂,且可靠性难以保证。传统露天停车场仍然是人们停车的主流方式,但是土地利用率不高。