CN117608561A - 一种新增重复代码的确定方法及装置 - Google Patents
一种新增重复代码的确定方法及装置 Download PDFInfo
- Publication number
- CN117608561A CN117608561A CN202311267953.XA CN202311267953A CN117608561A CN 117608561 A CN117608561 A CN 117608561A CN 202311267953 A CN202311267953 A CN 202311267953A CN 117608561 A CN117608561 A CN 117608561A
- Authority
- CN
- China
- Prior art keywords
- code
- increment
- class file
- target item
- repetition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000008859 change Effects 0.000 claims abstract description 61
- 238000004891 communication Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书提供一种新增重复代码的确定方法及装置,所述方法包括:获取与目标项目对应的代码变更信息;其中,所述代码变更信息包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息以及对应的类文件信息;将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
Description
技术领域
本申请涉及代码检查技术领域,尤其涉及一种新增重复代码的确定方法、装置、电子设备及机器可读存储介质。
背景技术
在软件开发的过程中,为了提升代码的可读性以及可维护性,通常会在编写项目代码的过程中,将项目代码中的重复代码提取出来作为公共的函数,以便于后续对该公共的函数进行调用。
在实际的应用中,技术人员在进行项目开发时,通常需要针对自己开发的部分代码进行重复代码的提取,在这种情况下,只能通过人工检查的方式,确定自己开发的这部分代码中的重复代码。因此,从增量代码中提取重复代码的准确性以及效率都不高。
发明内容
本申请提供一种新增重复代码的确定方法,所述方法包括:
获取与目标项目对应的代码变更信息;其中,所述代码变更信息包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息;
将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
可选的,将所述至少一个增量代码中,与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码,包括:
将所述至少一个增量代码中的各个增量代码对应的类文件信息与所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息进行匹配;
如果所述至少一个增量代码中的任一增量代码对应的类文件信息与所述至少一个重复代码中的任一重复代码对应的类文件信息匹配成功,则进一步确定所述任一增量代码的起始行信息与所述任一重复代码对应的类文件信息是否匹配成功;
如果所述任一增量代码的起始行信息与所述任一重复代码对应的类文件信息匹配成功,则将所述任一增量代码确定为新增重复代码。
可选的,在将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码之前,所述方法还包括:
采用全量代码冗余检查工具,对所述目标项目进行全量代码冗余检查,并基于检查结果,确定所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息和起始行信息。
可选的,获取与目标项目对应的代码变更信息,包括:
响应于项目仓库发送的针对所述目标项目更新的变更信息,从所述项目仓库中获取与所述目标项目对应的差异日志信息;其中,所述差异日志信息用于指示所述目标项目变更后减少以及增加的代码;
从所述差异日志信息中提取出所述代码变更信息。
可选的,所述项目仓库为gitlab项目仓库。
可选的,所述全量代码冗余检查工具为CPD工具。
本申请还提供一种新增重复代码的确定装置,所述装置包括:
获取单元,用于获取与目标项目对应的代码变更信息;其中,所述代码变更信息包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息;
确定单元,用于将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行所述新增重复代码的确定方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现所述新增重复代码的确定方法。
本申请提供的技术方案至少可以包括以下有益效果:
通过以上实施例,可以获取与目标项目对应的代码变更信息,由于所述代码变更信息可以包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息,因此,可以将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。从而实现自动化确定代码变更后的项目代码中的新增重复代码,提高确定新增的代码中的重复代码的准确性以及效率。
附图说明
图1是一示例性的实施例示出的一种新增重复代码的确定方法的流程图。
图2是一示例性的实施例示出的另一种新增重复代码的确定方法的流程图。
图3是一示例性的实施例示出的一种成新增重复代码的确定装置所在电子设备的硬件结构图。
图4是一示例性的实施例示出的一种新增重复代码的确定装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
在软件开发的过程中,为了提升代码的可读性以及可维护性,通常会在编写项目代码的过程中,对项目代码进行精简,以减少项目代码的冗余,其中,对项目代码进行精简的一种重要的方式是将项目代码中的重复代码提取出来作为公共的函数,以便于后续对该公共的函数进行调用。
在实际的应用中,当前的技术仅支持针对项目代码中的所有重复代码进行提取,而技术人员在进行项目开发时,通常需要针对自己开发的部分代码进行重复代码的提取,在这种情况下,只能通过人工检查的方式确定新开发的这部分代码中的重复代码。因此,确定新增的代码中的重复代码的准确性以及效率都不高。
有鉴于此,本申请旨在提出一种新增重复代码的确定方法。该方法基于增量代码与重复代码的起始行信息以及对应的类文件信息的匹配结果确定该增量代码中的新增重复代码。
在实现时,可以获取与目标项目对应的代码变更信息;其中,所述代码变更信息可以包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息;
进一步地,可以将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
通过以上实施例,可以获取与目标项目对应的代码变更信息,由于所述代码变更信息可以包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息,因此,可以将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。从而实现自动化确定代码变更后的项目代码中的新增重复代码,提高确定新增的代码中的重复代码的准确性以及效率。
下面通过具体实施例,并结合具体的应用场景对本申请进行描述。
请参见图1,图1是一示例性的实施例示出的一种新增重复代码的确定方法的流程图。
关于该方法的执行主体,本说明书对此不做限定。例如,上述方法可以应用于CICD系统,还可以应用于能够用于执行该方法的其他执行主体。
CICD(持续集成和持续交付,Continuous Integration and ContinuousDelivery)系统,用于实现持续集成和持续交付,从而加快软件交付速度。
如图1所示,上述CICD系统可以执行以下步骤:
步骤102,获取与目标项目对应的代码变更信息;其中,上述代码变更信息可以包括上述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息。
当技术人员针对目标项目进行代码变更时,上述CICD系统可以获取与该目标项目对应的代码变更信息,并可以基于该代码变更信息来确定变更后的该目标项目包含的增量代码中是否包含有重复代码。
其中,该增量代码可以指完成代码变更后的目标项目对应的源代码相对于进行代码变更前的目标项目对应的源代码新增的代码。
该代码变更信息可以包括该目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息。
例如,该目标项目变更后可以包含增量代码_1、增量代码_2以及增量代码_3,该代码变更信息可以包括该增量代码_1的起始行信息_1以及与该增量代码_1对应的类文件信息_1;还可以包括该增量代码_2的起始行信息_2以及与该增量代码_2对应的类文件信息_2;该增量代码_3的起始行信息_3以及与该增量代码_3对应的类文件信息_3。
在示出的一种实施方式中,上述CICD系统可以响应于项目仓库发送的针对上述目标项目更新的变更信息,从上述项目仓库中获取与上述目标项目对应的差异日志信息;其中,上述差异日志信息可以用于指示上述目标项目变更后减少以及增加的代码;上述CICD系统可以从该差异日志信息中提取出代码变更信息。
当技术人员针对目标项目进行代码变更时,可以将变更后的目标项目的源代码上传至项目仓库,由于项目仓库接收到该变更后的目标项目的源代码时,可以自动将该变更后的目标项目的源代码与变更前的目标项目的源代码进行比对,并可以生成与该目标项目对应的差异日志信息,该差异日志信息可以指示变更后的上述目标项目相对于变更前的目标项目减少以及增加的代码。
需要注意的是,由于本方案是用于确定新增代码中的重复代码,不对代码变更后的目标项目对应的源代码相对于代码变更前的目标项目对应的源代码减少的代码进行探讨,而该差异日志信息用于指示变更后的上述目标项目相对于变更前的目标项目减少以及增加的代码,因此,还需要从该差异日志信息中提取至少一个增量代码的起始行信息和对应的类文件信息。
具体而言,可以针对该差异日志信息进行解析,通过查询该差异日志信息中的newpath参数,可以获取与该至少一个增量代码对应的类文件信息。还可以通过正则表达式(“@@.*@@”)获取该差异日志信息包含的与上述变更后的上述目标项目相对于变更前的目标项目减少以及增加的代码对应的行信息,并可以从该行信息中获取与上述增量代码对应的目标行信息,由于该目标行信息中包含有上述增量代码的起始行信息以及增加的行数,因此,还可以进一步地对该目标行信息进行分组,获取该目标行信息中的起始行信息。
通过这种方式,能够从项目仓库生成的差异日志信息中获取本方案所需要的代码变更信息,以便于后续根据该代码变更信息确定变更后的该目标项目包含的增量代码中是否包含有重复代码,从而提高自动确定上述至少一个增量代码中的重复代码的效率以及准确性。
关于上述项目仓库的具体形式,本说明书对此不做限定。例如,该项目仓库可以为github项目仓库,还可以为gitlab项目仓库。
在示出的一种实施方式中,所述项目仓库为gitlab项目仓库。
GitLab项目仓库,是指在GitLab上创建的用于存储、管理和协作开发代码的存储库。其中,GitLab是一个基于Git的Web平台,提供了一套完整的工具和功能,方便团队在一个地方进行代码版本控制、协作和持续集成等。
步骤104,将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
上述变更后的目标项目可以包含有至少一个重复代码,可以通过将上述至少一个增量代码对应的类文件信息和起始行信息与该至少一个重复代码对应的类文件信息和起始行信息进行匹配,并可以基于匹配结果确定该至少一个增量代码中的重复代码。
例如,该目标项目变更后可以包含增量代码_1以及增量代码_2,该代码变更信息可以包括该增量代码_1的起始行信息_1以及与该增量代码_1对应的类文件信息_1;还可以包括该增量代码_2的起始行信息_2以及与该增量代码_2对应的类文件信息_2;上述目标项目变更后可以包含有重复代码_1以及重复代码_2,与该重复代码_1对应的类文件信息可以为类文件信息_1,该重复代码_1的起始行信息可以为起始行信息_1,与该重复代码_2对应的类文件信息可以为类文件信息_3,该重复代码_2的起始行信息可以为起始行信息_3;由于上述增量代码_1的起始行信息以及对应的类文件信息,与上述重复代码_1的起始行信息以及对应的类文件信息匹配成功,因此,可以确定该增量代码_1为新增重复代码。
通过这种方式,能够自动确定至少一个增量代码中的重复代码,提高确定增量代码中的重复代码的效率以及准确性。
在示出的一种实施方式中,可以将上述至少一个增量代码中的各个增量代码对应的类文件信息与上述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息进行匹配;如果上述至少一个增量代码中的任一增量代码对应的类文件信息与上述至少一个重复代码中的任一重复代码对应的类文件信息匹配成功,则可以进一步确定上述任一增量代码的起始行信息与上述任一重复代码对应的起始行信息是否匹配成功;如果上述任一增量代码的起始行信息与上述任一重复代码对应的起始行信息匹配成功,则可以将上述任一增量代码确定为新增重复代码。
在将上述至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息,与所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息和起始行信息进行匹配时,可以先将该增量代码对应的类文件信息与该重复代码对应的类文件信息进行匹配,如果该增量代码对应的类文件信息与该重复代码对应的类文件信息匹配成功,则说明该增量代码与该重复代码属于同一类文件中的代码,基于此,可以进一步确定该增量代码的起始行信息与该重复代码的起始行信息是否匹配,如果该增量代码的起始行信息与该重复代码的起始行信息匹配成功,则说明该增量代码与该重复代码为同一段代码,也即,该增量代码为重复代码。
例如,该目标项目变更后可以包含增量代码_1以及增量代码_2,该代码变更信息可以包括该增量代码_1的起始行信息_1以及与该增量代码_1对应的类文件信息_1;还可以包括该增量代码_2的起始行信息_2以及与该增量代码_2对应的类文件信息_2;上述目标项目变更后可以包含有重复代码_1以及重复代码_2,与该重复代码_1对应的类文件信息可以为类文件信息_1,该重复代码_1的起始行信息可以为起始行信息_1,与该重复代码_2对应的类文件信息可以为类文件信息_3,该重复代码_2的起始行信息可以为起始行信息_3;可以先将该增量代码_1对应的类文件信息与该重复代码_1的类文件信息进行匹配,由于该增量代码_1对应的类文件信息以及该重复代码_1的类文件信息均为类文件信息_1,因此,可以确定该增量代码_1对应的类文件信息与该重复代码_1的类文件信息匹配成功;可以进一步将该增量代码_1的起始行信息与该重复代码_1的起始行信息进行匹配,由于该增量代码_1的起始行信息与该重复代码_1的起始行信息均为起始行信息_1,因此,可以确定该增量代码的起始行信息与该重复代码的起始行信息匹配成功,则可以将该增量代码_1确定为新增重复代码。
又例如,可以先将该增量代码_2对应的类文件信息与该重复代码_2的类文件信息进行匹配,由于该增量代码_2对应的类文件信息以及该重复代码_2的类文件信息不一致,因此,可以确定该增量代码_2对应的类文件信息与该重复代码_2的类文件信息匹配不成功,也即,该增量代码_2不是新增重复代码。
通过这种方式,能够自动确定上述至少一个增量代码中的重复代码,提高确定新增的代码中包含的重复代码的效率以及准确性。
在示出的一种实施方式中,在将上述至少一个增量代码中与上述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码之前,还可以采用全量代码冗余检查工具,对上述目标项目进行全量代码冗余检查,并可以基于检查结果,确定上述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息和起始行信息。
通过全量代码冗余工具,可以确定上述目标项目包含的至少一个重复代码,并可以生成与该至少一个重复代码中的各个重复代码对应的类文件信息和起始行信息。
例如,可以采用全量代码冗余工具,对上述目标项目进行全量代码冗余检查,确定上述目标项目包含有重复代码_1以及重复代码_2,并可以生成与该重复代码_1对应的类文件信息_1和起始行信息_1,以及与该重复代码_2对应的类文件信息_3和起始行信息_3。
通过这种方式,能够确定该目标项目中的全部重复代码,便于与增量代码进行比对,以确定新增的代码中包含的重复代码。
在示出的一种实施方式中,上述全量代码冗余检查工具为CPD工具。
CPD(全量代码冗余检查工具,Copy-Paste Detector),是一种静态代码分析工具,可以支持多种编程语言,能够用于检测不同文件中的相似代码。
通过这种方式,能够获取上述目标项目中的所有重复代码,以便于确定上述增量代码是否为重复代码,提高自动确定新增重复代码的效率以及准确性。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面结合如图2所示的新增重复代码的确定方法的流程图对本说明书中的实施例进行说明。
请参见图2,图2是一示例性的实施例示出的另一种新增重复代码的确定方法的流程图。
当技术人员针对目标项目进行代码变更时,可以将变更后的目标项目的源代码上传至gitlab项目仓库,由于gitlab项目仓库接收到该变更后的目标项目的源代码时,能够将该变更后的目标项目的源代码与变更前的目标项目的源代码进行比对,并可以生成与该目标项目对应的差异日志信息,该差异日志信息可以指示变更后的上述目标项目相对于变更前的目标项目减少以及增加的代码。
上述CICD系统可以针对该差异日志信息进行解析,通过查询该差异日志信息中的newpath参数,获取与该至少一个增量代码对应的类文件信息。还可以通过正则表达式(“@@.*@@”)获取该差异日志信息包含的与上述变更后的上述目标项目相对于变更前的目标项目减少以及增加的代码对应的行信息,并可以从该行信息中获取与上述增量代码对应的目标行信息,由于该目标行信息中包含有上述增量代码的起始行信息以及增加的行数,因此,还可以进一步地对该目标行信息进行分组,以获取该目标行信息中的起始行信息。
基于上述过程,可以确定该目标项目变更后包含的至少一个增量代码,该至少一个增量代码可以包括增量代码_1以及增量代码_2,与该目标项目对应的代码变更信息可以包括该增量代码_1的起始行信息_1以及与该增量代码_1对应的类文件信息_1;还可以包括该增量代码_2的起始行信息_2以及与该增量代码_2对应的类文件信息_2。
采用全量代码冗余工具,可以对上述目标项目进行全量代码冗余检查,确定上述目标项目包含有重复代码_1以及重复代码_2,并可以生成与该重复代码_1对应的类文件信息_1和起始行信息_1,以及与该重复代码_2对应的类文件信息_3和起始行信息_3。
基于此,可以先将该增量代码_1对应的类文件信息与该重复代码_1的类文件信息进行匹配,由于该增量代码_1对应的类文件信息以及该重复代码_1的类文件信息均为类文件信息_1,因此,可以确定该增量代码_1对应的类文件信息与该重复代码_1的类文件信息匹配成功;可以进一步将该增量代码_1的起始行信息与该重复代码_1的起始行信息进行匹配,由于该增量代码_1的起始行信息与该重复代码_1的起始行信息均为起始行信息_1,因此,可以确定该增量代码的起始行信息与该重复代码的起始行信息匹配成功,则可以将该增量代码_1确定为新增重复代码。
还可以先将该增量代码_2对应的类文件信息与该重复代码_2的类文件信息进行匹配,由于该增量代码_2对应的类文件信息以及该重复代码_2的类文件信息不一致,因此,可以确定该增量代码_2对应的类文件信息与该重复代码_2的类文件信息匹配不成功,也即,该增量代码_2不是新增重复代码。
与所述新增重复代码的确定方法的实施例对应的,本说明书还提供了一种新增重复代码的确定装置的实施例。
请参见图3,图3是一示例性的实施例示出的一种新增重复代码的确定装置所在电子设备的硬件结构图。在硬件层面,该设备包括处理器302、内部总线304、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参见图4,图4是一示例性的实施例示出的一种新增重复代码的确定装置的框图。该新增重复代码的确定装置可以应用于图3所示的电子设备中,以实现本说明书的技术方案。其中,所述装置可以包括:
获取单元402,用于获取与目标项目对应的代码变更信息;其中,上述代码变更信息包括上述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息;
确定单元404,用于将上述至少一个增量代码中与上述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
在本实施例中,上述获取单元402,具体可以用于:
响应于项目仓库发送的针对所述目标项目更新的变更信息,从所述项目仓库中获取与所述目标项目对应的差异日志信息;其中,所述差异日志信息用于指示所述目标项目变更后减少以及增加的代码;
从所述差异日志信息中提取出所述代码变更信息。
在本实施例中,上述确定单元404,具体可以用于:
将所述至少一个增量代码中的各个增量代码对应的类文件信息与所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息进行匹配;
如果所述至少一个增量代码中的任一增量代码对应的类文件信息与所述至少一个重复代码中的任一重复代码对应的类文件信息匹配成功,则进一步确定所述任一增量代码的起始行信息与所述任一重复代码对应的类文件信息是否匹配成功;
如果所述任一增量代码的起始行信息与所述任一重复代码对应的类文件信息匹配成功,则将所述任一增量代码确定为新增重复代码。
在本实施例中,上述确定单元404,还可以用于:
采用全量代码冗余检查工具,对所述目标项目进行全量代码冗余检查,并基于检查结果,确定所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息和起始行信息。
在本实施例中,上述项目仓库可以为gitlab项目仓库。
在本实施例中,上述全量代码冗余检查工具可以为CPD工具。
所述装置中各个单元的功能和作用的实现过程具体详见所述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
所述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
所述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
Claims (9)
1.一种新增重复代码的确定方法,所述方法包括:
获取与目标项目对应的代码变更信息;其中,所述代码变更信息包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息;
将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
2.根据权利要求1所述的方法,将所述至少一个增量代码中,与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码,包括:
将所述至少一个增量代码中的各个增量代码对应的类文件信息与所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息进行匹配;
如果所述至少一个增量代码中的任一增量代码对应的类文件信息与所述至少一个重复代码中的任一重复代码对应的类文件信息匹配成功,则进一步确定所述任一增量代码的起始行信息与所述任一重复代码对应的类文件信息是否匹配成功;
如果所述任一增量代码的起始行信息与所述任一重复代码对应的类文件信息匹配成功,则将所述任一增量代码确定为新增重复代码。
3.根据权利要求1所述的方法,在将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码之前,所述方法还包括:
采用全量代码冗余检查工具,对所述目标项目进行全量代码冗余检查,并基于检查结果,确定所述目标项目包含的至少一个重复代码中的各个重复代码对应的类文件信息和起始行信息。
4.根据权利要求1所述的方法,获取与目标项目对应的代码变更信息,包括:
响应于项目仓库发送的针对所述目标项目更新的变更信息,从所述项目仓库中获取与所述目标项目对应的差异日志信息;其中,所述差异日志信息用于指示所述目标项目变更后减少以及增加的代码;
从所述差异日志信息中提取出所述代码变更信息。
5.根据权利要求1所述的方法,所述项目仓库为gitlab项目仓库。
6.根据权利要求3所述的方法,所述全量代码冗余检查工具为CPD工具。
7.一种新增重复代码的确定装置,所述装置包括:
获取单元,用于获取与目标项目对应的代码变更信息;其中,所述代码变更信息包括所述目标项目变更后包含的至少一个增量代码中的各个增量代码的起始行信息和对应的类文件信息;
确定单元,用于将所述至少一个增量代码中与所述目标项目包含的至少一个重复代码中的任一重复代码对应的类文件信息和起始行信息均匹配成功的目标增量代码确定为新增重复代码。
8.一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1至6任一项所述的新增重复代码的确定方法。
9.一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至6任一项所述的新增重复代码的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311267953.XA CN117608561A (zh) | 2023-09-27 | 2023-09-27 | 一种新增重复代码的确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311267953.XA CN117608561A (zh) | 2023-09-27 | 2023-09-27 | 一种新增重复代码的确定方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117608561A true CN117608561A (zh) | 2024-02-27 |
Family
ID=89953980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311267953.XA Pending CN117608561A (zh) | 2023-09-27 | 2023-09-27 | 一种新增重复代码的确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608561A (zh) |
-
2023
- 2023-09-27 CN CN202311267953.XA patent/CN117608561A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558525B (zh) | 一种测试数据集的生成方法、装置、设备和存储介质 | |
CN112380401B (zh) | 业务数据的核对方法和装置 | |
CN115391439B (zh) | 文档数据导出方法、装置、电子设备和存储介质 | |
CN105117499A (zh) | 基于云盘的文件显示方法及装置 | |
CN110209582A (zh) | 代码覆盖率的统计方法及装置、电子设备、存储介质 | |
CN116680014B (zh) | 数据处理方法和装置 | |
CN116700629B (zh) | 数据处理方法和装置 | |
CN111026736B (zh) | 数据血缘管理方法及装置、数据血缘解析方法及装置 | |
CN117608561A (zh) | 一种新增重复代码的确定方法及装置 | |
CN115907400A (zh) | 一种工单处理方法及装置 | |
CN110968500A (zh) | 一种测试用例的执行方法及装置 | |
CN114896161A (zh) | 基于人工智能的文件构造方法、装置、计算机设备及介质 | |
CN115129590A (zh) | 一种测试用例的生成方法及装置、电子设备、存储介质 | |
CN114691496A (zh) | 单元测试方法、装置、计算设备及介质 | |
CN114330278A (zh) | 一种判断返回数据一致性的方法及设备 | |
CN111651466A (zh) | 数据采样方法及装置 | |
CN116821143A (zh) | 一种数据更新方法及装置 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN116661758B (zh) | 一种优化日志框架配置的方法、装置、电子设备及介质 | |
CN113742360B (zh) | 基于元数据快速生成异构数据库sql脚本方法和装置 | |
CN114816845B (zh) | 一种基于MongoDB的快速数据回滚方法及装置 | |
CN116610308B (zh) | 代码管理方法及装置、电子设备及存储介质 | |
CN107436918A (zh) | 数据库实现方法、装置和设备 | |
CN116820959A (zh) | 一种在线调试方法及装置 | |
CN111061721B (zh) | 数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |