[发明专利]一种代码克隆检测方法及系统在审
| 申请号: | 202211426993.X | 申请日: | 2022-11-15 |
| 公开(公告)号: | CN115878177A | 公开(公告)日: | 2023-03-31 |
| 发明(设计)人: | 马锐;王丹;陈逸轩;张正;王星煜 | 申请(专利权)人: | 北京理工大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F18/22;G06N3/0499;G06N3/048;G06N3/08 |
| 代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 周蜜 |
| 地址: | 100081 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 代码 克隆 检测 方法 系统 | ||
本发明公开了一种代码克隆检测方法及系统,根据代码生成抽象语法树AST,遍历AST获得多条AST路径,组成AST路径组,解决了抽象语法树很深导致梯度消失问题;遍历代码托管平台,将源代码对应的AST路径组中的每条AST路径转换成词向量,多个词向量组成AST路径组对应的语义向量,得到多个语义向量构成语义向量集,语义向量集在每次检测时不必重复生成且持续更新,提高了执行效率;最后利用比较聚合模型对待测目标代码片段语义向量与语义向量集中的语义向量逐一组成的语义向量表示对进行处理,先对细粒度的AST路径进行路径匹配,通过加权聚合将细粒度特征反映到待测目标代码片段,再进行相似性检测,解决了传统方法采用孪生网络模型导致检测准确率不高的问题。
技术领域
本发明涉及代码克隆检测技术领域,具体涉及一种代码克隆检测方法及系统。
背景技术
随着代码托管平台和开源社区的发展,网络上各种开源项目越来越多样化并且获取也更加便利。代码常在多个软件系统中复制、传播和演化,给软件系统带来了软件质量的不确定性和风险,甚至导致漏洞的传播。近年来,代码克隆检测已经成为软件工程领域一个越来越重要的课题。按照克隆的程度,代码克隆可以分为Type-1(完全克隆)、Type-2(重命名克隆)、Type-3(增删改克隆)、Type-4(自实现克隆)四大类。
随着深度学习的发展,许多神经网络模型也被应用到代码克隆检测领域。目前基于深度学习的代码克隆检测根据其使用的代码中间形式可以大致分为基于纯文本、基于词法Token、基于树、基于图的检测四类。在基于树的代码克隆检测方法中,常见的方法之一是将源代码解析成抽象语法树作进一步的处理并用于克隆检测。其中的抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表现形式,它是编译源代码产生的一个中间结果,以树的形式包含了源代码中的语法信息。最近的代码克隆检测研究表明,基于抽象语法树的方法比其他方法能更好地表示源代码。但基于抽象语法树的的代码克隆检测技术目前仍存在如下几点局限性:
(1)检测效率问题:基于抽象语法树的代码克隆检测技术需要构建抽象语法树,然后使用树匹配算法搜索结构相似的树,并将这些相似树所对应的代码作为克隆代码返回。但现有技术在下一次检测过程中仍需要再次对代码库中的代码执行构建抽象语法树的操作,这一过程需要消耗时间和空间成本,导致执行效率较低。
(2)梯度消失问题:与自然语言处理中的长文本类似,当抽象语法树很深时,以树为基础的神经网络模型会容易受到梯度消失的影响,权重无法更新,导致模型训练失败。
(3)检测准确率问题:基于深度学习的代码克隆检测技术在匹配检测过程中大多基于孪生模型,其局限性在于,它们直接对比两个抽象语法树,不考虑是否存在细粒度上的相似结构,检测粒度过于粗糙,导致原本可能判断为相似的两个代码片段在粗粒度上直接判断为不相似,从而导致检测准确率不高,容易出现漏报误报现象。
发明内容
有鉴于此,本发明提供了一种代码克隆检测方法及系统,能够高效、准确地完成代码克隆检测。
本发明采用的具体技术方案如下:
一种代码克隆检测方法,包括:
步骤一:根据代码片段生成抽象语法树AST,遍历所述AST,获得多条AST路径组成的与所述代码片段对应的AST路径组;
步骤二:将所述AST路径组中的每条AST路径转换成对应的词向量l,多个词向量l组成所述AST路径组对应的语义向量L;
步骤三:扫描代码托管平台上的代码片段,重复步骤一、二,得到语义向量集∪L;
步骤四:将待测目标代码片段通过步骤一、二,得到对应的语义向量L1;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211426993.X/2.html,转载请声明来源钻瓜专利网。





