随着计算机技术的不断发展,软件的规模也在逐渐扩大。但由于在代码开发过程中的各种原因比如主观抄袭,使用复用技术等,导致产生了代码克隆现象。代码克隆虽然能帮助软件系统的开发,但在复杂的软件系统如大型国防软件系统、商用软件系统等会带来漏洞或者后门等危险以及知识产权的纠纷等问题。传统的代码克隆检测主要采用人工特征提取并进行比较,检测效果较差。基于深度机器学习的方法能够挖掘出更深层的语法语义信息,可以有效提升检测精度,因此相关的研究成为热点。本文在分析总结现有国内外基于深度学习的代码克隆检测技术的基础上,针对使用的不同中间表示形式和是否有标签数据提出了三个主要的研究内容并在每个研究内容之上提出了本论文的改进方法。(1)基于AST树表示形式的深度有监督代码克隆检测研究。本论文提出了一种结合树形卷积网络和自注意力双向门控循环单元的神经网络 TBCGSA(Tree Based CNN with BiGRU and Self-Attention)。通过实验,在本论文使用的数据集上,检测准确率取得了比现有模型更好的效果。(2)基于图神经网络的深度有监督代码克隆检测研究。本论文提出了一种将源代码的AST抽象语法树进行加边操作的方法,并使用了两种常见的图神经网络进行代码特性向量的提取。通过实验,在本论文使用的数据集上,在检测效率上取得了比较好的效果。(3)基于AST树表示的深度无监督代码克隆检测研究。本论文提出了一种基于多叉树输入的改进递归自动编码器网络,MTBRAE(Multi Tree Based Rucursive Autoencoders)。通过实验,在本论文使用的数据集上,在高语法克隆和语义克隆方面,取得比现有的其他传统和无监督代码克隆检测方法更好的效果。
暂无评论