克隆代码检测系统设计与实现文献综述

 2022-09-22 11:09

  1. 文献综述(或调研报告):

在源代码和其他软件产品中,原始(代码)片段在有或没有修改的情况下被复制和粘贴。 粘贴的(代码)片段被称为克隆,这种活动称为(代码)克隆。 但是在软件工程领域,代码克隆这一术语仍在寻找合适的定义。根据前人的探索与实践,克隆代码主要分成以下几种类型:

类型1(精确克隆):除了空格和注释的变化外,程序片段相同。

类型2(重命名/参数化克隆):除了标识符,文字,类型,布局和注释的更改之外,在结构/语法上相似的程序片段。

类型3(未遂克隆):除了标识符,文字,类型和布局的更改之外,还通过进一步修改(如语句插入/删除)复制的程序片段。

类型4(语义克隆):程序片段功能相似而不是文本相似。

克隆代码检测的起初阶段,均是针对前三种类型,可能是鉴于前三类相对第四类比较容易检测,因为功能等价本身就是一个模棱两可的概念,而且也不是可以百分百检测的。随着时间的推移,第四类克隆代码的检测逐步受到更多的关注,陆续有国内外学者开始着手研究与探索。在查阅一些文献之后,了解到克隆检测的方法大致可以分为一下两类[1,5]

  1. 基于文本相似度的检测方法

在基于文本的克隆检测技术中,两个代码片段以文本/字符串/词的形式被比较,类似的片段报告为克隆代码。基于文本的检测方法没有使用重量级的语法分析工具,且匹配算法实现起来也比基于树或者图的匹配算法更简单,因此具有较高的时空效率,而且此方法与具体的编程语言无关,所以适用于对大型软件系统的检测,但是由于基于文本的检测方法没有充分考虑程序的语义逻辑信息,所以检测的准确率不高[1]

在基于令牌的克隆检测技术中,首先,通过词法分析从源代码中提取令牌。然后将一组令牌(在特定粒度级别)形成为序列。通过令牌比较的基于后缀树或后缀阵列的令牌是基于令牌的克隆检测算法的核心。这种匹配检测技术是文献中最常引用的技术。令牌序列被送入后缀树。该方法使用“仿函数”作为维护其顺序的标识符和文字的具体值的抽象[1]。这种方法应用十分广泛,例如CCFinder[6]工具,和以基于令牌的克隆检测作为引擎的SHINOBI工具[9]。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。