[发明专利]一种基于神经网络语言模型的重复代码检测方法有效
申请号: | 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的步骤如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710464437.4/2.html,转载请声明来源钻瓜专利网。