CN114924978A - 基于人工智能的多分支增量检查方法及相关设备 - Google Patents
基于人工智能的多分支增量检查方法及相关设备 Download PDFInfo
- Publication number
- CN114924978A CN114924978A CN202210594779.9A CN202210594779A CN114924978A CN 114924978 A CN114924978 A CN 114924978A CN 202210594779 A CN202210594779 A CN 202210594779A CN 114924978 A CN114924978 A CN 114924978A
- Authority
- CN
- China
- Prior art keywords
- increment
- subfile
- branch
- code file
- code
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提出一种基于人工智能的多分支增量检查方法、装置、电子设备及存储介质,基于人工智能的多分支增量检查方法包括:响应代码合并请求以获取增量检查信号,从增量检查信号中选取与代码合并请求中相同分支作为目标分支;对比目标分支的原始代码文件和新代码文件得到增量子文件列表;基于增量子文件列表中的子文件名匹配目标分支的原始代码文件和新代码文件以构建目标分支的子文件对;基于目标分支的ID信息创建目标分支的检查项目;基于检查项目对目标分支的子文件对进行增量检查得到增量检查结果;基于增量检查结果修新代码文件以获取正确代码文件。本申请能够降低代码检查时检查文件的数量,在保证各分支相互独立的同时提高代码检查的速度。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种基于人工智能的多分支增量检查方法、装置、电子设备及存储介质。
背景技术
在项目开发的过程中,开发人员在终端完成新代码的编写后,将新代码文件上传至代码仓库,与代码仓库中的原始代码进行代码合并操作。静态代码质量扫描工具一般是在合并代码之后定期对所有代码进行扫描检查,在发现问题之后,再由开发人员进行修改,但这时开发任务已经结束,开发人员修改的动力不强,且修改之后又需要测试人员重复测试,给测试工作带来很大的压力。
目前,通常将扫描检查的时间节点提前到每次代码合并之前,扫描检查时仅针对某一个固定的分支进行全量检查,然而,这种方法不能实现代码仓库中多个分支的独立扫描检查,且检查速度慢,进而导致代码检查效率低下。
发明内容
鉴于以上内容,有必要提出一种基于人工智能的多分支增量检查方法及相关设备,以解决如何提高代码检查效率这一技术问题,其中,相关设备包括基于人工智能的多分支增量检查装置、电子设备及存储介质。
本申请提供基于人工智能的多分支增量检查方法,所述方法包括:
当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息;
从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件;
基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对,所述增量子文件对与所述增量子文件一一对应;
基于所述目标分支的ID信息创建目标分支的检查项目;
基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果;
基于所述增量检查结果修改所述新代码文件以获取正确的代码文件。
在一些实施例中,所述对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表包括:
依据所述目标分支的ID信息提取目标分支的原始代码文件和新代码文件;
对比所述目标分支的原始代码文件和新代码文件中的子文件得到变更子文件列表,所述变更子文件列表包括新增文件、删除文件和修改文件三种变更状态;
基于所述变更状态筛选所述变更子文件列表得到所述增量子文件列表。
在一些实施例中,所述基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对包括:
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的原始代码文件以获取第一子文件集合;
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的新代码文件以获取增量子文件集合;
匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对。
在一些实施例中,所述匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对包括:
选择增量子文件集合中任意一个增量子文件作为目标子文件;
基于所述目标子文件与所述第一子文件集合中的所有子文件进行匹配得到匹配结果,所述匹配结果包括匹配成功和匹配失败;
若匹配成功,则将所述目标子文件与存在匹配关系的子文件作为一组增量子文件对;
若匹配失败,则将生成一个空文件与所述目标子文件作为一组增量子文件对;
遍历所述增量子文件集合中所有增量子文件得到所述目标分支的增量子文件对。
在一些实施例中,所述基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果包括:
依据代码类型对所述增量子文件对中的子文件进行预处理,所述代码类型包括编译型语言和非编译型语言;
将预处理后的子文件送入检查项目获取每一组增量子文件对中两个子文件的检查结果;
计算同一组增量子文件对中两个子文件检查结果差值的绝对值得到代码增量值;
统计每一组增量子文件对的代码增量值以作为增量检查结果。
在一些实施例中,所述基于所述增量检查结果修改所述新代码文件以获取正确代码文件包括:
基于所述增量检查结果提取增量子文件列表中的错误子文件集合;
开发人员对错误子文件集合的子文件进行修改得到修改子文件集合;
将修改子文件集合作为所述新代码文件,并重复执行所述增量检查过程获取最新增量检查结果,直至最新增量检查结果对应的错误子文件集合的子文件数量为零时,得到所述正确代码文件。
在一些实施例中,所述基于所述增量检查结果提取增量子文件列表中的错误子文件集合包括:
获取每一组增量子文件对的代码增量值;
若所述代码增量值为0,则表示对应增量子文件对中的增量子文件中不存在新增代码问题,所述增量子文件为正确子文件;
若所述代码增量值不为0,则表示对应增量子文件对中的增量子文件中存在新增代码问题,所述增量子文件为错误子文件;
储存所有的错误子文件以获取错误子文件集合。
本申请实施例还提供一种基于人工智能的多分支增量检查装置,所述装置包括:
响应单元,用于当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息;
对比单元,用于从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件;
匹配单元,用于基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对;
创建单元,用于基于所述目标分支的ID信息创建目标分支的检查项目;
检查单元,用于基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果;
修改单元,基于所述增量检查结果修改所述新代码文件以获取正确代码文件。
本申请实施例还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;
处理器,执行所述存储器中存储的指令以实现所述的基于人工智能的多分支增量检查方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现所述的基于人工智能的多分支增量检查方法。
综上,本申请将开发人员提交的新代码文件与对应分支的原始代码文件进行对比以获取增量子文件,然后利用质量扫描工具仅对每一个分支的增量子文件进行检查以完成代码检查,降低了检查文件的数量,在保证各分支检查结果相互独立的同时大大提高代码检查的速度。
附图说明
图1是本申请所涉及的基于人工智能的多分支增量检查方法的较佳实施例的流程图。
图2是本申请所涉及的开发任务的流程示意图。
图3是本申请所涉及的基于人工智能的多分支增量检查装置的较佳实施例的功能模块图。
图4是本申请所涉及的基于人工智能的多分支增量检查方法的较佳实施例的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本申请的目的、特征和优点,下面结合附图和具体实施例对本申请进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互结合。在下面的描述中阐述了很多具体细节以便于充分理解本申请,所述描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本申请实施例提供一种基于人工智能的多分支增量检查方法,可应用于一个或者多个电子设备中,电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
电子设备可以是任何一种可与客户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能式穿戴式设备等。
电子设备还可以包括网络设备和/或客户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络服务器构成的云。
电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
如图1所示,是本申请基于人工智能的多分支增量检查方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
S10,当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息。
在一个可选的实施例中,在项目开发的过程中,会将项目相关的所有代码文件储存在代码仓库中,所述代码仓库中存在多个分支,每一个分支储存着相应的代码文件,所述代码仓库中分支的数量与项目任务相关,为了区分不同的分支,所述代码仓库为每一个分支分配一个ID信息,所述ID信息可以是数字,还可以是字母或者符号,本方案不做限定。
该可选的实施例中,开发人员依据项目开发需求可借助项目管理软件从所述代码仓库中选择待开发分支,并将所述待开发分支中的原始代码文件复制到自己本地电脑上以形成临时分支,同时将该待开发分支的ID一并提取给该临时分支以方便后续合并代码时快速定位新代码文件对应的目标分支,开发人员可以在临时分支上对所述原始代码文件进行开发以获取新代码文件,开发任务完成后,再借助所述项目管理软件将所述新代码文件上传至代码仓库中,将所述临时分支上的新代码文件与所述待开发分支上的原始代码文件进行代码合并,从而完成开发任务,所述开发任务的流程图如图2所示。其中,所述项目管理软件可以为Gitlab,所述Gitlab是一个开源应用程序,可以实现一个自托管的Git项目代码仓库,可通过Web界面进行访问公开的或者私人项目,能够浏览源代码,管理缺陷和注释。
该可选的实施例中,在所述代码仓库中,相同时间点会有多个待开发分支进行代码合并的操作,每一个待开发分支均对应各自的原始代码文件和新代码文件,所述原始代码文件储存在待开发分支中,所述新代码文件储存在待开发分支对应的临时分支上。
当开发人员提交新代码文件时,在所述新代码文件与对应分支的原始代码文件进行代码合并之前,会触发预先配置好的钩子函数,所述钩子函数的输出结果即为所述增量检查信号,所述增量检查信号包括同一时间节点代码仓库中参与代码合并的所有分支的ID信息。
如此,在项目开发过程中,每当新代码文件被提交时均会获取所述增量检查信号,所述增量检查信号可以准确定位代码合并的分支,确保代码仓库中各分支之间的相互独立。
S11,从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件。
在一个可选的实施例中,当接受到所述代码合并请求后,需要根据所述代码合并请求对所述增量检查信号包括的所有分支进行检查,检索出与所述代码合并请求中的新代码文件对应的ID信息一致的分支作为目标分支。需要说明的是,由于不同分支之间的操作是相互独立的,所述代码合并请求中包括至少一个需合并的新代码文件,该实施例从中挑选一个ID信息对应的分支作为目标分支,其他分支的所有操作均与所述目标分支相同。
该可选的实施例中,所述对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表包括:
依据所述目标分支的ID信息提取目标分支的原始代码文件和新代码文件;
对比所述目标分支的原始代码文件和新代码文件中的子文件得到变更子文件列表,所述变更子文件列表包括新增文件、删除文件和修改文件三种变更状态;
基于所述变更状态筛选所述变更子文件列表得到所述增量子文件列表。
该可选的实施例中,所述原始代码文件为开发人员开发前目标分支上储存的代码文件,所述原始代码文件和新代码文件均包含多个子文件。
该可选的实施例中,利用git diff函数对比所述原始代码文件和新代码文件中的子文件以获取变更子文件列表,所述变更子文件列表包括变更状态和对应的子文件名称,所述变更状态包括新增、删除、修改三种,分别用字符A、D、M代表对应状态,进一步将所述变更子文件列表中删除状态所对应的列舍去以获得增量子文件列表,所述增量子文件列表中包括多个增量子文件。其中,所述git diff函数可以比较代码仓库中不同分支、不同区域以及不同提交记录的代码文本之间差异。
示例性的,将所述目标分支的ID信息记为i,将所述目标分支i对应的临时分支记为i*,所述临时分支i*上的新代码文件与所述目标分支i上的原始代码文件进行对比,通过执行如下命令:
“git diff--name-status i i*”
即可以自动获取所述变更子文件列表:
A:file1、file2;
D:file3;
M:file4、file5;
从上述变更子文件列表可以知道,在所述新代码文件中新增了file1、file2两个子文件,删除了所述原始代码文件中一个子文件file3,并对所述原始代码文件中file4、file5两个子文件进行了修改,将删除对应的列舍去,即可获得所述增量子文件列表,所述增量子文件列表中包括4个增量子文件:
A:file1、file2;
M:file4、file5;
该可选的实施例中,根据所述代码合并请求中每个新代码文件对所述增量检查信号中对应的分支按照所述目标分支的方法可获取每一个分支对应的增量子文件列表。
如此,能够获取目标分支对应的增量子文件列表,为后续增量检查提供数据基础。
S12,基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对,所述增量子文件对与所述增量子文件一一对应。
在一个可选的实施例中,所述基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对包括:
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的原始代码文件以获取第一子文件集合;
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的新代码文件以获取增量子文件集合;
匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对。
在一个可选的实施例中,依据所述增量子文件列表中增量子文件的名称,依据智能搜索从所述目标分支的原始代码文件中查询所述名称对应的子文件,将能够查询到的子文件作为第一子文件集合;依据所述增量子文件的名称按照相同的方法从所述临时分支的新代码文件中提取相应子文件以构成增量子文件集合,所述增量子文件集合的子文件与增量子文件列表中的子文件一一对应。其中,所述智能搜索是结合了人工智能技术的新一代搜索引擎,该引擎可以提供快速检索、信息过滤和推送等功能。
示例性的,设所述增量子文件列表:
A:file1、file2;
M:file4、file5;
则所述第一子文件集合为:{file4(1)、file5(1)},所述增量子文件集合为:{file1(2)、file2(2)、file4(2)、file5(2)},所述增量子文件集合中的子文件与所述增量子文件列表中的子文件一一对应。
该可选的实施例中,所述匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对包括:
选择增量子文件集合中任意一个增量子文件作为目标子文件;
基于所述目标子文件与所述第一子文件集合中的所有子文件进行匹配得到匹配结果,所述匹配结果包括匹配成功和匹配失败;
若匹配成功,则将所述目标子文件与存在匹配关系的子文件作为一组增量子文件对;
若匹配失败,则将生成一个空文件与所述目标子文件作为一组增量子文件对;
遍历所述增量子文件集合中所有增量子文件得到所述目标分支的增量子文件对。
该可选的实施例中,以所述第一子文件集合为:{file4(1)、file5(1)},所述增量子文件集合为:{file1(2)、file2(2)、file4(2)、file5(2)}为例进行说明。从所述增量子文件集合中随机挑选一个增量子文件file1(2)作为目标子文件,其中file1为所述增量子文件的名称,(2)表示该子文件位于增量子文件集合中;进一步以名称file1为模板匹配所述第一子文件集合中的所有子文件,若所述第一子文件集合中存在相同名称的子文件,则匹配成功,将所述目标子文件与所述第一子文件集合中相同名称的子文件构成匹配关系,将上述两个文件作为一组增量子文件对,若所述第一子文件集合中不存在相同名称的子文件,则匹配失败,自动生成一个空白文件与所述目标子文件构成一组增量子文件对;则可以获得一组增量子文件对:#-file1(2),其中,#为自动生成的空白文件。
该可选的实施例中,遍历增量子文件集合中所有的增量子文件完成增量子文件对的构建,则共获取4个增量子文件对:#-file1(2)、#-file2(2)、file4(1)-file4(2)、file5(1)-file5(2),所述增量子文件对与所述增量文件列表中的增量子文件数一一对应。
如此,能够获取每一个增量子文件对应的增量子文件对,为后续增量检查提供数据。
S13,基于所述目标分支的ID信息创建目标分支的检查项目。
在一个可选的实施例中,在静态代码质量扫描工具中出创建一个检查项目,以“项目名称_目标分支ID”作为唯一标识为所述检查项目命名,为每一个目标分支创建独立的检查项目,确保不同分支之间扫描检查的相互独立,本实施例中选用的所述静态代码质量扫描工具为Sonarqube。其中,Sonarqube是一款在持续集成中使用广泛的静态代码质量扫描工具,可以将代码中的常见bug、代码规范问题等进行自动扫描、发现和展示,及早发现代码中的问题,从而提高代码质量。
如此,能够为每一个目标分支创建单独的检查项目,确保各分支的增量检查互不影响,进而实现各分支之间的相互独立。
S14,基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果。
在一个可选的实施例中,所述基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果包括:
依据代码类型对所述增量子文件对的子文件进行预处理,所述代码类型包括编译型语言和非编译型语言;
将预处理后的子文件送入检查项目获取每一组增量子文件对中两个子文件的检查结果;
计算同一组增量子文件对中两个子文件检查结果差值的绝对值得到代码增量值;
统计每一组增量子文件对的代码增量值以作为增量检查结果。
该可选的实施例中,依据预设的编译型语言集合判断所述增量子文件对中子文件的代码类型,所述代码类型包括编译型语言和非编译型语言;若子文件使用的开发代码在所述编译型语言集合中,则判定代码类型为编译型语言,对所述增量子文件对中子文件进行编译,将编译后的子文件送入所述目标分支的检查项目,输出每一个子文件的检查结果;若子文件使用的开发代码不在所述编译型语言集合中,则判定代码类型为非编译型语言,则直接将所述增量子文件对中子文件送入所述目标分支的检查项目,输出每一个子文件的检查结果,所述检查结果包括每一个子文件中的Bug数量。其中,所述编译型语言是指在执行代码之前需要代码编译成为机器语言的编程语言,所述预设的编译型语言集合为{C、C++}。
该可选的实施例中,获得所有子文件的检查结果,进一步将同一组增量子文件对两个子文件的检查结果相减得到差值,并对所述差值取绝对值得到当前增量子文件对的代码增量值,统计所有增量子文件对的代码增量值作为所述增量检查结果,所述增量检查结果为一个序列,序列内的每一个代码增量值与增量子文件对一一对应,而增量子文件对又与增量子文件一一对应,故所述增量检查结果可以反应目标分支i中每一个增量子文件新增的Bug数量。
如此,可以获得目标分支的增量检查结果,增量检查仅对增量子文件进行扫描检查,减少扫描文件的数量,可以快速的得到增量子文件中代码问题的变化情况,提高代码质量检查的效率。
S15,基于所述增量检查结果修改所述新代码文件以获取正确的代码文件。
在一个可选的实施例中,所述基于所述增量检查结果修改新代码文件以获取正确代码文件包括:
基于所述增量检查结果提取增量子文件列表中的错误子文件集合;
开发人员对错误子文件集合的子文件进行修改得到修改子文件集合;
将修改子文件集合作为所述新代码文件,并重复执行所述增量检查过程获取最新增量检查结果,直至最新增量检查结果对应的错误子文件集合的子文件数量为零时,得到所述正确代码文件。
在一个可选的实施例中,所述基于所述增量检查结果提取增量子文件列表中的错误子文件集合包括:
获取每一组增量子文件对的代码增量值;
若所述代码增量值为0,则表示对应增量子文件对中的增量子文件中不存在新增代码问题,所述增量子文件为正确子文件;
若所述代码增量值不为0,则表示对应增量子文件对中的增量子文件中存在新增代码问题,所述增量子文件为错误子文件;
储存所有的错误子文件以获取错误子文件集合。
该可选的实施例中,所述增量检查结果包括每一组增量子文件对的代码增量值,判断所述代码增量值是否为0,储存所述代码增量值不为0的增量子文件对中的增量子文件以获取错误子文件集合。
该可选的实施例中,开发人员仅需要对所述错误子文件集合中的子文件进行修改即可,将修改后的文件作为所述新代码文件,并重复执行所述增量检查过程获取最新增量检查结果,直至最新增量检查结果对应的错误子文件集合的子文件数量为零时,表示新代码文件中所有子文件新增的Bug均为0,此时临时分支上的新代码文件即为所述正确代码文件。
如此,根据所述增量检查结果有选择的读取增量文件列表中的文件内容,对不存在新增质量问题代码文件不进行读取,提高代码质量检查的效率。
请参见图3,图3是本申请基于人工智能的多分支增量检查装置的较佳实施例的功能模块图。基于人工智能的多分支增量检查装置11包括响应单元110、对比单元111、匹配单元112、创建单元113、检查单元114、修改单元115。本申请所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机可读指令段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。
在一个可选的实施例中,响应单元110用于当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息。
在一个可选的实施例中,在项目开发的过程中,会将项目相关的所有代码文件储存在代码仓库中,所述代码仓库中存在多个分支,每一个分支储存着相应的代码文件,所述代码仓库中分支的数量与项目任务相关,为了区分不同的分支,所述代码仓库为每一个分支分配一个ID信息,所述ID信息可以是数字,还可以是字母或者符号,本方案不做限定。
该可选的实施例中,开发人员依据项目开发需求可借助项目管理软件从所述代码仓库中选择待开发分支,并将所述待开发分支中的原始代码文件复制到自己本地电脑上以形成临时分支,同时将该待开发分支的ID一并提取给该临时分支以方便后续合并代码时快速定位新代码文件对应的目标分支,开发人员可以在临时分支上对所述原始代码文件进行开发以获取新代码文件,开发任务完成后,再借助所述项目管理软件将所述新代码文件上传至代码仓库中,将所述临时分支上的新代码文件与所述待开发分支上的原始代码文件进行代码合并,从而完成开发任务,所述开发任务的流程图如图2所示。其中,所述项目管理软件可以为Gitlab,所述Gitlab是一个开源应用程序,可以实现一个自托管的Git项目代码仓库,可通过Web界面进行访问公开的或者私人项目,能够浏览源代码,管理缺陷和注释。
该可选的实施例中,在所述代码仓库中,相同时间点会有多个待开发分支进行代码合并的操作,每一个待开发分支均对应各自的原始代码文件和新代码文件,所述原始代码文件储存在待开发分支中,所述新代码文件储存在待开发分支对应的临时分支上。
当开发人员提交新代码文件时,在所述新代码文件与对应分支的原始代码文件进行代码合并之前,会触发预先配置好的钩子函数,所述钩子函数的输出结果即为所述增量检查信号,所述增量检查信号包括同一时间节点代码仓库中参与代码合并的所有分支的ID信息。
在一个可选的实施例中,对比单元111用于从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件。
在一个可选的实施例中,当接受到所述代码合并请求后,需要根据所述代码合并请求对所述增量检查信号包括的所有分支进行检查,检索出与所述代码合并请求中的新代码文件对应的ID信息一致的分支作为目标分支。需要说明的是,由于不同分支之间的操作是相互独立的,所述代码合并请求中包括至少一个需合并的新代码文件,该实施例从中挑选一个ID信息对应的分支作为目标分支,其他分支的所有操作均与所述目标分支相同。
该可选的实施例中,所述对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表包括:
依据所述目标分支的ID信息提取目标分支的原始代码文件和新代码文件;
对比所述目标分支的原始代码文件和新代码文件中的子文件得到变更子文件列表,所述变更子文件列表包括新增文件、删除文件和修改文件三种变更状态;
基于所述变更状态筛选所述变更子文件列表得到所述增量子文件列表。
该可选的实施例中,所述原始代码文件为开发人员开发前目标分支上储存的代码文件,所述原始代码文件和新代码文件均包含多个子文件。
该可选的实施例中,利用git diff函数对比所述原始代码文件和新代码文件中的子文件以获取变更子文件列表,所述变更子文件列表包括变更状态和对应的子文件名称,所述变更状态包括新增、删除、修改三种,分别用字符A、D、M代表对应状态,进一步将所述变更子文件列表中删除状态所对应的列舍去以获得增量子文件列表,所述增量子文件列表中包括多个增量子文件。其中,所述git diff函数可以比较代码仓库中不同分支、不同区域以及不同提交记录的代码文本之间差异。
示例性的,将所述目标分支的ID信息记为i,将所述目标分支i对应的临时分支记为i*,所述临时分支i*上的新代码文件与所述目标分支i上的原始代码文件进行对比,通过执行如下命令:
“git diff--name-status i i*”
即可以自动获取所述变更子文件列表:
A:file1、file2;
D:file3;
M:file4、file5;
从上述变更子文件列表可以知道,在所述新代码文件中新增了file1、file2两个子文件,删除了所述原始代码文件中一个子文件file3,并对所述原始代码文件中file4、file5两个子文件进行了修改,将删除对应的列舍去,即可获得所述增量子文件列表,所述增量子文件列表中包括4个增量子文件:
A:file1、file2;
M:file4、file5;
该可选的实施例中,根据所述代码合并请求中每个新代码文件对所述增量检查信号中对应的分支按照所述目标分支的方法可获取每一个分支对应的增量子文件列表。
在一个可选的实施例中,匹配单元112用于基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对,所述增量子文件对与所述增量子文件一一对应。
在一个可选的实施例中,所述基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对包括:
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的原始代码文件以获取第一子文件集合;
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的新代码文件以获取增量子文件集合;
匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对。
在一个可选的实施例中,依据所述增量子文件列表中增量子文件的名称,依据智能搜索从所述目标分支的原始代码文件中查询所述名称对应的子文件,将能够查询到的子文件作为第一子文件集合;依据所述增量子文件的名称按照相同的方法从所述临时分支的新代码文件中提取相应子文件以构成增量子文件集合,所述增量子文件集合的子文件与增量子文件列表中的子文件一一对应。其中,所述智能搜索是结合了人工智能技术的新一代搜索引擎,该引擎可以提供快速检索、信息过滤和推送等功能。
示例性的,设所述增量子文件列表:
A:file1、file2;
M:file4、file5;
则所述第一子文件集合为:{file4(1)、file5(1)},所述增量子文件集合为:{file1(2)、file2(2)、file4(2)、file5(2)},所述增量子文件集合中的子文件与所述增量子文件列表中的子文件一一对应。
该可选的实施例中,所述匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对包括:
选择增量子文件集合中任意一个增量子文件作为目标子文件;
基于所述目标子文件与所述第一子文件集合中的所有子文件进行匹配得到匹配结果,所述匹配结果包括匹配成功和匹配失败;
若匹配成功,则将所述目标子文件与存在匹配关系的子文件作为一组增量子文件对;
若匹配失败,则将生成一个空文件与所述目标子文件作为一组增量子文件对;
遍历所述增量子文件集合中所有增量子文件得到所述目标分支的增量子文件对。
该可选的实施例中,以所述第一子文件集合为:{file4(1)、file5(1)},所述增量子文件集为:{file1(2)、file2(2)、file4(2)、file5(2)}为例进行说明。从所述增量子文件集中随机挑选一个增量子文件file1(2)作为目标子文件,其中file1为所述增量子文件的名称,(2)表示该子文件位于增量子文件集合中;进一步以名称file1为模板匹配所述第一子文件集合中的所有子文件,若所述第一子文件集合中存在相同名称的子文件,则匹配成功,将所述目标子文件与所述第一子文件集合中相同名称的子文件构成匹配关系,将上述两个文件作为一组增量子文件对,若所述第一子文件集合中不存在相同名称的子文件,则匹配失败,自动生成一个空白文件与所述目标子文件构成一组增量子文件对;则可以获得一组增量子文件对:#-file1(2),其中,#为自动生成的空白文件。
该可选的实施例中,遍历增量子文件集合中所有的增量子文件完成增量子文件对的构建,则共获取4个增量子文件对:#-file1(2)、#-file2(2)、file4(1)-file4(2)、file5(1)-file5(2),所述增量子文件对与所述增量文件列表中的增量子文件数一一对应。
在一个可选的实施例中,创建单元113用于基于所述目标分支的ID信息创建目标分支的检查项目。
在一个可选的实施例中,在静态代码质量扫描工具中出创建一个检查项目,以“项目名称_目标分支ID”作为唯一标识为所述检查项目命名,为每一个目标分支创建独立的检查项目,确保不同分支之间扫描检查的相互独立,本实施例中选用的所述静态代码质量扫描工具为Sonarqube。其中,Sonarqube是一款在持续集成中使用广泛的静态代码质量扫描工具,可以将代码中的常见bug、代码规范问题等进行自动扫描、发现和展示,及早发现代码中的问题,从而提高代码质量。
在一个可选的实施例中,检查单元114用于基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果。
在一个可选的实施例中,所述基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果包括:
依据代码类型对所述增量子文件对的子文件进行预处理,所述代码类型包括编译型语言和非编译型语言;
将预处理后的子文件送入检查项目获取每一组增量子文件对中两个子文件的检查结果;
计算同一组增量子文件对中两个子文件检查结果差值的绝对值得到代码增量值;
统计每一组增量子文件对的代码增量值以作为增量检查结果。
该可选的实施例中,依据预设的编译型语言集合判断所述增量子文件对中子文件的代码类型,所述代码类型包括编译型语言和非编译型语言;若子文件使用的开发代码在所述编译型语言集合中,则判定代码类型为编译型语言,对所述增量子文件对中子文件进行编译,将编译后的子文件送入所述目标分支的检查项目,输出每一个子文件的检查结果;若子文件使用的开发代码不在所述编译型语言集合中,则判定代码类型为非编译型语言,则直接将所述增量子文件对中子文件送入所述目标分支的检查项目,输出每一个子文件的检查结果,所述检查结果包括每一个子文件中的Bug数量。其中,所述编译型语言是指在执行代码之前需要代码编译成为机器语言的编程语言,所述预设的编译型语言集合为{C、C++}。
该可选的实施例中,获得所有子文件的检查结果,进一步将同一组增量子文件对两个子文件的检查结果相减得到差值,并对所述差值取绝对值得到当前增量子文件对的代码增量值,统计所有增量子文件对的代码增量值作为所述增量检查结果,所述增量检查结果为一个序列,序列内的每一个代码增量值与增量子文件对一一对应,而增量子文件对又与增量子文件一一对应,故所述增量检查结果可以反应目标分支i中每一个增量子文件新增的Bug数量。
在一个可选的实施例中,修改单元115基于所述增量检查结果修改所述新代码文件以获取正确的代码文件。
在一个可选的实施例中,所述基于所述增量检查结果修改新代码文件以获取正确代码文件包括:
基于所述增量检查结果提取增量子文件列表中的错误子文件集合;
开发人员对错误子文件集合的子文件进行修改得到修改子文件集合;
将修改子文件集合作为所述新代码文件,并重复执行所述增量检查过程获取最新增量检查结果,直至最新增量检查结果对应的错误子文件集合的子文件数量为零时,得到所述正确代码文件。
在一个可选的实施例中,所述基于所述增量检查结果提取增量子文件列表中的错误子文件集合包括:
获取每一组增量子文件对的代码增量值;
若所述代码增量值为0,则表示对应增量子文件对中的增量子文件中不存在新增代码问题,所述增量子文件为正确子文件;
若所述代码增量值不为0,则表示对应增量子文件对中的增量子文件中存在新增代码问题,所述增量子文件为错误子文件;
储存所有的错误子文件以获取错误子文件集合。
该可选的实施例中,所述增量检查结果包括每一组增量子文件对的代码增量值,判断所述代码增量值是否为0,储存所述代码增量值不为0的增量子文件对中的增量子文件以获取错误子文件集合。
该可选的实施例中,开发人员仅需要对所述错误子文件集合中的子文件进行修改即可,将修改后的文件作为所述新代码文件,并重复执行所述增量检查过程获取最新增量检查结果,直至最新增量检查结果对应的错误子文件集合的子文件数量为零时,表示新代码文件中所有子文件新增的Bug均为0,此时临时分支上的新代码文件即为所述正确代码文件。
由以上技术方案可以看出,本申请将开发人员提交的新代码文件与对应分支的原始代码文件进行对比以获取增量子文件,然后利用质量扫描工具仅对每一个分支的增量子文件进行检查以完成代码检查,降低了检查文件的数量,在保证各分支检查结果相互独立的同时大大提高代码检查的速度。
请参见图4,是本申请实施例提供的一种电子设备的结构示意图。电子设备1包括存储器12和处理器13。存储器12用于存储计算机可读指令,处理器13用执行所述储器中存储的计算机可读指令以实现上述任一实施例所述的基于人工智能的多分支增量检查方法。
在一个可选的实施例中,电子设备1还包括总线、存储在所述存储器12中并可在所述处理器13上运行的计算机程序,例如基于人工智能的多分支增量检查程序。
图4仅示出了具有存储器12和处理器13的电子设备1,本领域技术人员可以理解的是,图4示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
结合图1,电子设备1中的所述存储器12存储多个计算机可读指令以实现一种基于人工智能的多分支增量检查方法,所述处理器13可执行所述多个指令从而实现:
当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息;
从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件;
基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对,所述增量子文件对与所述增量子文件一一对应;
基于所述目标分支的ID信息创建目标分支的检查项目;
基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果;
基于所述增量检查结果修改所述新代码文件以获取正确的代码文件。
具体地,所述处理器13对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,电子设备1可以是总线型结构,也可以是星形结构,电子设备1还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置,例如电子设备1还可以包括输入输出设备、网络接入设备等。
需要说明的是,电子设备1仅为举例,其他现有的或今后可能出现的电子产品如可适应于本申请,也应包含在本申请的保护范围以内,并以引用方式包含于此。
其中,存储器12至少包括一种类型的可读存储介质,所述可读存储介质可以是非易失性的,也可以是易失性的。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器12在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器12在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。存储器12不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于人工智能的多分支增量检查程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器13在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器13是电子设备1的控制核心(Control Unit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器12内的程序或者模块(例如执行基于人工智能的多分支增量检查程序等),以及调用存储在所述存储器12内的数据,以执行电子设备1的各种功能和处理数据。
所述处理器13执行所述电子设备1的操作系统以及安装的各类应用程序。所述处理器13执行所述应用程序以实现上述各个基于人工智能的多分支增量检查方法实施例中的步骤,例如图1所示的步骤。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器12中,并由所述处理器13执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在电子设备1中的执行过程。例如,所述计算机程序可以被分割成响应单元110、对比单元111、匹配单元112、创建单元113、检查单元114、修改单元115。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、计算机设备,或者网络设备等)或处理器(processor)执行本申请各个实施例所述的基于人工智能的多分支增量检查方法的部分。
电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指示相关的硬件设备来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存储器及其他存储器等。
进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,在图4中仅用一根箭头表示,但并不表示仅有一根总线或一种类型的总线。所述总线被设置为实现所述存储器12以及至少一个处理器13等之间的连接通信。
本申请实施例还提供一种计算机可读存储介质(图未示),计算机可读存储介质中存储有计算机可读指令,计算机可读指令被电子设备中的处理器执行以实现上述任一实施例所述的基于人工智能的多分支增量检查方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。说明书陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (10)
1.一种基于人工智能的多分支增量检查方法,其特征在于,所述方法包括:
当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息;
从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件;
基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对,所述增量子文件对与所述增量子文件一一对应;
基于所述目标分支的ID信息创建目标分支的检查项目;
基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果;
基于所述增量检查结果修改所述新代码文件以获取正确的代码文件。
2.如权利要求1所述的基于人工智能的多分支增量检查方法,其特征在于,所述对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表包括:
依据所述目标分支的ID信息提取目标分支的原始代码文件和新代码文件;
对比所述目标分支的原始代码文件和新代码文件中的子文件得到变更子文件列表,所述变更子文件列表包括新增文件、删除文件和修改文件三种变更状态;
基于所述变更状态筛选所述变更子文件列表得到所述增量子文件列表。
3.如权利要求1所述的基于人工智能的多分支增量检查方法,其特征在于,所述基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对包括:
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的原始代码文件以获取第一子文件集合;
基于所述增量子文件列表中增量子文件的名称筛选所述目标分支的新代码文件以获取增量子文件集合;
匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对。
4.如权利要求3所述的基于人工智能的多分支增量检查方法,其特征在于,所述匹配所述第一子文件集合和增量子文件集合获取所述目标分支的增量子文件对包括:
选择增量子文件集合中任意一个增量子文件作为目标子文件;
基于所述目标子文件与所述第一子文件集合中的所有子文件进行匹配得到匹配结果,所述匹配结果包括匹配成功和匹配失败;
若匹配成功,则将所述目标子文件与存在匹配关系的子文件作为一组增量子文件对;
若匹配失败,则将生成一个空文件与所述目标子文件作为一组增量子文件对;
遍历所述增量子文件集合中所有增量子文件得到所述目标分支的增量子文件对。
5.如权利要求1所述的基于人工智能的多分支增量检查方法,其特征在于,所述基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果包括:
依据代码类型对所述增量子文件对中的子文件进行预处理,所述代码类型包括编译型语言和非编译型语言;
将预处理后的子文件送入检查项目获取每一组增量子文件对中两个子文件的检查结果;
计算同一组增量子文件对中两个子文件检查结果差值的绝对值得到代码增量值;
统计每一组增量子文件对的代码增量值以作为增量检查结果。
6.如权利要求1所述的基于人工智能的多分支增量检查方法,其特征在于,所述基于所述增量检查结果修改所述新代码文件以获取正确代码文件包括:
基于所述增量检查结果提取增量子文件列表中的错误子文件集合;
开发人员对错误子文件集合的子文件进行修改得到修改子文件集合;
将修改子文件集合作为所述新代码文件,并重复执行所述增量检查过程获取最新增量检查结果,直至最新增量检查结果对应的错误子文件集合的子文件数量为零时,得到所述正确代码文件。
7.如权利要求6所述的基于人工智能的多分支增量检查方法,其特征在于,所述基于所述增量检查结果提取增量子文件列表中的错误子文件集合包括:
获取每一组增量子文件对的代码增量值;
若所述代码增量值为0,则表示对应增量子文件对中的增量子文件中不存在新增代码问题,所述增量子文件为正确子文件;
若所述代码增量值不为0,则表示对应增量子文件对中的增量子文件中存在新增代码问题,所述增量子文件为错误子文件;
储存所有的错误子文件以获取错误子文件集合。
8.一种基于人工智能的多分支增量检查装置,其特征在于,所述装置包括:
响应单元,用于当提交的新代码文件请求与代码仓库的分支代码文件进行合并时,响应代码合并请求以获取增量检查信号,所述增量检查信号包括代码仓库中参与代码合并的分支对应的ID信息,所述代码合并请求包括新代码文件对应分支的ID信息;
对比单元,用于从增量检查信号中选取与所述代码合并请求中相同的ID信息,将该ID信息对应的分支作为目标分支,并对比所述目标分支的原始代码文件和新代码文件得到增量子文件列表,所述目标分支的原始代码文件和新代码文件包括多个子文件;
匹配单元,用于基于所述增量子文件列表中增量子文件的名称匹配所述目标分支的原始代码文件和新代码文件以构建目标分支的增量子文件对;
创建单元,用于基于所述目标分支的ID信息创建目标分支的检查项目;
检查单元,用于基于目标分支的检查项目对目标分支的增量子文件对进行增量检查得到增量检查结果;
修改单元,基于所述增量检查结果修改所述新代码文件以获取正确代码文件。
9.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储有计算机可读指令;及
处理器,执行所述存储器中存储的计算机可读指令以实现如权利要求1至7中任意一项所述的基于人工智能的多分支增量检查方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的基于人工智能的多分支增量检查方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210594779.9A CN114924978A (zh) | 2022-05-27 | 2022-05-27 | 基于人工智能的多分支增量检查方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210594779.9A CN114924978A (zh) | 2022-05-27 | 2022-05-27 | 基于人工智能的多分支增量检查方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114924978A true CN114924978A (zh) | 2022-08-19 |
Family
ID=82810706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210594779.9A Pending CN114924978A (zh) | 2022-05-27 | 2022-05-27 | 基于人工智能的多分支增量检查方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114924978A (zh) |
-
2022
- 2022-05-27 CN CN202210594779.9A patent/CN114924978A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6182245B1 (en) | Software test case client/server system and method | |
CN110162429B (zh) | 系统修复方法、服务器及存储介质 | |
CN111694612A (zh) | 配置检查方法、装置、计算机系统及存储介质 | |
CN115237444A (zh) | 基于版本号的并发控制方法、装置、设备及存储介质 | |
CN114661423A (zh) | 集群配置检测方法、装置、计算机设备及存储介质 | |
CN110196952B (zh) | 程序代码的搜索处理方法、装置、设备及存储介质 | |
CN111680483A (zh) | 单证模板更新方法、装置、电子设备及介质 | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
CN111782336A (zh) | 混合云的云迁移方法及装置、计算机可存储介质 | |
CN114924978A (zh) | 基于人工智能的多分支增量检查方法及相关设备 | |
CN114637636A (zh) | 基于人工智能的ui界面校验方法、装置、设备及介质 | |
CN112686759A (zh) | 对账监测方法、装置、设备及介质 | |
CN114385167A (zh) | 前端页面生成方法、装置、设备及介质 | |
CN112181485A (zh) | 脚本执行方法、装置、电子设备及存储介质 | |
CN116324726A (zh) | 加速的非易失性存储器设备检查和取证 | |
CN111857883A (zh) | 页面数据校验方法、装置、电子设备及存储介质 | |
CN113434359B (zh) | 数据溯源系统构建方法、装置、电子设备及可读存储介质 | |
CN116414699B (zh) | 运营运维测试方法、装置、设备及介质 | |
CN114237754B (zh) | 一种数据加载方法、装置、电子设备以及存储介质 | |
CN117573564B (zh) | 一种基于gitlab代码提交日志自动识别差异的方法 | |
CN114879949A (zh) | 基于人工智能的原生调用辅助方法及相关设备 | |
CN114924977A (zh) | 基于人工智能的单元测试方法及相关设备 | |
CN114968415A (zh) | 配置文件修改方法、装置、设备及存储介质 | |
CN114217821A (zh) | 多服务器代码灰度发布方法、装置、电子设备及存储介质 | |
CN115994094A (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 |