基于分层特征的代码克隆检测方法
2021-10-15张冬梅陈永乐杨玉丽
计算机工程 2021年10期
张冬梅,陈永乐,杨玉丽
(太原理工大学 信息与计算机学院,山西 晋中 030600)
0 概述
代码克隆是指存在于代码库中两个及以上相同或者相似的源代码片段[1],当开发人员通过复制、粘贴、修改等方式重用现有代码片段时会产生代码克隆[2]。现有研究表明一个软件系统的全部代码库中平均有7%~23%是克隆代码[3-4],例如,Linux 中存在22.3%[5]的代码克隆,JDK 中存在29%[6]的代码克隆。代码克隆在一定程度上可提高开发效率,降低函数调用的时间成本,但也增加了软件维护的成本,例如:克隆一段含有未知bug 的代码,会导致bug 传播[7],维护者需要检查所有克隆代码中是否存在该bug[8];修改一段代码需要对该段代码中的所有克隆进行一致性修改,若修改不一致则会引入新的bug,降低软件整体质量。目前,研究人员提出4 种代码克隆类型[9]。类型1 表示除了空格和注释之外,两个代码片段完全相同的代码对。类型2 表示除了变量名、类型名和函数名之外都相同的代码对。类型3表示有若干语句的增删,或使用不同的标识符、文字、类型、空格、布局和注释,但是依然相似的代码对。类型4 表示相同功能的异构代码,在文本或者语法上不相似,但在语义上具有相似性。
为维护软件质量、检测和防止新的bug 及降低开发风险和成本,研究人员提出多种代码克隆检测技术和工具[10],然而现有检测方法除了token 转换以外,其他方法都需要将源代码转换为抽象语法树或者程序依赖图等,中间过程复杂且成本高,难以扩展应用范围[11]。……
登录APP查看全文
