- 简介随着开源社区的发展,代码经常被复制、传播和进化到多个软件系统中,这给软件系统带来了不确定性和风险(例如,错误传播和版权侵犯)。因此,进行代码克隆检测以发现相似的代码对非常重要。已经提出了许多方法来检测代码克隆,其中基于标记的工具可以扩展到大型代码。然而,由于缺乏程序细节,它们无法处理更复杂的代码克隆,即语义代码克隆。在本文中,我们介绍了CC2Vec,一种新颖的代码编码方法,旨在快速识别简单的代码克隆,同时增强语义代码克隆检测的能力。为了保留标记之间的程序细节,CC2Vec根据语法类型将它们分为不同的类别(即类型标记),然后应用两个自注意机制层来对它们进行编码。为了抵抗语义代码克隆的代码结构变化,CC2Vec执行对比学习以减少不同代码实现引入的差异。我们在两个广泛使用的数据集(即BigCloneBench和Google Code Jam)上评估了CC2Vec,结果表明我们的方法可以有效地检测简单的代码克隆。此外,CC2Vec不仅通过简单微调达到了与ASTNN、SCDetector和FCCA等广泛使用的语义代码克隆检测系统相当的性能,而且在检测效率方面显著超越了这些方法。
-
- 图表
- 解决问题CC2Vec论文试图解决代码克隆检测中的语义克隆问题,即在保留程序细节的同时,增强对语义克隆的检测能力。
- 关键思路CC2Vec通过将标记分为不同的类别,并应用两个自我注意力机制层来编码它们,以保留标记之间的程序细节。此外,CC2Vec还使用对比学习来降低不同代码实现引入的差异,以抵抗语义克隆的代码结构变化。
- 其它亮点论文在两个广泛使用的数据集上评估了CC2Vec,结果表明该方法可以有效地检测简单的代码克隆。此外,CC2Vec不仅通过简单的微调就可以达到与ASTNN、SCDetector和FCCA等广泛使用的语义代码克隆检测系统相当的性能,而且在检测效率方面显著优于这些方法。
- 与此相关的研究包括ASTNN、SCDetector和FCCA等语义代码克隆检测系统。
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流