[发明专利]代码克隆检测方法、装置、终端设备与可读存储介质在审
| 申请号: | 202211101209.8 | 申请日: | 2022-09-08 |
| 公开(公告)号: | CN115951891A | 公开(公告)日: | 2023-04-11 |
| 发明(设计)人: | 万振华 | 申请(专利权)人: | 深圳开源互联网安全技术有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 深圳市恒程创新知识产权代理有限公司 44542 | 代理人: | 李晶 |
| 地址: | 518000 广东省深圳市龙华区民治*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 代码 克隆 检测 方法 装置 终端设备 可读 存储 介质 | ||
本发明公开了一种代码克隆检测方法、装置、终端设备与可读存储介质,该方法包括:当接收到提取指令时,获取源码文件,对所述源码文件进行分析,得到所述源码文件对应的函数体信息,基于所述函数体信息,从所述源码文件中确定至少一个子函数体,通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测,通过预置工具高效率获取函数体,然后对函数体中具有特征意义的部分进行提取,其余部分过滤,得到函数体对应的函数字符串,最终通过该函数字符串能够检测代码是否存在克隆,解决目前代码克隆检测难度大的技术问题,提高克隆代码的检测准确度。
技术领域
本发明涉及数据处理领域,尤其涉及一种代码克隆检测方法、装置、终端设备与可读存储介质。
背景技术
随着软件技术的飞速发展,代码克隆检测的需求日益增高。代码克隆检测是指,检测出代码之间两个及两个以上相同或者相似的源代码片段。代码中的函数可能应用在多个软件或项目中,想要修改某个函数时,需要对该函数对应的所有项目进行修改才能正常运行,因此,在修改之前,需要进行代码克隆检测。
目前代码克隆检测的方式是,首先程序员通过检索工具检索到源代码中的函数的位置,然后由人工确认这些相似的函数是否为克隆代码。或由机器先按照预设条件从多个源代码中聚类出高相似度或相同的函数,然后交由程序员进行确认。
上述两种方式都依赖于程序员的个人专业水平,程序员需要了解每种语言的代码结构、语法和函数定义,才能从不同语言类型的源码文件提取代码,即对程序员的要求高,且人工确认的方式受主观因素影响,准确率不能保证。
发明内容
本发明的主要目的在于提供一种代码克隆检测方法、装置、终端设备与可读存储介质,旨在解决目前代码克隆检测难度大的技术问题,提高克隆代码的检测准确度。
为实现上述目的,本发明提供一种代码克隆检测方法,所述代码克隆检测方法包括以下步骤:
当接收到提取指令时,获取源码文件;
对所述源码文件进行分析,得到所述源码文件对应的函数体信息;
基于所述函数体信息,从所述源码文件中确定至少一个子函数体;
通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测。
可选地,所述对所述源码文件进行分析,得到所述源码文件对应的函数体信息的步骤包括:
当接收到扫描指令时,通过预置扫描工具对所述源码文件进行扫描,获取所述源码文件中的函数体信息。
可选地,所述基于所述函数体信息,从所述源码文件中确定至少一个子函数体的步骤包括:
获取所述函数体信息中的起始行及结束行;
基于所述起始行及所述结束行,从所述源码文件通过截取得到至少一个子函数体。
可选地,所述通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串的步骤包括:
获取所述子函数体中的字符串;
通过所述预置匹配规则,对所述字符串进行匹配提取,得到至少一个第一函数字符串;
通过所述预置匹配规则,对所述第一函数字符串进行匹配过滤,得到至少一个第二函数字符串,将所述第二函数字符串作为所述函数字符串。
可选地,所述通过所述预置匹配规则,对所述字符串进行匹配提取,得到至少一个第一函数字符串,通过所述预置匹配规则,对所述第一函数字符串进行匹配过滤,得到至少一个第二函数字符串,将所述第二函数字符串作为所述函数字符串的步骤包括:
识别所述字符串中的第一特征符号;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳开源互联网安全技术有限公司,未经深圳开源互联网安全技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211101209.8/2.html,转载请声明来源钻瓜专利网。





