本发明公开一种基于频繁序列挖掘的代码克隆检测方法,主要解决现有代码克隆检测方法无法识别插入删除重复代码和检测性能低问题。其实现方案是:通过生成词法工具和语法解析工具对源代码进行解析获取抽象语法树;解析抽象语法树获取源代码函数或方法中的Token集并对其进行标准化处理;利用处理后的Token组成行序列建立序列数据库;使用闭合模式挖掘算法ClaSp对序列数据库进行挖掘,构建候选克隆对并进行去重和通过设置阈值对其过滤;对剩下的候选克隆对中的克隆行进行分组和匹配,获取最终克隆对,完成代码克隆检测。本发明具有良好的检测精度,提高了检测性能,可应用于教学中学生代码的抄袭检测和常规软件中复制粘贴代码的检测。
📄 2022109116991
📂 G06F11_3604
👤 西安电子科技大学
📅 2022-07-28
本发明提供了一种基于LLVM的克隆代码检测方法,包括预处理步骤,合并映射步骤,提取分片步骤,匹配步骤,汇总步骤。首先对源代码预处理步骤,对源程序通过的前端转换成中间语言,然后对装换后的程序进行程序切片操作,获得中间语句之间的依赖关系,这一操作的获取LLVM IR语言的依赖图。然后对取得的数据进一步处理,获取更加精简的语句关系集。然后使用分割方法将语句集分割,在以分布式对比方法获取克隆代码。本发明中通过切边结果来获得关系集样本,并且保留了语句的特征。本发明将提高代码检测的匹配精度,利用LLVM IR中间语言带来的额外特征性,结合多种匹配方式丰富了匹配方法,实现了更加好的克隆代码检测。
📄 2017112746651
📂 G06F8_75
👤 南京邮电大学
📅 2017-12-06