10.13705/j.issn.1671-6833.2023.03.012
基于Transformer和卷积神经网络的代码克隆检测
基于深度学习的代码克隆检测方法往往作用在代码解析的词序列上或是整棵抽象语法树上,使用基于循环神经网络的时间序列模型提取特征,这会遗漏源代码的重要语法语义信息并诱发梯度消失.针对这一问题,提出一种基于 Transformer和卷积神经网络的代码克隆检测方法(TCCCD).首先,TCCCD 将源代码表示成抽象语法树,并将抽象语法树切割成语句子树输入给神经网络,其中,语句子树由先序遍历得到的语句结点序列构成,蕴含了代码的结构和层次化信息.其次,在神经网络设计方面,TCCCD 使用 Transformer 的 Encoder 部分提取代码的全局信息,再利用卷积神经网络捕获代码的局部信息.再次,融合 2 个不同网络提取出的特征,学习得到蕴含词法、语法和结构信息的代码向量表示.最后,采用两段代码向量的欧氏距离表征语义关联程度,训练一个分类器检测代码克隆.实验结果表明:在 OJClone 数据集上,精度、召回率、F1 值分别能达到 98.9%、98.1%和 98.5%;在 Big-CloneBench数据集上,精度、召回率、F1 值分别能达到 99.1%、91.5%和 94.2%.与其他方法对比,精度、召回率、F1值均有提升,所提方法能够有效检测代码克隆.
代码克隆检测、抽象语法树(AST)、Transformer、卷积神经网络、代码特征提取
44
TP393(计算技术、计算机技术)
十三五预研项目2019333/6152
2023-11-07(万方平台首次上网日期,不代表论文的发表时间)
共7页
12-18