【技术实现步骤摘要】
一种基于事件嵌入树及GAT网络的代码克隆检测方法和装置
本专利技术涉及软件代码分析
,特别是涉及一种基于事件嵌入树及GAT网络的代码克隆检测方法和装置。
技术介绍
如果一个软件的源程序中的一个代码段和同一程序中另一个代码段在结构或语义上类似,这些代码段便成了代码克隆,代码克隆的存在增加了软件维护的困难,如果对源程序中进行修改的部分有克隆的代码段,这些克隆代码段也常常需要修改。代码克隆检测在软件工程任务中通常发挥重要作用。例如,在程序理解,抄袭检测,版权保护,代码压缩,软件演化分析,代码质量分析,bug检测和病毒检测的场景中,可能需要分辨出具有文本相似性,句法相似性或语义相似性的代码块,这时边需要进行代码克隆检测。传统的代码克隆检测方法,核心思想在于通过人为定义,提取代码片段中的某一类别的信息,之后通过这类信息的来进行代码克隆的判断,但这一代码克隆的检测方法的检测不够全面,也不够准确。
技术实现思路
基于此,本专利技术的目的在于,提供一种基于事件嵌入树及GAT网络的代码克隆检测方法和装置,通过对每个语句的执行语义以及各个语句之间的执行上下文语义进行建模,所得到的克隆代码判断结果更加全面和准确。第一方面,本申请实施例提供了一种基于事件嵌入树及GAT网络的代码克隆检测方法,包括如下步骤:针对每个代码片段,将该代码片段转换为程序流程图,所述程序流程图为包含控制流和数据流的中间表达形式;将所述程序流程图输入事件嵌入层,对所述程序流程图中每个节点的语句进行事件嵌入 ...
【技术保护点】
1.一种基于事件嵌入树及GAT网络的代码克隆检测方法,其特征在于,包括如下步骤:/n针对每个代码片段,将该代码片段转换为程序流程图,所述程序流程图为包含控制流和数据流的中间表达形式;/n将所述程序流程图输入事件嵌入层,对所述程序流程图中每个节点的语句进行事件嵌入计算,得到节点向量矩阵,其中,所述节点向量矩阵中的第i行表示所述程序流程图第i个节点的嵌入结果;/n将所述节点向量矩阵输入图注意力网络层,使每个节点向量学习其上下文临近节点的特征,得到节点上下文向量矩阵;/n将所述节点上下文向量矩阵输入卷积网络层,对所述节点上下文向量矩阵进行特征提取,得到该代码片段的特征向量;/n将待检测的一组特征向量输入至分类器中,得到该组特征向量所对应的不同代码片段的克隆检测结果。/n
【技术特征摘要】
1.一种基于事件嵌入树及GAT网络的代码克隆检测方法,其特征在于,包括如下步骤:
针对每个代码片段,将该代码片段转换为程序流程图,所述程序流程图为包含控制流和数据流的中间表达形式;
将所述程序流程图输入事件嵌入层,对所述程序流程图中每个节点的语句进行事件嵌入计算,得到节点向量矩阵,其中,所述节点向量矩阵中的第i行表示所述程序流程图第i个节点的嵌入结果;
将所述节点向量矩阵输入图注意力网络层,使每个节点向量学习其上下文临近节点的特征,得到节点上下文向量矩阵;
将所述节点上下文向量矩阵输入卷积网络层,对所述节点上下文向量矩阵进行特征提取,得到该代码片段的特征向量;
将待检测的一组特征向量输入至分类器中,得到该组特征向量所对应的不同代码片段的克隆检测结果。
2.根据权利要求1所述的一种基于事件嵌入树及GAT网络的代码克隆检测方法,其特征在于,将所述程序流程图输入事件嵌入层,对所述程序流程图中每个节点的语句进行时间嵌入计算,得到节点向量矩阵,包括:
针对该代码片段中的单一事件,将该单一事件输入至第一事件嵌入层,其中,所述第一事件嵌入层的计算公式如下:
a=concat(e1,e2,…,ek)
o=Dense(a)
其中,ek为每个所述单一事件的向量表示,a为所有单一事件向量表示的连接,o为所述第一事件嵌入层的输出;Tp1,Tp2为针对指定运算符的两个张量,用于将该运算符对应的两个实体的向量表示映射到多个高维向量空间;Vec函数用于将输入的实体转换为实体的向量表示;Dense函数为全连接层。
3.根据权利要求2所述的一种基于事件嵌入树及GAT网络的代码克隆检测方法,其特征在于:
所述Vec函数将出现次数最多的k个实体映射为k个不同的向量,并将剩余n-k个实体映射为一个相同的向量;
或者,
所述Vec函数将每个实体转换为其对应的实体类型后,根据所述实体类型将每个实体映射为不同的向量。
4.根据权利要求2所述的一种基于事件嵌入树及GAT网络的代码克隆检测方法,其特征在于,将所述程序流程图输入事件嵌入层,对所述程序流程图中每个节点的语句进行时间嵌入计算,得到节点向量矩阵,包括:
针对该代码片段中的多层嵌套事件,将该多层嵌套输入至第二事件嵌入层,其中,所述第二事件嵌入层的计算公式如下:
rt=σ(Wr·[At-1,Ot])
zt=σ(Wz·[At-1,Ot])
其中,rt为重置门,zt为更新门,Wr为重置门参数,Wz为更新门参数,At-1为原始事件或中间事件,所述第一事件嵌入层,Ec为第一事件嵌入层参数,At为中间事件嵌入或最终嵌入,Pt为该...
【专利技术属性】
技术研发人员:李秉卓,叶春杨,管守扬,周辉,
申请(专利权)人:海南大学,
类型:发明
国别省市:海南;46
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。