[发明专利]一种自动构造并利用伪克隆语料的克隆代码检测方法有效

专利信息
申请号: 201911006918.6 申请日: 2019-10-22
公开(公告)号: CN110851176B 公开(公告)日: 2023-07-04
发明(设计)人: 桑炜;王赞 申请(专利权)人: 天津大学
主分类号: G06F8/75 分类号: G06F8/75
代理公司: 天津市北洋有限责任专利代理事务所 12201 代理人: 李素兰
地址: 300072*** 国省代码: 天津;12
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 自动 构造 利用 克隆 语料 代码 检测 方法
【权利要求书】:

1.一种自动构造并利用伪克隆语料的克隆代码检测方法,其特征在于,该方法包括以下步骤

步骤一、自动构造伪训练语料库,即:将一个小规模代码块自动插入一个源代码片段,首先对源代码进行token化,源代码经过token化处理后,得到完全的复制粘贴对作为一型克隆和二型克隆;通过判断两个函数的方法名的相似度,提取出来大量的非克隆代码;

步骤二、确定克隆代码检测任务中最有效的代码基本单元,即利用BPE方法切分克隆检测需要的代码基本单元;通过多次迭代找到高频相邻token字符对,直到找到一个合适的切分位置,语句被分割成比token字符更大的代码块;然后将这些token字符组合作为代码基本单元;具体操作为:首先构造一个包含所有不同token字符和它们对应的频率的词表;然后通过函数get_stat统计token字符出现的频率并当发生合并状态改变时更新状态;通过函数merge_vocab对token字符进行归并,并将应用于词汇表,所有归并的克隆对都集成在一起,最后得出代码基本单元的词汇表,作为转化的token字符向量;

步骤三、预处理,由步骤二确定的最有效的代码基本单元,将token字符进行拼接,进行词嵌入,将语料库中所有方法,以token字符展示的语句序列来训练一个词嵌入模型,产生一个{代码单元-向量}对应字典;

步骤四、建立用于代码克隆检测的简单有效的BiLSTM分类模型,并进行训练,即获取代码的上下文和序列信息,并利用自注意力机制进行加权求和,至此java项目中的每个方法都转化成了一个向量表示;再利用L2-Norm算法对两个方法进行分类,判断是否为克隆对,具体处理包括:将经预处理的代码基本单元向量表示输入到第一层LSTM单元,获得此代码基本单元中前一个单元对它的影响的特征,并将步骤二转化的token字符向量输入到第二层LSTM单元,获得字符的后一个字符对它的影响;再将第一层LSTM的输出和第二层LSTM的输出进行拼接组合;通过训练,输出的特征向量即包含了这个代码单元上下文信息及其序列信息;接下来用自注意力机制进行加权求和,将每个java方法转换为可相互比较的向量。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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