国内刊号:51-1307/TP
国际刊号:1001-9081
发布日期:
作者:万泽轩, 谢春丽, 吕泉润, 梁瑶
单位:江苏师范大学 计算机科学与技术学院,江苏 徐州 221116
关键词:代码克隆检测,语义克隆,抽象语法树,深度学习,图匹配网络
基金:国家自然科学基金资助项目(62276119);江苏师范大学研究生科研与实践创新计划项目(2022XKT1530)
在软件工程领域,基于语义相似的代码克隆检测方法可以降低软件维护的成本并预防系统漏洞,抽象语法树(AST)作为典型的代码抽象表征形式,已成功应用于多种程序语言的代码克隆检测任务,然而现有工作主要利用原始AST提取代码的语义,没有深入挖掘AST中的深层语义和结构信息。针对上述问题,提出一种基于依赖增强的分层抽象语法树(DEHAST)的代码克隆检测方法。首先,对AST进行分层处理,将AST划分得到不同的语义层次;其次,为AST的不同层次添加相应的依赖增强边构建DEHAST,将简单的AST变成具有更丰富程序语义的异构图;最后,使用图匹配网络(GMN)模型检测异构图的相似性,实现代码克隆检测。在BigCloneBench和Google Code Jam两个数据集上的实验结果显示,DEHAST能够检测100%的Type-1和Type-2代码克隆、99%的Type-3代码克隆和97%的Type-4代码克隆;与基于树的方法ASTNN(AST-based Neural Network)相比,F1分数均提高了4个百分点,验证了DEHAST可以较好地完成代码语义克隆检测。
来源:2024年第4期
《计算机应用》期刊编辑部