当前位置: 首页 > 专利查询>北京大学专利>正文

一种基于智能机器人应用的代码克隆检测方法技术

技术编号:36920972 阅读:9 留言:0更新日期:2023-03-22 18:44
本发明专利技术公布了一种基于智能机器人应用的代码克隆检测方法,包括以下步骤:载入智能机器人应用的源代码;将所述源代码转换为抽象语法树;利用关键词统计将所述抽象语法树中的节点转换为特征向量;基于特征向量,通过剪枝对所述抽象语法树进行过滤;对过滤后的抽象语法树进行相似度计算,得到相似度结果;将所述相似度结果进行还原处理,即得到克隆代码对。利用本发明专利技术提供的技术方案,可以有效对智能机器人应用进行代码克隆检测,解决智能机器人应用多语言中的可移植性问题、大型应用上的可扩展性问题、检测结果的可重构性问题,提升智能机器人应用的开发高效性与运行稳定性。器人应用的开发高效性与运行稳定性。器人应用的开发高效性与运行稳定性。

【技术实现步骤摘要】
一种基于智能机器人应用的代码克隆检测方法


[0001]本专利技术涉及系统工程、智能机器人等
,特别涉及一种基于智能机器人应用的代码克隆检测方法。

技术介绍

[0002]近年来,随着工业化和信息化的不断推进,计算机视觉、深度学习、自然语言处理等多方面的飞速进展,为各种场景设计而出的功能各异的智能机器人越来越多,智能机器人的应用领域也越来越广泛。无论是工业中进行智能制造、医疗中进行辅助诊断和辅助手术、军事和安防方面的侦查、物联网和智能家居等方面,都有着智能机器人的身影。
[0003]面对更多、更复杂的应用场景,应用开发人员面对的任务越来越复杂,代码量也随之大幅增加。代码克隆指的是源代码中存在多处代码段相同或高度相似的现象,通常是由于软件开发中的复用行为产生的。在不同文献中,克隆代码有着不同的定义:Krinke称之为“相似的代码”,Baxter使用“一段与其他代码相似的代码”来指代,还用了部分研究者采用了“复制的代码”。总而言之,普遍认为相似度达到一定阈值的代码即构成克隆代码,我们将相似的一对代码段称为克隆对,将相似的一组代码段称为克隆集合。
[0004]代码克隆的现象会导致程序中的错误传播,增加软件的维护开销。当克隆集合中一段代码出现问题时,需要对克隆集合中所有其他代码进行修改。为解决这个问题,克隆检测技术一直是非常活跃的研究领域,利用克隆检测可以有效的发现漏洞,重构代码并删除不必要的代码段。克隆检测的过程可以分为预处理、中间形式转换和比对三个过程,在预处理过程中去除注释等无关元素并对代码进行分块,然后利用文本处理、词法分析、语法分析、属性分析或者机器学习等方法将源代码转换成可以比较的中间形式,然后再利用相应的计算方式比对代码对之间的相似度得到克隆对与克隆集合。克隆检测方法的不同设计不仅影响了工具检测效果的精确性,并且决定了工具在可检测代码规模的可扩展性、在不同语言之间移植的难度以及检测结果的可重构性。因此,需要一套专用于智能机器人应用代码克隆检测方法,解决智能机器人应用多语言中的可移植性问题、大型应用上的可扩展性问题、检测结果的可重构性问题,将有效提升智能机器人应用的开发高效性与运行稳定性。

技术实现思路

