System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及代码相似性检测,具体涉及一种基于图神经网络的代码相似性检测方法、设备及介质。
技术介绍
1、代码相似性检测是软件工程领域的一项基本活动,它是指通过分析源代码的特征来评估不同代码片段之间的相似程度的过程,在软件剽窃检测、定位重复代码片段、代码搜索和代码重构等场景具有广泛应用。
2、基于文本的代码相似性检测方法实现简单,计算速度快,缺点是缺乏对代码结构和语义的理解,容易受变量名、格式等细节影响。在现有技术中,针对代码相似性检测的研究主要是基于词法和语法分析的代码相似性检测,已有的方法虽然捕获代码的结构和语义信息,但仍然存在以下局限:
3、(1)计算复杂度高:使用传统算法(如图匹配算法)对抽象语法树、控制流图等进行分析时间复杂度极高,在实践中难以推广到有大量代码片段的应用场景。
4、(2)缺乏可解释性:当前结合深度学习的方法通常将代码相似度的计算视为纯粹的回归任务,仅输出相似度分值,而无法解释具体的相似性来源,尤其是在控制流图或抽象语法树的结构层面上。这种“黑箱”模型缺乏对代码内部结构匹配的明确解释,导致相似性计算结果难以理解,限制了其在实际应用中可用性。
5、综上所述,亟需一种基于图神经网络的代码相似性检测方法、设备及介质,能够同时降低计算复杂度并提升对相似性计算结果的可解释性,以更好地满足实际应用需求。
技术实现思路
1、本专利技术目的在于提供一种基于图神经网络的代码相似性检测方法、设备及介质,具体技术方案如下:
< ...【技术保护点】
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所述的代码相似性检测方法,其特征在于,所述节点匹配信息包括节点匹配置信度和...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。