System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于图神经网络的代码相似性检测方法、设备及介质技术_技高网
当前位置: 首页 > 专利查询>中南大学专利>正文

一种基于图神经网络的代码相似性检测方法、设备及介质技术

技术编号:43292592 阅读:0 留言:0更新日期:2024-11-12 16:11
本发明专利技术涉及代码相似性检测技术领域,具体涉及一种基于图神经网络的代码相似性检测方法、设备及介质,所述方法包括如下步骤:调用控制流图转换模块,将待检测代码转换为控制流图,对所述控制流图进行拓扑结构编码,得到节点特征向量;构建图编辑距离计算模型;采用模型损失函数对图编辑距离计算模型进行训练,调用训练后的图编辑距离计算模型同时预测两个控制流图之间的图编辑距离和节点匹配置信度矩阵,其中图编辑距离作为代码相似性的量化指标,节点匹配置信度矩阵可生成图编辑路径。本发明专利技术采用控制流图捕获代码的逻辑和语义,利用基于图神经网络的深度学习模型来对控制流图进行分析,进而达到检测代码相似性的目的。

【技术实现步骤摘要】

本专利技术涉及代码相似性检测,具体涉及一种基于图神经网络的代码相似性检测方法、设备及介质


技术介绍

1、代码相似性检测是软件工程领域的一项基本活动,它是指通过分析源代码的特征来评估不同代码片段之间的相似程度的过程,在软件剽窃检测、定位重复代码片段、代码搜索和代码重构等场景具有广泛应用。

2、基于文本的代码相似性检测方法实现简单,计算速度快,缺点是缺乏对代码结构和语义的理解,容易受变量名、格式等细节影响。在现有技术中,针对代码相似性检测的研究主要是基于词法和语法分析的代码相似性检测,已有的方法虽然捕获代码的结构和语义信息,但仍然存在以下局限:

3、(1)计算复杂度高:使用传统算法(如图匹配算法)对抽象语法树、控制流图等进行分析时间复杂度极高,在实践中难以推广到有大量代码片段的应用场景。

4、(2)缺乏可解释性:当前结合深度学习的方法通常将代码相似度的计算视为纯粹的回归任务,仅输出相似度分值,而无法解释具体的相似性来源,尤其是在控制流图或抽象语法树的结构层面上。这种“黑箱”模型缺乏对代码内部结构匹配的明确解释,导致相似性计算结果难以理解,限制了其在实际应用中可用性。

5、综上所述,亟需一种基于图神经网络的代码相似性检测方法、设备及介质,能够同时降低计算复杂度并提升对相似性计算结果的可解释性,以更好地满足实际应用需求。


技术实现思路

1、本专利技术目的在于提供一种基于图神经网络的代码相似性检测方法、设备及介质,具体技术方案如下:

<p>2、一种基于图神经网络的代码相似性检测方法,包括如下步骤:

3、s1:调用控制流图转换模块,将待检测代码转换为控制流图,对所述控制流图进行拓扑结构编码,得到节点特征向量;

4、s2:构建图编辑距离计算模型,所述图编辑距离计算模型包括跨图特征聚合模块、节点匹配模块、注意力池化、神经张量网络和图编辑距离预测模块,

5、所述跨图特征聚合模块用于迭代更新节点特征向量,得到节点嵌入,

6、所述节点匹配模块用于处理节点嵌入并输出图对间节点的匹配信息,

7、所述注意力池化用于处理节点嵌入并输出图嵌入,

8、所述神经张量网络用于处理图嵌入并输出图嵌入交互特征,

9、所述图编辑距离预测模块用于计算节点匹配信息和图嵌入交互特征,得到图编辑距离;

10、s3:采用模型损失函数对图编辑距离计算模型进行训练,调用训练后的图编辑距离计算模型同时预测两个控制流图之间的图编辑距离和节点匹配置信度矩阵,所述图编辑距离用于判断待检测代码之间的相似性,节点匹配置信度矩阵可用于生成图编辑路径。

11、优选的,将待检测代码转换为控制流图,对所述控制流图进行拓扑结构编码,得到节点特征向量,具体是:

12、分别对待检测的两段代码进行词法和语法分析,将待检测代码转换为带有结构和语义信息的控制流图,将控制流图中的基本块进行编码处理,得到节点特征信息和边特征信息,将所述节点特征信息和边特征信息转换为深度学习模型中的特征向量。

13、优选的,所述跨图特征聚合模块包括层跨图特征聚合层,所述跨图特征聚合层利用图神经网络的消息传递机制聚合邻居节点以及对应边的特征,并通过注意力机制捕获另外一个控制流图上的信息,从而生成带有细粒度跨图交互特征的节点嵌入。

