-
题名基于依赖增强的分层抽象语法树的代码克隆检测
- 1
-
-
作者
万泽轩
谢春丽
吕泉润
梁瑶
-
机构
江苏师范大学计算机科学与技术学院
-
出处
《计算机应用》
CSCD
北大核心
2024年第4期1259-1268,共10页
-
基金
国家自然科学基金资助项目(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可以较好地完成代码语义克隆检测。
-
关键词
代码克隆检测
语义克隆
抽象语法树
深度学习
图匹配网络
-
Keywords
code clone detection
semantic clone
Abstract Syntax Tree(AST)
deep learning
Graph Matching Network(GMN)
-
分类号
TP311.5
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于对比学习的跨语言代码克隆检测方法
- 2
-
-
作者
吕泉润
谢春丽
万泽轩
魏家劲
-
机构
江苏师范大学计算机科学与技术学院
-
出处
《计算机应用研究》
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
[自动化与计算机技术—计算机软件与理论]
-