技术领域
本发明涉及克隆代码分析领域,更具体地,涉及一种基于分层神经网络的克隆一致性变化预测方法和系统。
背景技术
在传统的机器学习对于克隆一致性变化预测的方法中,需要对代码进行繁琐的人工特征提取步骤,并且无法提取人工特征规定范围之外的特征值,因此无法准确、完整地保留代码的语法和语义特征。而且在传统的机器学习对于克隆一致性变化预测的方法中,需要对模型调整和设置的参数较多,且运行速率较慢。
现有的技术中,中国实用新型专利CN112215013A公开了“一种基于深度学习的克隆代码语义检测方法”,公开日为2021年01月12日,首先将代码块预处理成TPE的基本单元的序列,然后对它们进行词嵌入操作,用于上下文特性组合的BiLSTM模块;接着,用自注意力机制来集中提取神经网络学习到的克隆代码相关有用信息;将每一个代码片段都被转化为一个向量表示,计算向量之间的欧几里得距离作为分类的特征,对它们进行二分类:如果两个代码块相似,则其经过神经网络生成的向量应该相近,即预测克隆/非克隆。该方案中,可以捕获丰富的语法和语义信息,但是对于克隆信息的一致性,即克隆代码是否完整,本方案并没有给出答复。
发明内容
本发明为解决无法准确完整地保留代码的语法和语义特征的技术缺陷,提供了一种基于分层神经网络的克隆一致性变化预测方法和系统。
为实现以上发明目的,采用的技术方案是:
一种基于分层神经网络的克隆一致性变化预测方法,包括以下步骤:
S1:预处理模块对代码片段数据进行预处理,将代码片段转换为抽象语法树形式,并对语法树上的节点使用word2vec进行编码,得到编码片段;
S2:代码片段特征提取神经网络模块建立代码片段特征提取神经网络,提取代码片段的特征信息;
S3:克隆组特征提取神经网络模块建立克隆组特征提取神经网络,融合代码片段的特征信息,提取克隆组的特征信息;
S4:克隆演化特征提取神经网络模块建立克隆演化特征提取神经网络,融合克隆组的特征信息,提取克隆演化的特征信息;
S5:评估模块使用十折交叉验证法对克隆演化的特征信息进行评估,输出预测结果的精确率、召回率和F1值。
上述方案中,先将代码转换为抽象语法树的表示形式,然后使用word2vec对抽象语法树中的节点进行编码,通过ASTNN网络模型对克隆演化进行单个代码级别的特征提取,然后通过克隆组特征提取神经网络和克隆演化特征提取神经网络分别对克隆演化进行了克隆组和克隆家系级别的特征提取,从而得到更加完整的代码语法和语义特征。
优选的,在步骤S1中,所述预处理是对代码片段数据转换成抽象语法树的处理方法。
优选的,在步骤S2中,建立代码片段特征提取神经网络,采用ASTNN模型对代码片段特征进行提取。
优选的,在步骤S3中,建立克隆组特征提取神经网络,采用BiGRU神经网络作为编码器,使用注意力机制模型进行特征融合。
优选的,在步骤S4中,建立克隆演化特征提取神经网络,采用LSTM神经网络作为编码器,使用注意力机制模型进行特征融合。
一种基于分层神经网络的克隆一致性变化预测系统,包括预处理模块、代码片段特征提取神经网络模块、克隆组特征提取神经网络模块、克隆演化特征提取神经网络模块和评估模块;
所述预处理模块的输出端与所述代码片段特征提取神经网络模块的输入端电性连接,所述代码片段特征提取神经网络模块的输出端与所述克隆组特征提取神经网络模块的输入端电性连接,所述克隆组特征提取神经网络模块的输出端与所述克隆演化特征提取神经网络模块的输入端电性连接,所述克隆演化特征提取神经网络模块的输出端与所述评估模块的输入端电性连接。
优选的,所述预处理模块将代码片段转换为抽象语法树形式,得到word2vec编码的编码片段。
优选的,所述代码片段特征提取神经网络模块设置有代码片段特征提取神经网络,所述代码片段特征提取神经网络采用ASTNN模型对代码片段特征进行提取。
优选的,所述克隆组特征提取神经网络模块设置有克隆组特征提取神经网络,所述克隆组特征提取神经网络融合代码片段的特征信息,提取克隆组的特征信息。
优选的,所述克隆演化特征提取神经网络模块设置有克隆演化特征提取神经网络,所述克隆演化特征提取神经网络用于融合克隆组的特征信息,提取克隆演化的特征信息。
上述方案中,在传统的机器学习对于克隆一致性变化预测的方法中,需要对模型调整和设置的参数较多,且运行速率较慢。在本发明中,通过建立分层神经网络对数据划分的训练集进行训练,训练完成所保存的模型可用于对其他数据的预测,且在数据量较大的情况下,分层神经网络的运行速度明显优于其他传统机器学习方法,因此本次发明明显提高了对项目克隆一致性变化预测的速率和减少了参数调节的繁琐。
与现有技术相比,本发明的有益效果是:
本发明提供的先将代码转换为抽象语法树的表示形式,然后使用word2vec对抽象语法树中的节点进行编码,通过ASTNN网络模型对克隆演化进行单个代码级别的特征提取,然后通过克隆组特征提取神经网络和克隆演化特征提取神经网络分别对克隆演化进行了克隆组和克隆家系级别的特征提取,从而得到更加完整的代码语法和语义特征。
附图说明
图1为本发明的方法流程图;
图2为本发明的模块示意图;
图3为基于分层神经网络的克隆一致性变化预测过程框架示意图;
图4为旧版本到新版本的克隆一致性变化示例图;
图5为ASTNN模型框架示意图;
图6为基于分层神经网络的克隆一致性变化预测方法框架示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
以下结合附图和实施例对本发明做进一步的阐述。
实施例1
如图1所示,一种基于分层神经网络的克隆一致性变化预测方法,包括以下步骤:
S1:预处理模块对代码片段数据进行预处理,将代码片段转换为抽象语法树形式,并对语法树上的节点使用word2vec进行编码,得到编码片段;
S2:代码片段特征提取神经网络模块建立代码片段特征提取神经网络,提取代码片段的特征信息;
S3:克隆组特征提取神经网络模块建立克隆组特征提取神经网络,融合代码片段的特征信息,提取克隆组的特征信息;
S4:克隆演化特征提取神经网络模块建立克隆演化特征提取神经网络,融合克隆组的特征信息,提取克隆演化的特征信息;
S5:评估模块使用十折交叉验证法对克隆演化的特征信息进行评估,输出预测结果的精确率、召回率和F1值。
上述方案中,先将代码转换为抽象语法树的表示形式,然后使用word2vec对抽象语法树中的节点进行编码,通过ASTNN网络模型对克隆演化进行单个代码级别的特征提取,然后通过克隆组特征提取神经网络和克隆演化特征提取神经网络分别对克隆演化进行了克隆组和克隆家系级别的特征提取,从而得到更加完整的代码语法和语义特征。
优选的,在步骤S1中,所述预处理是对代码片段数据转换成抽象语法树的处理方法。
优选的,在步骤S2中,建立代码片段特征提取神经网络,采用ASTNN模型对代码片段特征进行提取。
优选的,在步骤S3中,建立克隆组特征提取神经网络,采用BiGRU神经网络作为编码器,使用注意力机制模型进行特征融合。
优选的,在步骤S4中,建立克隆演化特征提取神经网络,采用LSTM神经网络作为编码器,使用注意力机制模型进行特征融合。
实施例2
如图2所示,一种基于分层神经网络的克隆一致性变化预测系统,包括预处理模块、代码片段特征提取神经网络模块、克隆组特征提取神经网络模块、克隆演化特征提取神经网络模块和评估模块;
所述预处理模块的输出端与所述代码片段特征提取神经网络模块的输入端电性连接,所述代码片段特征提取神经网络模块的输出端与所述克隆组特征提取神经网络模块的输入端电性连接,所述克隆组特征提取神经网络模块的输出端与所述克隆演化特征提取神经网络模块的输入端电性连接,所述克隆演化特征提取神经网络模块的输出端与所述评估模块的输入端电性连接。
优选的,所述预处理模块将代码片段转换为抽象语法树形式,得到word2vec编码的编码片段。
优选的,所述代码片段特征提取神经网络模块设置有代码片段特征提取神经网络,所述代码片段特征提取神经网络采用ASTNN模型对代码片段特征进行提取。
优选的,所述克隆组特征提取神经网络模块设置有克隆组特征提取神经网络,所述克隆组特征提取神经网络融合代码片段的特征信息,提取克隆组的特征信息。
优选的,所述克隆演化特征提取神经网络模块设置有克隆演化特征提取神经网络,所述克隆演化特征提取神经网络用于融合克隆组的特征信息,提取克隆演化的特征信息。
实施例3
如图3~图6所示,图3展示了基于分层神经网络的克隆一致性变化预测过程框架,主要包括克隆家系收集、代码片段编码、克隆组编码、克隆演化编码、CHANN模型、模型的训练和预测。下面对每一个流程进行详细的阐述。
图4展示了旧版本到新版本的克隆一致性变化的其中一个示例。两段克隆代码在克隆演化的过程中发生了一致性变化,分别为删除操作(黑色划线部分)和插入操作(黑色加粗代码部分)。
图5展示了本次发明对克隆演化过程中的单个代码级别进行的编码器——ASTNN模型框架。ASTNN网络模型的输入为预处理阶段中转换为抽象语法树节点的word2vec编码,输出为单个代码的特征信息,单个代码特征信息作为克隆组特征提取神经网络的输入特征,进一步提取克隆组级别的特征信息。
图6基于分层神经网络的克隆一致性变化预测方法(CHANN)框架。分层神经网络(CHANN)分为三个模块:(1)克隆片段编码器为代码片段级别上的编码器,主要提取克隆演化过程中代码片段的特征;(2)克隆组编码器和注意力机制模型为克隆组级别上的编码器,主要提取和融合克隆演化过程中克隆组的特征;(3)克隆演化编码器和注意力机制模型为克隆演化级别上的编码器,主要提取和融合克隆演化过程中整体演化的特征。最后将得到的克隆演化表示放入softmax函数中进行一致性变化预测输出。
下表展示了本方法与现有的传统机器学习方法的对比,显而易见本发明的方法在精确率(Precision)、召回率(Recall)和F1值(F-measure)都高于传统的机器学习方法,且使用了attention的CHANN模型效果好于没有使用attention的CHANN模型效果。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
机译: 一种减少一致性数量的方法-基于字典的一致性技术中的周期-使用存储状态的存储系统-所述高速缓存
机译: 基于异构图神经网络模型的预测方法和系统
机译: 基于相位功能神经网络的3D字符姿态预测方法和系统