14、优选的,所述节点匹配模块包括两个并行的节点匹配工作流和多层感知机,

15、两个并行的节点匹配工作流基于得到的节点嵌入预测匹配结果,所述节点匹配工作流包括个节点匹配子模块;

16、多层感知机用于归纳不同尺度上的匹配结果,得到最终的节点匹配信息。

17、优选的,所述节点匹配信息包括节点匹配置信度和节点匹配成本。

18、优选的,在图编辑距离预测模块中,所述图编辑距离利用节点匹配成本的加权和与偏置值来预测,所述偏置值由连接图对之间图嵌入的神经张量网络计算得到。

19、优选的,所述模型损失函数包括匹配损失、图编辑距离值损失和损失超参数,所述损失超参数用于平衡所述匹配损失和图编辑距离值损失。

20、优选的,在模型训练中,

21、所述匹配损失的计算方式是,取节点匹配置信度矩阵与多个最优节点匹配的log似然最小值作为匹配损失;

22、所述图编辑距离值损失的计算方式是,将图编辑距离值转换为相似度得分,采用相似度得分的均方误差表示图编辑距离值损失。

23、另外,本专利技术还包括一种计算机设备,包括存储器和处理器;

24、所述存储器用于存储可在处理器上运行的计算机程序;

25、所述处理器用于执行所述计算机程序时实现如上所述的代码相似性检测方法的步骤。

26、另外,本专利技术还包括一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的代码相似性检测方法的步骤。

27、应用本专利技术的技术方案,具有以下有益效果:

28、本专利技术采用控制流图捕获代码的逻辑和语义,利用基于图神经网络的深度学习模型来对控制流图进行分析,进而达到检测代码相似性的目的。与现有的深度学习代码相似性检测方法相比,本专利技术中的模型不仅能够计算控制流图之间的图编辑距离作为代码相似性度量,还可以生成具体的图编辑路径,从而确保了模型的可解释性。

29、除了上面所描述的目的、特征和优点之外,本专利技术还有其它的目的、特征和优点。下面将参照图,对本专利技术作进一步详细的说明。

本文档来自技高网
...

【技术保护点】

1.一种基于图神经网络的代码相似性检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的代码相似性检测方法,其特征在于,将待检测代码转换为控制流图,对所述控制流图进行拓扑结构编码,得到节点特征向量,具体是:

3.根据权利要求1所述的代码相似性检测方法,其特征在于,所述跨图特征聚合模块包括层跨图特征聚合层,所述跨图特征聚合层利用图神经网络的消息传递机制聚合邻居节点以及对应边的特征,并通过注意力机制捕获另外一个控制流图上的信息,从而生成带有细粒度跨图交互特征的节点嵌入。

4.根据权利要求1所述的代码相似性检测方法,其特征在于,所述节点匹配模块包括两个并行的节点匹配工作流和多层感知机,

5.根据权利要求1所述的代码相似性检测方法,其特征在于,所述节点匹配信息包括节点匹配置信度和节点匹配成本。

6.根据权利要求1所述的代码相似性检测方法,其特征在于,在图编辑距离预测模块中,所述图编辑距离利用节点匹配成本的加权和与偏置值来预测,所述偏置值由连接图对之间图嵌入的神经张量网络计算得到。

7.根据权利要求1所述的代码相似性检测方法,其特征在于,所述模型损失函数包括匹配损失、图编辑距离值损失和损失超参数,所述损失超参数用于平衡所述匹配损失和图编辑距离值损失。

8.根据权利要求7所述的代码相似性检测方法,其特征在于,在模型训练中,

9.一种计算机设备,其特征在于,包括存储器和处理器;

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的代码相似性检测方法的步骤。

...

【技术特征摘要】

1.一种基于图神经网络的代码相似性检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的代码相似性检测方法,其特征在于,将待检测代码转换为控制流图,对所述控制流图进行拓扑结构编码,得到节点特征向量,具体是:

3.根据权利要求1所述的代码相似性检测方法,其特征在于,所述跨图特征聚合模块包括层跨图特征聚合层,所述跨图特征聚合层利用图神经网络的消息传递机制聚合邻居节点以及对应边的特征,并通过注意力机制捕获另外一个控制流图上的信息,从而生成带有细粒度跨图交互特征的节点嵌入。

4.根据权利要求1所述的代码相似性检测方法,其特征在于,所述节点匹配模块包括两个并行的节点匹配工作流和多层感知机,

5.根据权利要求1所述的代码相似性检测方法,其特征在于,所述节点匹配信息包括节点匹配置信度和...

【专利技术属性】
技术研发人员:杨柳郑乾坤龙军王子冬
申请(专利权)人:中南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1