一种代码相似度检测方法
申请人信息
- 申请人:广东工业大学
- 申请人地址:510000 广东省广州市东风东路729号
- 发明人: 广东工业大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种代码相似度检测方法 |
| 专利类型 | 发明申请 |
| 申请号 | CN202311359831.3 |
| 申请日 | 2023/10/19 |
| 公告号 | CN117609005A |
| 公开日 | 2024/2/27 |
| IPC主分类号 | G06F11/36 |
| 权利人 | 广东工业大学 |
| 发明人 | 黄剑锋; 列志毅; 苏庆; 黄晓锋; 谢国波 |
| 地址 | 广东省广州市番禺区大学城外环西路100号 |
摘要文本
本发明公开的属于代码相似度检测技术领域,具体为一种代码相似度检测方法,包括具体步骤如下:构建待相似度检测的源代码对及其相似度标签,通过代码分析工具对源代码对进行解析生成AST、CFG和函数的调用关系,然后根据函数的调用关系,在AST和CFG相应的节点上添加函数调用边,并使用词嵌入技术将AST和CFG的节点转化为向量表示,本发明可以更全面的提取代码信息,提升对代码的相似度检测能力;本发明同时使用含函数调用关系的AST和CFG进行代码相似度检测,可以更全面的提取代码信息,能从语法和语义两方面提取源代码的特征,弥补了现有基于AST或CFG的相似度检测方法对源代码特征提取不充分的问题。
专利主权项内容
1.一种代码相似度检测方法,其特征在于,包括具体步骤如下:步骤一,构建相似代码数据集模块:构建待相似度检测的源代码对及其相似度标签;步骤二,数据处理模块:通过代码分析工具对源代码对进行解析生成AST、CFG和函数的调用关系,然后根据函数的调用关系,在AST和CFG相应的节点上添加函数调用边,并使用词嵌入技术将AST和CFG的节点转化为向量表示;步骤三,代码表示生成模块:将数据处理后的AST和CFG输入到图注意力网络中,使得每个节点的向量能够学习到其相邻节点的特征,然后采用全局注意力池化技术对AST和CFG进行读出操作,得到语法嵌入向量和语义嵌入向量,然后将语法嵌入向量和语义嵌入向量进行向量拼接,输出源代码对的表示向量;步骤四,相似度检测模块:将源代码对的融合语法和语义嵌入表示向量输入到由一个单层的双向长短神经网络和三层全连接层组成的相似度计算器中,以预测其检测结果;步骤五,模型训练模块:根据相似度检测模块的输出结果,计算损失值,训练更新模型中GAT层、BILSTM层和全连接层网络参数。