[发明专利]一种基于神经网络语言模型的重复代码检测方法有效

专利信息
申请号: 201710464437.4 申请日: 2017-06-19
公开(公告)号: CN107273294B 公开(公告)日: 2020-07-28
发明(设计)人: 屈鸿;符明晟;涂强;刘洋军;张亦洲;王一文;高榕;陈珊 申请(专利权)人: 电子科技大学
主分类号: G06F11/36 分类号: G06F11/36;G06N3/02
代理公司: 成都弘毅天承知识产权代理有限公司 51230 代理人: 徐金琼;刘东
地址: 611731 四川省成*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 神经网络 语言 模型 重复 代码 检测 方法
【说明书】:

发明公开了一种基于神经网络语言模型的重复代码检测方法,属于重复代码检测方法技术领域,解决现有技术中的重复代码检测方法,不能检测出没有进行本质性改变的重复代码,造成检测的准确率,容易给代码原创者造成经济损失等问题。本发明包括步骤1:将所有的代码中的每个代码转换为相应的CFG图;步骤2:抽取每个CFG图中每一个结点的根子图;步骤3:将所有根子图采用向量表示;步骤4:将根子图的向量表示输入到深度图核函数中学习,得到所有CFG图两两间的相似度;步骤5:将CFG图两两间的相似度输入到AP关联聚类算法中进行CFG图的聚类得到多个聚类簇,在同一个聚类簇中的CFG图所对应的代码即为重复代码。本发明用于发现重复代码。

技术领域

一种基于神经网络语言模型的重复代码检测方法,用于发现重复代码,属于重复代码检测方法技术领域。

背景技术

站在软件工程的角度来说,对于代码克隆可以分为三种类型。第一种是由于代码重复使用而引入的,这去除了软件开发中的一些重复性工作,这些代码体现了软件的良好设计。第二种重复代码可能会导致软件的bug,例如在复制的代码中忘记或是错误地修改了函数名或是变量名。第三种重复代码虽然不会直接引发代码bug,但会对软件后期的可维护性产生重大的影响。例如在MVC模式下进行系统设计时,如果有两个子系统间存在着重复代码,这意味着不满足MVC分层、独立的要求。如果要对其中的一个子系统进行修改,则需要重新编译另一个子系统。因此这种跨越多个不同功能子系统的重复代码会对系统的可维护性产生严重的危害。

对于代码的重复检测任务,可以从几个角度上进行,例如可以从代码文本的角度进行分析。如果只是从文本的角度上进行分析,那么只需要对函数名、变量名稍加修改,就可以得到完全不一样的代码,但是从本质上来说并没有任何改变。而代码的本质,就是一个过程的执行流,可以使用控制流图进行表示。现有技术中的重复代码检测方法,不能检测出没有进行本质性改变的重复代码,造成检测的准确率,容易给代码原创者造成经济损失等问题。

发明内容

本发明的目的在于:解决现有技术中的重复代码检测方法,不能检测出没有进行本质性改变的重复代码,造成检测的准确率,容易给代码原创者造成经济损失等问题,提供了一种基于神经网络语言模型的重复代码检测方法。

本发明采用的技术方案如下:

一种基于神经网络语言模型的重复代码检测方法,其特征在于:包括以下步骤:

步骤1:将所有的代码中的每个代码转换为相应的CFG图;

步骤2:抽取每个CFG图中每一个结点的根子图;

步骤3:将所有根子图采用向量表示;

步骤4:将根子图的向量表示输入到深度图核函数中学习,得到所有CFG图两两间的相似度;

步骤5:将CFG图两两间的相似度输入到AP关联聚类算法中进行CFG图的聚类得到多个聚类簇,在同一个聚类簇中的CFG图所对应的代码即为重复代码。

进一步,所述步骤2的步骤如下:

步骤21:给定CFG图中每一个结点v要抽取的根子图的度d,若d=0,表示并不需要抽取根子图,否则转到步骤22;

步骤22:利用广度优先搜索算法获得结点v的所有邻居结点;

步骤23:对于结点v的每一个邻居结点v'n,获取其度为d-1的邻居子图,并将邻居子图保存在一个列表中,其中,d度邻居子图指的是与结点v距离为d的结点所构成的子图,与根节点距离为d的结点并不需要都出现在根节点的d度邻居子图中,即根节点的d度邻居子图可以有多个;

步骤24:获取结点v的度为d-1的邻居子图,将其与中相同的邻居子图进行连接,即得到了所需要的根子图

进一步,所述步骤3的步骤如下:

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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