【技术实现步骤摘要】
一种代码克隆检测方法、装置及电子设备
[0001]本申请涉及网络安全
,特别是涉及一种代码克隆检测方法
、
装置及电子设备
。
技术介绍
[0002]代码克隆检测技术在软件演化,软件复用等许多软件维护工作中起到了重要的作用,其目的是去检测两个代码片段之间的相似性
。
[0003]目前的代码克隆检测方法大都是基于抽象语法树
(Abstract Syntax Tree
,
AST)
和程度依赖图
(Program Dependence Graph
,
PDG)
来进行的,如图1所示
。
图1为一种目前代码克隆检测的流程示意图,包括:首先,基于待检测代码生成第一
AST
和第一
PDG
,分别对第一
AST
和第一
PDG
进行特征提取,得到第一
AST
特征向量和第一
PDG
特征向量,并对第一
AST
特征向量和第一
PDG
特征向量进行特征融合,得到第一特征向量
。
同时,基于样本代码生成第二
AST
和第二
PDG
,分别对第二
AST
和第二
PDG
进行特征提取,得到第二
AST
特征向量和第二
PDG
特征向量,并对第二
AST
特征 ...
【技术保护点】
【技术特征摘要】
1.
一种代码克隆检测方法,其特征在于,所述方法包括:基于待检测代码,生成所述待检测代码的待检测代码属性图
CPG
;在样本代码的样本
CPG
与所述待检测
CPG
之间满足第一相似度要求时,基于所述待检测
CPG
中的方法节点,生成待检测向量集合和待检测节点集合,其中,所述待检测向量集合中包括多个向量子集,一个向量子集表征一个方法节点中各个代码节点的执行顺序关系,所述待检测节点集合中包括多个节点子集,一个节点子集表征一个方法节点中各个无执行顺序关系的代码节点;基于所述待检测向量集合
、
所述待检测节点集合
、
所述样本代码的样本向量集合和所述样本代码的样本节点集合,确定所述样本代码中的被克隆数据和所述待检测代码中的克隆数据
。2.
如权利要求1所述的方法,其特征在于,所述满足第一相似度要求,包括:在所述样本
CPG
与所述待检测
CPG
之间不存在图像重合部分时,确定所述样本
CPG
与所述待检测
CPG
之间满足第一相似度要求;或在存在所述图像重合部分,且所述样本
CPG
在所述图像重合部分对应的第一方法与所述待检测
CPG
在所述图像重合部分对应的第二方法之间的相似度小于预设相似度时,确定所述样本
CPG
与所述待检测
CPG
之间满足第一相似度要求
。3.
如权利要求2所述的方法,其特征在于,所述方法还包括:在存在所述图像重合部分,且所述第一方法与所述第二方法之间的相似度大于或等于预设相似度时,确定所述第一方法为所述被克隆数据,以及所述第二方法为所述克隆数据
。4.
如权利要求1所述的方法,其特征在于,所述基于所述待检测
CPG
中的方法节点,生成待检测向量集合和待检测节点集合,包括:基于所述待检测
CPG
,确定所述待检测代码中的无用数据,其中,所述无用数据至少包括未使用字段
、
未使用变量和日志打印代码节点;基于所述无用数据和所述待检测
CPG
中的方法节点生成所述待检测向量集合和所述待检测节点集合
。5.
如权利要求1所述的方法,其特征在于,所述基于所述待检测向量集合
、
所述待检测节点集合
、
所述样本代码的样本向量集合和所述样本代码的样本节点集合,确定所述样本代码中的被克隆数据和所述待检测代码中的克隆数据,包括:分别将所述待检测向量集合与所述样本向量集合
、
所述待检测节点集合与所述样本节点集合进行比对,得到所述待检测向量集合与所述样本向量集合之间的第一交集部分,以及所述待检测节点集合与所述样本节点集合之间的第二交集部分;确定所述样本代码在所述第一交集部分和所述第二交集部分对应的第三方法为所述被克隆数据,以及所述待检测代码在所述第一交集部分和所述第二交集部分对应的第四方法为所述克隆数据
。6.
如权利要求1所述的方法,其特征在于,所述基于所述待检测向量集合
、
所述待检测节点集合
、
所述样本代码的样本向量集合和所述样本代码的样本节点集合,确定所述样本代码中的被克隆数据和所述待检测代码中的克隆数据,包括:在基于所述待检测向量集合
、
所述待检测节点集合
、
所述样本向量集合和所述样本节点集合,确定出所述样本代码中存在
N
个样本方法与所述待检测代码中的第一待检测方法
之间满足第二相似度要求时,基于所述
N
个样本方法的关联性,确定所述被克隆数据和所述克隆数据,其中,所述
N
为大于1的整数,所述第一待检测方法为所述待检测代码中的任一待检测方法
。7.
如权利要求6所述的方法,其特征在于,所述方法还包括:在基于所述待检测向量集合
、
所述待检测节点集合
、
所述样本向量集合和所述样本节点集合,确定出所述样本代码中不存在所述
N
个样本方法时,确定所述样本代码中是否存在第一样本方法与所述待检测代码中
M
个待检测方法之间满足第三相似度要求,其中,所述
M
为大于1的整数;若是,则基于所述
M
个待检测方法的关联性,确定所述被克隆数据和所述克隆数据;若否,则在所述待检测代码中确定出与所述第一样本方法满足第四相似度要求的第一目标待检测方法,并在所述第一目标待检测方法与所述第一样本方法之间的相似代码行数大于预设阈值时,确定所述被克隆数据为所述第一样本方法,以及所述克隆数据为所述第一目标待检测方法
。8.
如权利要求6所述的方法,其特征在于,所述基于所述
N
个样本方法的关联性,确定所述样本代码中的被克隆数据和所述待检测代码中的克隆数据,包括:基于所述样本
CPG
,确定所述
N
个样本方法之间是否存在关联;若是,则确定所述被克隆数据为所述
N
个样本方法,以及所述克隆数据为所述第一待检测方法;若否,则在所述
N
个样本方法中确定出与所述第一待检测方法满足第五相似度要求的目标样本方法,并确定所述被克隆数据为所述目标样本方法,以及所述克隆数据为所述第一待检测方法
。9.
如权利要求7所述的方法,其特征在于,所述基于所述
M
个待检测方法的关联性,确定所述被克隆数据和所述克隆数据,包括:基于所述待检测
CPG
,确定所述
M
个待检测方法之间是否存在关联;若是,则确定所述被克隆数据为所述第一样本方法,以及所述克隆数据为所述
M
个待检测方法;若否,则在所述
M
个待检测方法中确定出与所述第一样本方法满足第六相似度要求的第二目标待检测方法,并在所述第二目标待检测方法与所述第一样本方法之间的相似代码行数大于所述预设阈值时,确定所述被克隆数据为所述第一样本方法,以及所述克隆数据为所述第二目标待检测方法
。10.
一种代码克隆检测装置,其特征在于,所述装置包括:第一生成模块,用于基于待检测代码,生成所述待检测代码的待检测代码属性图
CPG
;第二生...
【专利技术属性】
技术研发人员:胡建强,
申请(专利权)人:中国电信股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。