一句话:提出零样本跨语言代码克隆检测方法 ZC^3,无需平行数据即可对齐多语言表示并检测克隆。
跨语言代码克隆检测可帮助平台迁移与项目翻译,但收集跨语言平行数据(尤其低资源语言)代价高昂。本文提出 ZC^3,一种零样本跨语言代码克隆检测方法。它通过对比片段预测在不同编程语言间构建同构表示空间,并引入领域感知学习与循环一致性学习,使表示既跨语言对齐又能区分不同类型克隆。在四个代表性跨语言克隆检测数据集上,ZC^3 的 MAP 分别比当前最优基线提升 67.12%、51.39%、14.85% 和 53.01%;作者还分析了不同语言的表示分布并讨论了方法的有效性。
Developers introduce code clones to improve programming productivity. Many existing studies have achieved impressive performance in monolingual code clone detection. However, during software development, more and more developers write semantically equivalent programs with different languages to support different platforms and help developers translate projects from one language to another. Considering that collecting cross-language parallel data, especially for low-resource languages, is expensive and time-consuming, how designing an effective cross-language model that does not rely on any parallel data is a significant problem. In this paper, we propose a novel method named ZC3 for Z_ero-shot Cross-language Code Clone detection. ZC3 designs the contrastive snippet prediction to form an isomorphic representation space among different programming languages. Based on this, ZC3 exploits domain-aware learning and cycle consistency learning to further constrain the model to generate representations that are aligned among different languages meanwhile are diacritical for different types of clones. To evaluate our approach, we conduct extensive experiments on four representative cross-language clone detection datasets. Experimental results show that ZC3 outperforms the state-of-the-art baselines by 67.12%, 51.39%, 14.85%, and 53.01% on the MAP score, respectively. We further investigate the representational distribution of different languages and discuss the effectiveness of our method.