用于检测代码克隆的系统和方法技术方案

技术编号:41129107 阅读:31 留言:0更新日期:2024-04-30 17:57
描述了用于检测软件程序中的代码克隆的方法和设备。所述软件程序的所述源代码被处理成n‑gram表示组。克隆索引是为所述归一化源代码中定义的每个相应代码部分生成的,其中,每个克隆索引包括特征向量,所述特征向量基于对应于所述相应代码部分的所述n‑gram表示对所述相应代码部分的特征进行编码。所述克隆索引的比较用于基于匹配所述克隆索引的所述特征向量来检测代码克隆。

【技术实现步骤摘要】
【国外来华专利技术】

本专利技术涉及用于检测代码克隆的系统和方法,尤其涉及用于在不同抽象级别和/或粒度级别检测代码克隆的系统和方法。


技术介绍

1、代码克隆(也称为重复代码)是指彼此相同或相似的代码片段。代码片段是源代码行的序列。两个代码片段可以被认为是彼此不完全相同的克隆。例如,仅在空格字符和/或注释(或其它非功能性代码行)的使用上不同的两个代码片段可以被认为是彼此的克隆。在较高的抽象级别彼此相似(例如,在功能上彼此相同,而不是在字符级别完全相同)的两个代码片段也可以被认为是代码克隆。

2、检测代码克隆对于代码搜索、重构和缺陷检测等软件任务非常重要。检测代码克隆通常很重要,因为代码克隆可能会降低软件性能(例如,导致代码文件更大,从而需要更多的内存和处理器资源来存储和/或编译代码)。代码克隆还会使软件维护更复杂(例如,更新软件可能需要更新克隆的代码片段的所有实例)。此外,代码克隆存在软件漏洞在软件中重复出现的风险,并且这个风险在尝试修复漏洞时可能会被遗漏。现有的代码克隆检测技术通常被设计为只检测特定类型的代码克隆。此外,现有的技术通常适用于相对较小的软件(例如,有几本文档来自技高网...

【技术保护点】

1.一种方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1或2所述的方法,其特征在于,将所述源代码处理为所述n-gram表示组包括:

4.根据权利要求3所述的方法,其特征在于,将所述格式化源代码转换为所述抽象源代码包括:

5.根据权利要求4所述的方法,其特征在于,所述抽象级别可通过用户输入选择。

6.根据权利要求1至5中任一项所述的方法,其特征在于,所述定义数量的代码行可通过用户输入选择。

7.根据权利要求1至6中任一项所述的方法,其特征在于,为给定代码部...

【技术特征摘要】
【国外来华专利技术】

1.一种方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1或2所述的方法,其特征在于,将所述源代码处理为所述n-gram表示组包括:

4.根据权利要求3所述的方法,其特征在于,将所述格式化源代码转换为所述抽象源代码包括:

5.根据权利要求4所述的方法,其特征在于,所述抽象级别可通过用户输入选择。

6.根据权利要求1至5中任一项所述的方法,其特征在于,所述定义数量的代码行可通过用户输入选择。

7.根据权利要求1至6中任一项所述的方法,其特征在于,为给定代码部分生成所述克隆索引包括:生成对所述给定代码部分的特征进行编码的所述特征向量,其中,生成所述特征向量包括:

8.根据权利要求7所述的方法,其特征在于,从所述给定代码部分提取特征包括:

9.根据权利要求7或8所述的方法,其特征在于,为每个特征生成所述相应的加权哈希向量包括:

10.根据权利要求7至9中任一项所述的方法,其特征在于,所述组合向量被进一步转换为二进制组合向量,以用作所述特征向量。

11.根据权利要求1至10中任一项所述的方法,其特征在于,给定代码部分的所述克隆索引包括所述源代码的标识符、所述给定代码部分在所述源代码中的位置的指示符以及对所述给定代码部分的特征进行编码的所述特征向量。

12.根据权利要求1至11中任一项所述的方法,其特征在于,所述源代码中定义的每个代码部分通过滑动窗口定义,每个代码部分中的所述定义数量的代码行由所述滑动窗口的大小定义。

13.根据权利要求1至12中任一项所述的方法,其特征在于,所述方法还包括:

14.根据权利要求1至13中任一项所述的方法,其特征在于,检测所述代码克隆包括将和所述软件程序相关联的所述克隆索引与和另一软件程序相关联的克隆索引进行比较。

15.一种设备,其特征在于,所述设备包括:

16.根据权利要求15所述的设备,其特征在于,所述处理单元用于执行所述指令以进一步使所述设备进行以下操作:

17.根据权利要求15或16所述的设备,其特征在于,所述处理单元用于执行所述指令,以进一步使所述设备通过以下操作将所述源代码处理为所述n-gram表示组:

18.根据权利要求17所述的...

【专利技术属性】
技术研发人员:陈金富王原邱栋夏鑫
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1