基于代码克隆检测的抽取方法重构模式识别
2019-09-13张志浩杨春花
计算机应用与软件 2019年9期
张志浩 杨春花
(齐鲁工业大学(山东省科学院)计算机科学与技术学院 山东 济南 250000)
0 引 言
代码重构[1]是指使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构,提高其可理解性、可维护性和可扩展性,降低其修改成本,是一种在结构层次上的代码整理技术。
在现代软件开发的过程中,代码变更包括特征增加、修复bug以及代码重构等。这些不同类型的变更代码混合在一起使得阅读和理解代码变更趋于困难,如果将重构的代码变更与其他变更进行隔离,将有利于阅读和理解。
为了实现代码重构与其他变更的隔离,应该设法对代码重构模式进行自动识别。当前,国内外学者对软件重构识别进行了深入的研究探索。主要相关的研究有:Werβgerber等[2]提出了基于签名分析的方法;Prete等[3]开发了REF-FINDER;Fokaefs等[4]开发了一种eclipse插件,能对一种或者几种重构模式进行识别;钟林辉等[5]提出了一种基于版本的多重软件重构自动检测技术;刘洋[6]提出了一种可以识别函数抽取的方法。但上述算法面对变更的文本时忽视了形式不同而含义相似的情况,比如说一些变更仅仅是变量名称改变,或者仅仅是字母大小写变换,含义并没有变。
克隆代码又称为重复代码,一般指存在于程序代码中的相似或者相同的代码段,对它的检测技术称为代码克隆检测技术。当前对克隆代码检测的技术已经很成熟了,刘复星[7]提出一种基于深度学习的代码克隆检测方法,汪敏[8]提出一种基于依赖图的代码克隆检测方法,王杰[9]提出一种基于序列匹配和字节码的代码克隆检测方法,林蝉[10]提出一种基于索引的分布式代码克隆检测方法。……
登录APP查看全文
