-
题名基于对比学习的跨语言代码克隆检测方法
- 1
-
-
作者
吕泉润
谢春丽
万泽轩
魏家劲
-
机构
江苏师范大学计算机科学与技术学院
-
出处
《计算机应用研究》
CSCD
北大核心
2024年第7期2147-2152,共6页
-
基金
国家自然科学基金面上基金资助项目(62276119)
江苏师范大学研究生科研与实践创新计划资助项目(2022XKT1538)。
-
文摘
代码克隆检测是提高软件开发效率、软件质量和可靠性的重要手段。基于抽象语法树(abstract syntax tree,AST)的单语言克隆检测已经取得了较为显著的效果,但跨语言代码的AST节点存在同义词、近义词且手工标注数据集成本高等问题,限制了现有克隆检测方法的有效性和实用性。针对上述问题,提出一种基于对比学习的树卷积神经网络(contrastive tree convolutional neuraln etwork,CTCNN)的跨语言代码克隆检测方法。该方法首先将不同编程语言的代码解析为AST,并对AST的节点类型和节点值作同义词转换处理,以降低不同编程语言AST之间的差异;同时,采用对比学习扩充负样本并对模型进行训练,使得在小样本数据集下能够最小化克隆对之间的距离,最大化非克隆对之间的距离。最后在公开数据集上进行了评测,精确度达到95.26%、召回率为99.98%、F_(1)为97.56%。结果表明,相较于现有的最好的CLCDSA和C4方法,该模型的检测精度分别提高了432%和3.73%,其F_(1)值分别提升了29.84%和6.29%,证明了所提模型是一种有效的跨语言代码克隆检测方法。
-
关键词
跨语言
代码克隆
对比学习
抽象语法树
-
Keywords
cross-language
code clone
contrastive learning
abstract syntax tree
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-