代码克隆检测方法、装置、终端设备与可读存储介质制造方法及图纸

技术编号:37166525 阅读:13 留言:0更新日期:2023-04-20 22:39
本发明专利技术公开了一种代码克隆检测方法、装置、终端设备与可读存储介质,该方法包括:当接收到提取指令时,获取源码文件,对所述源码文件进行分析,得到所述源码文件对应的函数体信息,基于所述函数体信息,从所述源码文件中确定至少一个子函数体,通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测,通过预置工具高效率获取函数体,然后对函数体中具有特征意义的部分进行提取,其余部分过滤,得到函数体对应的函数字符串,最终通过该函数字符串能够检测代码是否存在克隆,解决目前代码克隆检测难度大的技术问题,提高克隆代码的检测准确度。码的检测准确度。码的检测准确度。

【技术实现步骤摘要】
代码克隆检测方法、装置、终端设备与可读存储介质


[0001]本专利技术涉及数据处理领域,尤其涉及一种代码克隆检测方法、装置、终端设备与可读存储介质。

技术介绍

[0002]随着软件技术的飞速发展,代码克隆检测的需求日益增高。代码克隆检测是指,检测出代码之间两个及两个以上相同或者相似的源代码片段。代码中的函数可能应用在多个软件或项目中,想要修改某个函数时,需要对该函数对应的所有项目进行修改才能正常运行,因此,在修改之前,需要进行代码克隆检测。
[0003]目前代码克隆检测的方式是,首先程序员通过检索工具检索到源代码中的函数的位置,然后由人工确认这些相似的函数是否为克隆代码。或由机器先按照预设条件从多个源代码中聚类出高相似度或相同的函数,然后交由程序员进行确认。
[0004]上述两种方式都依赖于程序员的个人专业水平,程序员需要了解每种语言的代码结构、语法和函数定义,才能从不同语言类型的源码文件提取代码,即对程序员的要求高,且人工确认的方式受主观因素影响,准确率不能保证。

技术实现思路

