[发明专利]基于加权递归自编码器的快速代码克隆检测方法及装置有效

专利信息
申请号: 202011329523.2 申请日: 2020-11-24
公开(公告)号: CN112433756B 公开(公告)日: 2021-09-07
发明(设计)人: 刘伟;王嬴超;李晓伟;曾杰;杨洋;李春静;刘金松;吕方雷 申请(专利权)人: 北京京航计算通讯研究所
主分类号: G06F8/75 分类号: G06F8/75;G06F16/901;G06F40/284;G06F40/30;G06K9/62
代理公司: 北京天达知识产权代理事务所(普通合伙) 11386 代理人: 胡时冶
地址: 100074 北*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 加权 递归 编码器 快速 代码 克隆 检测 方法 装置
【权利要求书】:

1.一种基于加权递归自编码器的快速代码克隆检测方法,其特征在于,包括下述步骤:

获取待检测代码数据集,对所述待检测代码数据集进行预处理,得到待检测代码数据集中每一代码对应的二叉树;

基于所述二叉树和加权递归自编码器获得待检测代码数据集中每一代码对应的最终向量,并基于所述每一代码对应的最终向量得到最终向量集合;

基于所述最终向量集合构建导航展开图,并根据所述导航展开图对最终向量集合中的任意两个最终向量进行检测,得到代码克隆对;包括下述步骤:

基于所述导航展开图计算最终向量集合中任意两个最终向量的欧氏距离;

判断所述欧氏距离是否小于阈值门槛,若是,则两个最终向量对应的代码为代码克隆对;若否,则两个最终向量对应的代码不是代码克隆对;所述任意两个最终向量的欧氏距离计算公式为:

式中,dist(r,v)表示任意两个最终向量的欧氏距离,r和v表示向量集合中的任意两个最终向量,r=(x1,x2,...,xn),v=(y1,y2,...,yn),n表示维度;

基于所述二叉树和加权递归自编码器获得待检测代码数据集中每一代码对应的最终向量,包括下述步骤:

遍历所述二叉树中的所有叶子节点,得到待检测代码数据集中每一代码对应的函数语句;

获取所述函数语句中每个单词的词向量;

基于加权递归自编码器对每个单词的词向量进行编码,得到多级语义向量,并计算每一级语义向量对应的权值;计算每一级语义向量对应的权值,公式如下:

式中,TF-IDF为每一级语义向量对应的权重,nk,j为非叶子节点序列出现次数,∑knk,j为全部非叶子节点序列的总和,|D|为程序语料库中的文件总数;|{j:ti∈dj}|表示包含词语ti的文件数目;

将每一级语义向量与其对应的权值相乘的结果进行叠加,得到待检测代码数据集中每一代码对应的最终向量。

2.根据权利要求1所述的基于加权递归自编码器的快速代码克隆检测方法,其特征在于,对所述待检测代码数据集进行预处理,得到待检测代码数据集中每一代码对应的二叉树,包括下述步骤:

基于所述待检测代码数据集获得待检测代码数据集中每一代码对应的抽象语法树;

对所述每一代码对应的抽象语法树进行优化,得到待检测代码数据集中每一代码对应的二叉树,其中,所述二叉树包括叶子节点和非叶子节点。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京航计算通讯研究所,未经北京京航计算通讯研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011329523.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top