中文

CC2Vec:结合类型化标记与对比学习的代码克隆检测

软件工程 2024-05-02 v1

摘要

随着开源社区的发展,代码常常在多个软件系统中被复制、传播和演化,这给软件系统带来不确定性和风险(例如错误传播和版权侵权)。因此,进行代码克隆检测以发现相似的代码对至关重要。已提出许多方法来检测代码克隆,其中基于标记的工具可扩展到大规模代码。然而,由于缺乏程序细节,这些方法无法处理更复杂的代码克隆,即语义代码克隆。本文引入CC2Vec,一种新的代码编码方法,用于快速识别简单代码克隆,同时增强语义代码克隆检测的能力。为保留标记之间的程序细节,CC2Vec根据语法类型将其分为不同类别(即类型化标记),然后应用两个自注意力机制层对其进行编码。为抵抗语义代码克隆中代码结构变化,CC2Vec执行对比学习以减少不同代码实现引入的差异。我们在两个广泛使用的数据集(即BigCloneBench和Google Code Jam)上评估了CC2Vec,结果表明该方法能够有效检测简单代码克隆。此外,CC2Vec不仅通过简单微调即可实现与ASTNN、SCDetector和FCCA等广泛使用的语义代码克隆检测系统相当的性能,还在检测效率方面显著优于这些方法。

关键词

引用

@article{arxiv.2405.00428,
  title  = {CC2Vec: Combining Typed Tokens with Contrastive Learning for Effective Code Clone Detection},
  author = {Shihan Dou and Yueming Wu and Haoxiang Jia and Yuhao Zhou and Yan Liu and Yang Liu},
  journal= {arXiv preprint arXiv:2405.00428},
  year   = {2024}
}

备注

21 pages, 7 figures