System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于软件安全,特别是涉及基于图神经网络的源码溯源方法、系统及可读存储介质。
技术介绍
1、随着科学技术的不断进步和互联网中开源精神的不断发扬,开发人员可以通过开源代码仓库,例如github、码云、stack overflow等,迅速地获取到自己所需的代码片段,通过复制、修改等操作在自己的项目中引用已有的开源代码,大幅度地提高项目的开发效率。开源软件为信息技术行业带来了极大便利,提高了开发效率,降低了成本。然而,代码复用和抄袭的问题也随之而来。首先,代码抄袭对软件知识产权保护构成了巨大威胁,会对个人或公司带来负面影响甚至构成犯罪行为;其次,不考虑软件程序的数据和控制流程结构的代码复制-粘贴的操作,会降低程序的稳定能力,可能会带来代码缺陷传播和代码冗余等危害;再者,在软件国产化亟需发展的形势下,开源代码复用和抄袭会带来一定程度的阻碍,增加了代码维护难度和不可控性。因此,软件代码的溯源已成为软件供应链安全的重要研究方向。
2、现有的软件代码溯源方法主要通过最长公共子序列算法或余弦相似度算法等对单个字节码聚合行的特征进行相似度分析得到,缺乏对源码的内容信息和逻辑关系的评估,导致相似度的评估的结果不准确,无法实现精准溯源。
3、为了精细表征源码和准确评估源码相似度并以此进行源码精准溯源,提出一种基于图神经网络的源码溯源方法、系统及可读存储介质。
技术实现思路
1、本专利技术实施例提出一种基于图神经网络的源码溯源方法、系统及可读存储介质,以至少解决相关技术中缺
2、根据本专利技术的一个实施例,提出一种基于图神经网络的源码溯源方法,包括:
3、提取源码对比数据库;
4、对源码进行向量化预处理;
5、构建基于图卷积神经网络的源码特征表征模型;
6、根据源码特征表征模型的图编辑距离计算源码相似度;
7、根据源码相似度对源码进行溯源。
8、在一个示例性实施例中,所述提取源码对比数据库,包括步骤:
9、从开源网站获取源码的工程项目;每个工程项目包含多个代码文件,每个源码文件中包含一个或多个函数;
10、构建源码对比数据库,包含web网站、爬虫、文件处理和数据记录的任一项或多项组合。
11、在一个示例性实施例中,所述对源码进行向量化预处理,包括步骤:
12、将每个代码文件中的每个函数生成抽象语法树;
13、根据节点的类和/或方法和/或语句划分节点类型;
14、根据节点类型将抽象语法树的节点内容进行向量化编码形成节点向量;
15、使用深度优先搜索算法描述抽象语法树的边结构关系形成边结构向量;
16、根据节点向量和边结构向量构成源码的向量化表示。
17、在一个示例性实施例中,所述根据节点的类和/或方法和/或语句划分节点类型,包括步骤:
18、根据节点类结构的同源性和/或功能关联性计算类相似度;
19、根据节点方法结构的路径相似性和/或结果一致性计算方法相似度;
20、根据节点语句结构的一致性计算语句相似度;
21、根据类相似度和/或方法相似度和/或语句相似度计算节点类型关联度;
22、将节点类型关联度大于预设阈值的节点划分为同一节点类型。
23、在一个示例性实施例中,所述构建基于图卷积神经网络的源码特征表征模型,包括步骤:
24、根据一维卷积神经网络构建节点特征一维图神经网络模型;
25、根据二维卷积神经网络构建边特征二维图神经网络模型;
26、节点特征一维图神经网络模型和边特征二维图神经网络模型聚合生成基于图卷积神经网络的源码特征表征模型。
27、在一个示例性实施例中,所述根据一维卷积神经网络构建节点特征一维图神经网络模型是基于一维卷积神经网络构建节点特征提取层,对一维节点向量的特征进行表征;所述根据二维卷积神经网络构建边特征二维图神经网络模型是基于二维卷积神经网络构建边特征提取层,对二维边结构向量的特征进行表征;所述节点特征一维图神经网络模型和边特征二维图神经网络模型聚合生成基于图卷积神经网络的源码特征表征模型是基于全连接层构建聚合层,将节点特征和边特征进行聚合得到源码的ast树图特征表征。
28、在一个示例性实施例中,所述根据源码特征表征模型的图编辑距离计算源码相似度,包括步骤:
29、根据基于图卷积神经网络的源码特征表征模型计算不同函数之间的图编辑距离;
30、根据源码的函数结构计算源码之间的图编辑距离矩阵;
31、根据源码之间的图编辑距离矩阵计算源码相似度。
32、在一个示例性实施例中,所述根据源码相似度对源码进行溯源,包括步骤:
33、计算源码与开源库中各函数的源码相似度;
34、计算源码相似度的最大值并以最大值对应的函数为最相似函数;
35、根据最相似函数识别最相似的工程项目,即实现源码溯源。
36、一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使计算机执行上述的方法。
37、根据本专利技术的另一个实施例,提供了一种基于图神经网络的源码溯源系统,包括:
38、处理器;
39、存储器;
40、以及
41、一个或多个程序,其中所述一个或多个程序被存储在存储器中,并且被配置成由所述处理器执行,所述程序使计算机执行上述方法。
42、本专利技术的基于图神经网络的源码溯源方法、系统及可读存储介质具有的优点是:
43、(1)将源码转化成抽象语法树并根据节点的类和/或方法和/或语句划分节点类型,相比传统的仅分析字节码行的技术方案,可以有效提高源码的表示精确度。
44、(2)根据节点类型将抽象语法树的节点内容进行向量化编码形成节点向量,使用深度优先搜索算法描述抽象语法树的边结构关系形成边结构向量并以此构成源码的向量化表示,相比传统的仅分析字节码行的技术方案,可以充分表征源码的内容信息和逻辑关系。
45、(3)针对节点特征,运用一维图神经网络提取节点特征信息;针对节点之间的邻接矩阵,运用二维图神经网络提取节点之间的边特征,再经过聚合网络,得到源码的ast树的图特征表征并根据图编辑距离计算源码相似度,相比传统的根据最长公共子序列算法或余弦相似度算法计算相似度的技术方案,可以全面有效地评估源码精细特征之间的相似度,提高源码溯源的准确度。
本文档来自技高网...【技术保护点】
1.一种基于图神经网络的源码溯源方法,其特征在于,包括:
2.根据权利要求1所述的基于图神经网络的源码溯源方法,其特征在于,所述提取源码对比数据库,包括步骤:
3.根据权利要求2所述的基于图神经网络的源码溯源方法,其特征在于,所述对源码进行向量化预处理,包括步骤:
4.根据权利要求3所述的基于图神经网络的源码溯源方法,其特征在于,所述根据节点的类和/或方法和/或语句划分节点类型,包括步骤:
5.根据权利要求1所述的基于图神经网络的源码溯源方法,其特征在于,所述构建基于图卷积神经网络的源码特征表征模型,包括步骤:
6.根据权利要求5所述的基于图神经网络的源码溯源方法,其特征在于,所述根据一维卷积神经网络构建节点特征一维图神经网络模型是基于一维卷积神经网络构建节点特征提取层,对一维节点向量的特征进行表征;所述根据二维卷积神经网络构建边特征二维图神经网络模型是基于二维卷积神经网络构建边特征提取层,对二维边结构向量的特征进行表征;所述节点特征一维图神经网络模型和边特征二维图神经网络模型聚合生成基于图卷积神经网络的源码特征表征模型
7.根据权利要求1所述的基于图神经网络的源码溯源方法,其特征在于,所述根据源码特征表征模型的图编辑距离计算源码相似度,包括步骤:
8.根据权利要求1所述的基于图神经网络的源码溯源方法,其特征在于,所述根据源码相似度对源码进行溯源,包括步骤:
9.一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使计算机执行如权利要求1-8任一项所述的方法。
10.一种基于图神经网络的源码溯源系统,其特征在于包括:
...【技术特征摘要】
1.一种基于图神经网络的源码溯源方法,其特征在于,包括:
2.根据权利要求1所述的基于图神经网络的源码溯源方法,其特征在于,所述提取源码对比数据库,包括步骤:
3.根据权利要求2所述的基于图神经网络的源码溯源方法,其特征在于,所述对源码进行向量化预处理,包括步骤:
4.根据权利要求3所述的基于图神经网络的源码溯源方法,其特征在于,所述根据节点的类和/或方法和/或语句划分节点类型,包括步骤:
5.根据权利要求1所述的基于图神经网络的源码溯源方法,其特征在于,所述构建基于图卷积神经网络的源码特征表征模型,包括步骤:
6.根据权利要求5所述的基于图神经网络的源码溯源方法,其特征在于,所述根据一维卷积神经网络构建节点特征一维图神经网络模型是基于一维卷积神经网络构建节点特征提取层,对一维节点向量的特征进行表征;所述根据...
【专利技术属性】
技术研发人员:许艳萍,刘博,莫凡,严军荣,袁国平,
申请(专利权)人:杭州安恒信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。