[0005]本专利技术基于增量式克隆检测方法,对智能机器人应用进行代码克隆检测,设计了一种基于智能机器人应用的代码克隆检测方法,解决相关领域的空缺。
[0006]本专利技术提供的技术方案如下:
[0007]一种基于智能机器人应用的代码克隆检测方法,包括以下步骤:
[0008]载入智能机器人应用的源代码;
[0009]将所述源代码转换为抽象语法树;
[0010]利用关键词统计将所述抽象语法树中的节点转换为特征向量;
[0011]基于特征向量,通过剪枝对所述抽象语法树进行过滤;
[0012]对过滤后的抽象语法树进行相似度计算,得到相似度结果;
[0013]将所述相似度结果进行还原处理,即得到克隆代码对。
[0014]所述将所述源代码转换为抽象语法树,包括:利用ANLTR生成的语法分析器,将源代码转换为抽象语法树。
[0015]所述关键词统计中的关键词包括:if、then、for。
[0016]所述基于特征向量,通过剪枝对所述抽象语法树进行过滤,包括:
[0017]根据所述特征向量,组合所述源代码中每个变量的特征向量,生成特征矩阵。
[0018]所述基于特征向量,组合所述源代码中每个变量的特征向量,生成特征矩阵之后,还包括:
[0019]根据所述抽象语法树统计关键词个数与符号个数,并根据个数构建对应的计数向量;
[0020]所述对过滤后的抽象语法树进行相似度计算,得到相似度结果,包括:
[0021]根据所述特征矩阵和所述计数向量进行相似度计算,得到相似度结果。
[0022]所述将所述相似度结果进行还原处理,即得到克隆代码对,包括:
[0023]对相似度结果进行聚类操作,将类内相似代码所对应的源代码及源代码内行数进行展示。
[0024]所述对过滤后的抽象语法树进行相似度计算,得到相似度结果,包括:
[0025]利用局部敏感哈希算法对过滤后的抽象语法树进行相似度计算,得到相似度结果。
[0026]还包括:保存克隆代码对检测结果。
[0027]本专利技术的有益效果:利用本专利技术提供的技术方案,可以有效对智能机器人应用进行代码克隆检测,解决智能机器人应用多语言中的可移植性问题、大型应用上的可扩展性问题、检测结果的可重构性问题,提升智能机器人应用的开发高效性与运行稳定性。
附图说明
[0028]图1是本专利技术的对智能机器人应用项目进行代码克隆检测的流程。
具体实施方式
[0029]本专利技术实施例提供一种基于智能机器人应用的代码克隆检测方法,能够适应大规模智能机器人应用的敏捷开发场景下智能机器人节点之间的语言差异要求,在克隆检测的过程能够灵活扩展至新编程语言。同时面对智能机器人应用代码可达数十万行的规模,在克隆检测过程具有良好的可扩展性。为实现通过代码重构提高应用内部代码复用率的目标,克隆检测的结果具有符合编程语言语法的代码分块,以供开发人员优化代码。本专利技术的具体实施方式如下,如图1所示:
[0030]1.载入智能机器人应用的源代码,即代码文件;
[0031]2.利用ANLTR生成的语法分析器,将源代码转换为抽象语法树;
[0032]3.基于抽象语法树,利用关键词统计,将抽象语法树中结点转换为特征向量;
[0033]4.基于特征向量,通过剪枝对抽象语法树进行过滤;
[0034]5.基于过滤后抽象语法树,利用局部敏感哈希算法(LSH)快速实现相似代码检测;
[0035]6.对代码检测结果进行后处理,即将检测得到的表达克隆对的信息转换还原得到克隆代码对;
[0036]7.保存代码克隆检测结果。
[0037]下面通过实施例对本专利技术做进一步说明。
[0038]实施例1:针对某智能机器人应用进行代码克隆检测
[0039]A.对智能机器人应用进行代码克隆检测时,执行如下操作:
[0040]A1.载入智能机器人应用的源代码;
[0041]A2.基于步骤A1的载入的结果,利用ANLTR生成的语法分析器,将源代码转换为抽象语法树;
[0042]A3.基于步骤A2所生成的抽象语法树结果,利用关键词统计,将抽象语法树中结点转换为特征向量;具体包括:
[0043]1)变量被使用的次数;
[0044]2)变量被定义的次数;
[0045]3)变量是不是在一个if条件里面;
[0046]4)变量是不是在一个加法或者减法运算;
[0047]5)变量是不是在一个乘法或者除法运算中;
[0048]6)变量是不是一个数组的下标;
[0049]7)变量是不是定义为一个常量;
[0050]8)变量是不是在第一层循环;...

【技术保护点】

【技术特征摘要】
1.一种基于智能机器人应用的代码克隆检测方法,其特征在于,包括以下步骤:载入智能机器人应用的源代码;将所述源代码转换为抽象语法树;利用关键词统计将所述抽象语法树中的节点转换为特征向量;基于特征向量,通过剪枝对所述抽象语法树进行过滤;对过滤后的抽象语法树进行相似度计算,得到相似度结果;将所述相似度结果进行还原处理,即得到克隆代码对。2.如权利要求1所述的方法,其特征在于,所述将所述源代码转换为抽象语法树,包括:利用ANLTR生成的语法分析器,将源代码转换为抽象语法树。3.如权利要求1所述的方法,其特征在于,所述关键词统计中的关键词包括:if、then、for。4.如权利要求1所述的方法,其特征在于,所述基于特征向量,通过剪枝对所述抽象语法树进行过滤,包括:根据所述特征向量,组合所述源代码中每个变量的特征向量,生成特征矩阵。5.如权利要...

【专利技术属性】
技术研发人员:郭耀蔡奕丰臧振宇张子祺王远鹏陈向群
申请(专利权)人:北京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1