CC2Vec: Combining Typed Tokens with Contrastive Learning for Effective Code Clone Detection
arxiv(2024)
摘要
With the development of the open source community, the code is often copied,
spread, and evolved in multiple software systems, which brings uncertainty and
risk to the software system (e.g., bug propagation and copyright infringement).
Therefore, it is important to conduct code clone detection to discover similar
code pairs. Many approaches have been proposed to detect code clones where
token-based tools can scale to big code. However, due to the lack of program
details, they cannot handle more complicated code clones, i.e., semantic code
clones. In this paper, we introduce CC2Vec, a novel code encoding method
designed to swiftly identify simple code clones while also enhancing the
capability for semantic code clone detection. To retain the program details
between tokens, CC2Vec divides them into different categories (i.e., typed
tokens) according to the syntactic types and then applies two self-attention
mechanism layers to encode them. To resist changes in the code structure of
semantic code clones, CC2Vec performs contrastive learning to reduce the
differences introduced by different code implementations. We evaluate CC2Vec on
two widely used datasets (i.e., BigCloneBench and Google Code Jam) and the
results report that our method can effectively detect simple code clones. In
addition, CC2Vec not only attains comparable performance to widely used
semantic code clone detection systems such as ASTNN, SCDetector, and FCCA by
simply fine-tuning, but also significantly surpasses these methods in both
detection efficiency.
更多查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要