[发明专利]一种代码克隆检测方法及系统在审
| 申请号: | 202211426993.X | 申请日: | 2022-11-15 |
| 公开(公告)号: | CN115878177A | 公开(公告)日: | 2023-03-31 |
| 发明(设计)人: | 马锐;王丹;陈逸轩;张正;王星煜 | 申请(专利权)人: | 北京理工大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F18/22;G06N3/0499;G06N3/048;G06N3/08 |
| 代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 周蜜 |
| 地址: | 100081 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 代码 克隆 检测 方法 系统 | ||
1.一种代码克隆检测方法,其特征在于,包括:
步骤一:根据代码片段生成抽象语法树AST,遍历所述AST,获得多条AST路径组成的与所述代码片段对应的AST路径组;
步骤二:将所述AST路径组中的每条AST路径转换成对应的词向量l,多个词向量l组成所述AST路径组对应的语义向量L;
步骤三:扫描代码托管平台上的代码片段,重复步骤一、二,得到语义向量集∪L;
步骤四:将待测目标代码片段通过步骤一、二,得到对应的语义向量L1;
步骤五:将待测目标代码片段转换成的语义向量L1与语义向量集∪L中的任意一个语义向量L2组成语义向量表示对(L1,L2);利用比较聚合模型对所述语义向量表示对(L1,L2)进行处理,得到处理后的向量表示对(L′1,L2),根据所述向量表示对(L′1,L2),计算向量L′1与L2的相似度s;
步骤六:遍历所述语义向量集∪L,重复步骤五,选出代码托管平台上具有相似度最大值的语义向量对应的代码片段,根据预设阈值判断所述目标代码片段和所述相似度最大值对应的代码片段是否存在克隆关系。
2.如权利要求1所述的方法,其特征在于,所述根据代码片段生成抽象语法树AST,遍历所述AST,获得多条AST路径组成的与所述代码片段对应的AST路径组,包括:
根据所述代码片段采用代码解析工具生成抽象语法树AST,采用深度优先遍历算法遍历所述AST,获得多条AST路径组成与所述代码片段对应的AST路径组。
3.如权利要求1所述的方法,其特征在于,所述利用比较聚合模型对所述语义向量表示对(L1,L2)进行处理,包括:
所述比较聚合模型的对齐层对所述语义向量表示对(L1,L2)进行路径匹配,针对所述语义向量L1中的每个词向量l1i,通过与语义向量L2的细粒度AST路径信息加权,得到更新词向量l′1i;
所述比较聚合模型的比较层将所述语义向量L1中的每个词向量l1i与所述更新词向量l′1i进行比较拼接,获得新的向量L1,i;
所述比较聚合模型的聚合层对所述新的向量L1,i进行聚合特征提取,得到降维之后的L′1,并将L′1与语义向量集中的语义向量L2组成新的向量表示对(L′1,L2)。
4.如权利要求3所述的方法,其特征在于,所述比较聚合模型的对齐层对所述语义向量表示对(L1,L2)进行路径匹配,包括:
计算所述语义向量L1中的词向量l1i与语义向量L2中的词向量l2j的相似度,获得注意力矩阵eij;
对所述注意力矩阵eij进行归一化处理获得注意力概率系数αij;
根据所述注意力概率系数αij,对所述语义向量L1中的词向量l1i进行加权求和获得所述更新词向量l′1i。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211426993.X/1.html,转载请声明来源钻瓜专利网。





