[发明专利]一种基于智能机器人应用的代码克隆检测方法在审
申请号: | 202111096050.0 | 申请日: | 2021-09-17 |
公开(公告)号: | CN115826978A | 公开(公告)日: | 2023-03-21 |
发明(设计)人: | 郭耀;蔡奕丰;臧振宇;张子祺;王远鹏;陈向群 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/75 |
代理公司: | 北京万象新悦知识产权代理有限公司 11360 | 代理人: | 贾晓玲 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 智能 机器人 应用 代码 克隆 检测 方法 | ||
本发明公布了一种基于智能机器人应用的代码克隆检测方法,包括以下步骤:载入智能机器人应用的源代码;将所述源代码转换为抽象语法树;利用关键词统计将所述抽象语法树中的节点转换为特征向量;基于特征向量,通过剪枝对所述抽象语法树进行过滤;对过滤后的抽象语法树进行相似度计算,得到相似度结果;将所述相似度结果进行还原处理,即得到克隆代码对。利用本发明提供的技术方案,可以有效对智能机器人应用进行代码克隆检测,解决智能机器人应用多语言中的可移植性问题、大型应用上的可扩展性问题、检测结果的可重构性问题,提升智能机器人应用的开发高效性与运行稳定性。
技术领域
本发明涉及系统工程、智能机器人等技术领域,特别涉及一种基于智能机器人应用的代码克隆检测方法。
背景技术
近年来,随着工业化和信息化的不断推进,计算机视觉、深度学习、自然语言处理等多方面的飞速进展,为各种场景设计而出的功能各异的智能机器人越来越多,智能机器人的应用领域也越来越广泛。无论是工业中进行智能制造、医疗中进行辅助诊断和辅助手术、军事和安防方面的侦查、物联网和智能家居等方面,都有着智能机器人的身影。
面对更多、更复杂的应用场景,应用开发人员面对的任务越来越复杂,代码量也随之大幅增加。代码克隆指的是源代码中存在多处代码段相同或高度相似的现象,通常是由于软件开发中的复用行为产生的。在不同文献中,克隆代码有着不同的定义:Krinke称之为“相似的代码”,Baxter使用“一段与其他代码相似的代码”来指代,还用了部分研究者采用了“复制的代码”。总而言之,普遍认为相似度达到一定阈值的代码即构成克隆代码,我们将相似的一对代码段称为克隆对,将相似的一组代码段称为克隆集合。
代码克隆的现象会导致程序中的错误传播,增加软件的维护开销。当克隆集合中一段代码出现问题时,需要对克隆集合中所有其他代码进行修改。为解决这个问题,克隆检测技术一直是非常活跃的研究领域,利用克隆检测可以有效的发现漏洞,重构代码并删除不必要的代码段。克隆检测的过程可以分为预处理、中间形式转换和比对三个过程,在预处理过程中去除注释等无关元素并对代码进行分块,然后利用文本处理、词法分析、语法分析、属性分析或者机器学习等方法将源代码转换成可以比较的中间形式,然后再利用相应的计算方式比对代码对之间的相似度得到克隆对与克隆集合。克隆检测方法的不同设计不仅影响了工具检测效果的精确性,并且决定了工具在可检测代码规模的可扩展性、在不同语言之间移植的难度以及检测结果的可重构性。因此,需要一套专用于智能机器人应用代码克隆检测方法,解决智能机器人应用多语言中的可移植性问题、大型应用上的可扩展性问题、检测结果的可重构性问题,将有效提升智能机器人应用的开发高效性与运行稳定性。
发明内容
本发明基于增量式克隆检测方法,对智能机器人应用进行代码克隆检测,设计了一种基于智能机器人应用的代码克隆检测方法,解决相关领域的空缺。
本发明提供的技术方案如下:
一种基于智能机器人应用的代码克隆检测方法,包括以下步骤:
载入智能机器人应用的源代码;
将所述源代码转换为抽象语法树;
利用关键词统计将所述抽象语法树中的节点转换为特征向量;
基于特征向量,通过剪枝对所述抽象语法树进行过滤;
对过滤后的抽象语法树进行相似度计算,得到相似度结果;
将所述相似度结果进行还原处理,即得到克隆代码对。
所述将所述源代码转换为抽象语法树,包括:利用ANLTR生成的语法分析器,将源代码转换为抽象语法树。
所述关键词统计中的关键词包括:if、then、for。
所述基于特征向量,通过剪枝对所述抽象语法树进行过滤,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111096050.0/2.html,转载请声明来源钻瓜专利网。