System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本说明书一个或多个实施例涉及计算机,尤其涉及一种代码检测方法及相关设备。
技术介绍
1、在各类程序的开发过程中,为了检测编写的程序代码是否符合预期的意图和设计,往往需要进行代码意图一致性检测,即检测代码实际能实现的功能是否和原本要求的功能一致,以使开发人员能够及时发现并修复代码中存在的问题,进而提高代码的正确性和可靠性,保障用户的使用体验,并避免程序被恶意攻击后产生的经济损失。
2、基于此,现有的技术市场上推出了一系列的代码意图一致性检测工具,例如moveprover和fraco等。然而这些检测工具往往只能针对某一种特定语言编写的代码进行一致性检测,例如move prover只能用于检测move语言编写的代码,fraco只能用于检测java语言编写的代码,应用范围狭隘,普适性差,无法满足目前大量的由各种各样语言编写的代码的检测需求。
技术实现思路
1、有鉴于此,本说明书一个或多个实施例提供一种代码检测方法及相关设备。
2、第一方面,本说明书提供了一种代码检测方法,所述方法包括:
3、获取待检测的目标代码以及与所述目标代码对应的代码注释;
4、生成与所述目标代码对应的中间表示,并基于所述中间表示构建对应的异构图,将所述异构图输入至预先训练得到的图神经网络模型中进行特征提取,得到用于描述所述目标代码的嵌入向量;
5、将所述代码注释输入至预先训练得到的语言模型中进行特征提取,得到用于描述所述代码注释的嵌入向量;
6、
7、第二方面,本说明书提供了一种代码检测装置,所述装置包括:
8、获取单元,用于获取待检测的目标代码以及与所述目标代码对应的代码注释;
9、代码特征提取单元,用于生成与所述目标代码对应的中间表示,并基于所述中间表示构建对应的异构图,将所述异构图输入至预先训练得到的图神经网络模型中进行特征提取,得到用于描述所述目标代码的嵌入向量;
10、注释特征提取单元,用于将所述代码注释输入至预先训练得到的语言模型中进行特征提取,得到用于描述所述代码注释的嵌入向量;
11、一致性检测单元,用于对比所述目标代码的嵌入向量和所述代码注释的嵌入向量,以检测所述目标代码实现的功能与所述代码注释的描述是否一致。
12、相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的代码检测方法。
13、相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的代码检测方法。
14、综上所述,一方面,本申请先将待检测的源代码转换成通用的中间表示,再基于该通用的中间表示进行后续一系列的代码意图一致性检测操作,从而可以广泛地满足针对各种语言编写的源代码的检测需求。进一步地,本申请具体可以将基于中间表示构建的异构图(例如抽象语法树)输入至训练得到的图神经网络模型中,依赖于异构图中包含的丰富的代码信息,可以得到更加全面的用于描述所述目标代码的嵌入向量。另一方面,本申请可以将与源代码对应的代码注释输入至训练得到的语言模型中,依赖于语言模型强大的文本序列处理能力,可以得到更加准确且全面的用于描述所述代码注释的嵌入向量。最后,本申请可以通过对比上述目标代码的嵌入向量和代码注释的嵌入向量,更加便捷且全面地检测代码实现的功能与其代码注释描述的功能是否一致,以使开发人员可以及时正确地发现并修复代码中存在的问题,进而提高代码的正确性和可靠性,避免后续产生的经济损失。
本文档来自技高网...【技术保护点】
1.一种代码检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对比所述目标代码的嵌入向量和所述代码注释的嵌入向量,以检测所述目标代码实现的功能与所述代码注释的描述是否一致,包括:
3.根据权利要求1所述的方法,其特征在于,所述生成与所述目标代码对应的中间表示,包括:
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述异构图包括抽象语法树;所述抽象语法树中包括不同类别的多个节点,以及所述多个节点之间用于描述不同关系的多个连边;其中,
5.根据权利要求4所述的方法,其特征在于,所述基于所述中间表示构建对应的异构图,包括:
6.根据权利要求5所述的方法,其特征在于,所述基于所述多个函数中的至少部分函数之间的调用关系,构建与所述至少部分函数对应的抽象语法树,包括:
7.根据权利要求1所述的方法,其特征在于,所述目标代码的嵌入向量,至少用于描述:所述目标代码中包含的函数之间的调用关系。
8.根据权利要求1所述的方法,其特征在于,所述代码注释的嵌入向量,至少用于描述:
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
11.根据权利要求9-10任意一项所述的方法,其特征在于,所述目标代码以及所述多组源代码包括部署在区块链上的智能合约的合约代码,所述代码注释包括所述智能合约的合约意图。
12.一种代码检测装置,其特征在于,所述装置包括:
13.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至11任意一项所述的方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11任意一项所述的方法。
...【技术特征摘要】
1.一种代码检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对比所述目标代码的嵌入向量和所述代码注释的嵌入向量,以检测所述目标代码实现的功能与所述代码注释的描述是否一致,包括:
3.根据权利要求1所述的方法,其特征在于,所述生成与所述目标代码对应的中间表示,包括:
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述异构图包括抽象语法树;所述抽象语法树中包括不同类别的多个节点,以及所述多个节点之间用于描述不同关系的多个连边;其中,
5.根据权利要求4所述的方法,其特征在于,所述基于所述中间表示构建对应的异构图,包括:
6.根据权利要求5所述的方法,其特征在于,所述基于所述多个函数中的至少部分函数之间的调用关系,构建与所述至少部分函数对应的抽象语法树,包括:
7.根据权利要求1所述的方法,其特征在于,所述目标代码的嵌入向量,至少用于描述:所述目标代码中包含的函数之间的调用...
【专利技术属性】
技术研发人员:甄羿,张正,吴志颖,李梓炜,陈翔飞,朵晓东,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。