[0005]本专利技术的主要目的在于提供一种代码克隆检测方法、装置、终端设备与可读存储介质,旨在解决目前代码克隆检测难度大的技术问题,提高克隆代码的检测准确度。
[0006]为实现上述目的,本专利技术提供一种代码克隆检测方法,所述代码克隆检测方法包括以下步骤:
[0007]当接收到提取指令时,获取源码文件;
[0008]对所述源码文件进行分析,得到所述源码文件对应的函数体信息;
>[0009]基于所述函数体信息,从所述源码文件中确定至少一个子函数体;
[0010]通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测。
[0011]可选地,所述对所述源码文件进行分析,得到所述源码文件对应的函数体信息的步骤包括:
[0012]当接收到扫描指令时,通过预置扫描工具对所述源码文件进行扫描,获取所述源码文件中的函数体信息。
[0013]可选地,所述基于所述函数体信息,从所述源码文件中确定至少一个子函数体的步骤包括:
[0014]获取所述函数体信息中的起始行及结束行;
[0015]基于所述起始行及所述结束行,从所述源码文件通过截取得到至少一个子函数体。
[0016]可选地,所述通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字
符串的步骤包括:
[0017]获取所述子函数体中的字符串;
[0018]通过所述预置匹配规则,对所述字符串进行匹配提取,得到至少一个第一函数字符串;
[0019]通过所述预置匹配规则,对所述第一函数字符串进行匹配过滤,得到至少一个第二函数字符串,将所述第二函数字符串作为所述函数字符串。
[0020]可选地,所述通过所述预置匹配规则,对所述字符串进行匹配提取,得到至少一个第一函数字符串,通过所述预置匹配规则,对所述第一函数字符串进行匹配过滤,得到至少一个第二函数字符串,将所述第二函数字符串作为所述函数字符串的步骤包括:
[0021]识别所述字符串中的第一特征符号;
[0022]在所述字符串中,提取所述第一特征符号之间的字符,得到所述第一函数字符串;
[0023]识别所述第一函数字符串中的第二特征字符串;
[0024]在所述第一函数字符串中,过滤所述第二特征字符串,并将过滤后的所述第二函数字符串作为所述函数字符串。
[0025]可选地,在所述第一函数字符串中,过滤所述第二特征字符串,并将过滤后的所述第一函数字符串作为所述函数字符串的步骤之后,还包括:
[0026]获取所述函数字符串的字体格式;
[0027]将所述字体格式与预设格式比对,若所述比对的结果为不一致,则对所述字体格式对应的所述函数字符串进行格式转换。
[0028]可选地,所述通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串的步骤之后,还包括:
[0029]为所述函数字符串生成特征标识;
[0030]基于所述函数体信息及所述特征标识,为所述函数字符串生成索引标识。
[0031]此外,为实现上述目的,本专利技术还提供一种代码克隆检测装置,所述代码克隆检测装置包括:
[0032]获取模块,用于当接收到提取指令时,获取源码文件;
[0033]分析模块,用于对所述源码文件进行分析,得到所述源码文件对应的函数体信息;
[0034]确定模块,用于基于所述函数体信息,从所述源码文件中确定至少一个子函数体;
[0035]提取模块,用于通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测。
[0036]此外,为实现上述目的,本专利技术还提供一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码克隆检测程序,所述代码克隆检测程序被所述处理器执行时实现如上所述的代码克隆检测方法的步骤。
[0037]此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有代码克隆检测程序,所述代码克隆检测被处理器执行时实现如上所述的代码克隆检测方法的步骤。
[0038]本专利技术提供了一种代码克隆检测方法、装置、终端设备与可读存储介质。通过当接收到提取指令时,获取源码文件;
[0039]对所述源码文件进行分析,得到所述源码文件对应的函数体信息;
[0040]基于所述函数体信息,从所述源码文件中确定至少一个子函数体;
[0041]通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测,即借助分析工具对源码文件进行分析,得到源码文件中函数体的定位相关信息,基于该信息对源码文件进行截取,得到函数体的关键部分,再通过正则表达式的预置匹配规则,进一步替换其中对表达函数信息无用的字符,最终得到函数字符串。经过替换的函数字符串比原函数体占用空间更小,方便存储,且对关键部分的字符进行提取,不影响表达原函数体的信息,从而实现对源码文件中函数特征的自动化提取,得到函数字符串,基于函数字符串进行代码克隆检测,最终降低代码克隆的提取难度及提高检测准确性。
附图说明
[0042]图1为本申请代码克隆检测装置所属终端设备的功能模块示意图;
[0043]图2为本申请代码克隆检测方法一示例性实施例的流程示意图;
[0044]图3为本申请代码克隆检测方法另一示例性实施例的流程示意图;
[0045]图4为本申请代码克隆检测方法另一示例性实施例的流程示意图;
[0046]图5为本申请代码克隆检测方法另一示例性实施例的流程示意图;
[0047]图6为本申请代码克隆检测方法另一示例性实施例的流程示意图;
[0048]图7为本申请代码克隆检测方法涉及的源码文件分析示意图。
[004本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种代码克隆检测方法,其特征在于,所述代码克隆检测方法包括以下步骤:当接收到提取指令时,获取源码文件;对所述源码文件进行分析,得到所述源码文件对应的函数体信息;基于所述函数体信息,从所述源码文件中确定至少一个子函数体;通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串,并基于所述函数字符串进行代码克隆检测。2.如权利要求1所述代码克隆检测方法,其特征在于,所述对所述源码文件进行分析,得到所述源码文件对应的函数体信息的步骤包括:当接收到扫描指令时,通过预置扫描工具对所述源码文件进行扫描,获取所述源码文件中的函数体信息。3.如权利要求2所述代码克隆检测方法,其特征在于,所述基于所述函数体信息,从所述源码文件中确定至少一个子函数体的步骤包括:获取所述函数体信息中的起始行及结束行;基于所述起始行及所述结束行,从所述源码文件通过截取得到至少一个子函数体。4.如权利要求1所述代码克隆检测方法,其特征在于,所述通过预置匹配规则,对所述子函数体进行提取,得到至少一个函数字符串的步骤包括:获取所述子函数体中的字符串;通过所述预置匹配规则,对所述字符串进行匹配提取,得到至少一个第一函数字符串;通过所述预置匹配规则,对所述第一函数字符串进行匹配过滤,得到至少一个第二函数字符串,将所述第二函数字符串作为所述函数字符串。5.如权利要求4所述代码克隆检测方法,其特征在于,所述通过所述预置匹配规则,对所述字符串进行匹配提取,得到至少一个第一函数字符串,通过所述预置匹配规则,对所述第一函数字符串进行匹配过滤,得到至少一个第二函数字符串,将所述第二函数字符串作为所述函数字符串的步骤包括:识别所述字符串中的第一特征符号;在所述字符串中,提取所述第一特征符号之间的字符,得到所述第一函数字符串...

【专利技术属性】
技术研发人员:万振华
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

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

1