发明内容
本申请的主要目的为提供一种代码评审方法、装置、设备及介质,旨在解决目前人工评审代码易出现漏评漏改、没有及时通知相关人员评估修改影响、没有针对代码的改动点进行及时回归验证,导致上线时增加了生产问题出现的风险。
为了实现上述发明目的,本申请提出一种代码评审方法,所述方法包括:
获取代码评审请求,所述代码评审请求中携带有待评审信息,所述待评审信息包括待评审代码和目标校验机制;
获取评审规则集,所述评审规则集是采用机器学习从代码评审记录目标训练集合中学习得到的规则数据;
采用所述目标校验机制将所述待评审信息在所述评审规则集中进行匹配,得到评审关联匹配结果,所述评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果;
当所述代码移交关联性匹配结果为失败,将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端,获取所述匹配端发送的代码移交关联性匹配核实结果,当所述代码移交关联性匹配核实结果为无误时确定所述代码移交关联性匹配结果为成功,否则根据所述代码移交关联性匹配核实结果更新所述代码评审记录目标训练集合;
当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,将所述待评审信息发送给所述匹配端,获取所述匹配端发送的评审配置数据,根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果;
当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
进一步的,所述获取评审规则集的步骤之前,还包括:
获取所述代码评审记录目标训练集合,所述代码评审记录目标训练集合包括多个历史代码评审记录,所述历史代码评审记录包括:历史评审语音数据、历史评审文本数据;
将所述历史评审语音数据输入语音识别模型进行语音识别,得到语音转文本数据;
分别根据每个所述历史代码评审记录的所述历史评审文本数据和所述语音转文本数据,得到多个待学习文本数据;
采用机器学习的规则学习从所述多个待学习文本数据中进行关联关系学习,得到所述评审规则集。
进一步的,所述采用机器学习的规则学习从所述多个待学习文本数据中进行关联关系学习,得到所述评审规则集的步骤,包括:
将所述多个待学习文本数据划分为目标训练集和目标验证集;
从所述目标训练集中进行关联关系学习,得到待剪枝的规则集;
对所述待剪枝的规则集进行随机剪枝,得到多个候选规则集;
采用所述目标验证集对所述多个候选规则集进行评估,得到最优规则集;
将所述最优规则集作为所述待剪枝的规则集,重复执行所述对所述待剪枝的规则集进行随机剪枝,得到多个候选规则集的步骤直至无法继续提高所述目标验证集的性能;
将无法继续提高所述目标验证集的性能时的所述待剪枝的规则集作为所述评审规则集。
进一步的,所述从所述目标训练集中进行关联关系学习,得到待剪枝的规则集的步骤,包括:
从所述目标训练集中学习规则,得到待组合规则;
将所述待组合规则对应的所述待学习文本数据从所述目标训练集中删除,得到更新后的训练集;
将所述更新后的训练集作为所述目标训练集,重复执行所述从所述目标训练集中学习规则,得到待组合规则的步骤直至所述目标训练集中没有数据;
根据所有所述待组合规则,确定所述待剪枝的规则集。
进一步的,所述根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果的步骤,包括:
根据所述评审配置数据,确定第一功能模块与测试用例关联关系;
根据所述第一功能模块与测试用例关联关系获取测试用例,得到第一目标测试用例集合;
采用所述第一目标测试用例集合对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
进一步的,所述根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果的步骤,包括:
根据所述代码改动匹配结果和所述代码移交关联性匹配结果,确定第二功能模块与测试用例关联关系;
根据所述第二功能模块与测试用例关联关系获取测试用例,得到第二目标测试用例集合;
采用所述第二目标测试用例集合对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
进一步的,所述根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果的步骤之后,包括:
根据所述待评审信息和所述评审配置数据更新所述代码评审记录目标训练集合。
本申请还提出了一种代码评审装置,所述装置包括:
请求获取模块,用于获取代码评审请求,所述代码评审请求中携带有待评审信息,所述待评审信息包括待评审代码和目标校验机制;
评审关联匹配结果确定模块,用于获取评审规则集,所述评审规则集是采用机器学习从代码评审记录目标训练集合中学习得到的规则数据,采用所述目标校验机制将所述待评审信息在所述评审规则集中进行匹配,得到评审关联匹配结果,所述评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果;
代码移交关联性失败处理模块,用于当所述代码移交关联性匹配结果为失败,将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端,获取所述匹配端发送的代码移交关联性匹配核实结果,当所述代码移交关联性匹配核实结果为无误时确定所述代码移交关联性匹配结果为成功,否则根据所述代码移交关联性匹配核实结果更新所述代码评审记录目标训练集合;
代码改动失败及代码移交关联性成功处理模块,用于当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,将所述待评审信息发送给所述匹配端,获取所述匹配端发送的评审配置数据,根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果;
代码改动及代码移交关联性成功处理模块,用于当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
本申请还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请的代码评审方法、装置、设备及介质,通过将采用机器学习从代码评审记录目标训练集合中学习得到的规则数据作为评审规则集,采用目标校验机制将待评审信息在评审规则集中进行匹配,得到评审关联匹配结果,评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果,根据评审关联匹配结果实现自动化获取匹配端反馈的数据、对待评审代码进行自动化测试,从而实现了自动化进行代码评审,不需每次都组织人工评审,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了解决目前人工评审代码易出现漏评漏改、没有及时通知相关人员评估修改影响、没有针对代码的改动点进行及时回归验证,导致上线时增加了生产问题出现的风险,本申请提出了一种代码评审方法,所述方法应用于人工智能技术领域。所述代码评审方法通过将采用机器学习从历史评审记录中学习得到的规则数据作为评审规则集,将待评审信息在评审规则集中进行匹配,根据匹配结果实现自动化获取匹配端反馈的数据、对待评审代码进行自动化测试,从而实现了自动化进行代码评审,不需每次都组织人工评审,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
参照图1,本申请实施例中提供一种代码评审方法,所述方法包括:
S1:获取代码评审请求,所述代码评审请求中携带有待评审信息,所述待评审信息包括待评审代码和目标校验机制;
S2:获取评审规则集,所述评审规则集是采用机器学习从代码评审记录目标训练集合中学习得到的规则数据;
S3:采用所述目标校验机制将所述待评审信息在所述评审规则集中进行匹配,得到评审关联匹配结果,所述评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果;
S4:当所述代码移交关联性匹配结果为失败,将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端,获取所述匹配端发送的代码移交关联性匹配核实结果,当所述代码移交关联性匹配核实结果为无误时确定所述代码移交关联性匹配结果为成功,否则根据所述代码移交关联性匹配核实结果更新所述代码评审记录目标训练集合;
S5:当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,将所述待评审信息发送给所述匹配端,获取所述匹配端发送的评审配置数据,根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果;
S6:当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
本实施例通过将采用机器学习从代码评审记录目标训练集合中学习得到的规则数据作为评审规则集,采用目标校验机制将待评审信息在评审规则集中进行匹配,得到评审关联匹配结果,评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果,根据评审关联匹配结果实现自动化获取匹配端反馈的数据、对待评审代码进行自动化测试,从而实现了自动化进行代码评审,不需每次都组织人工评审,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
对于S1,获取用户发送的代码评审请求。
代码评审请求,是指对待评审代码进行审核和测试的请求。
待评审信息包括:评审列表、代码基本信息、待评审代码和目标校验机制。
代码基本信息,是对待评审代码相关信息的描述。代码基本信息包括但不限于:业务需求、用户故事、需求卡片、开发任务。
评审列表包括:开发人员信息、评审人员信息。开发人员将待评审代码验证后提交到代码管理服务器,并且在提交待评审代码时确定评审人员信息,得到评审列表。
业务需求,可以拆分成一个或多个用户故事。业务需求通常来自项目投资人、购买产品的用户、实际用户的管理者、市场营销部门、产品策划部门,业务需求描述了组织为什么要开发一个软件,即组织希望达到的目标、使用前景、范围文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求。
用户故事,可以拆分成一个或多个需求卡片。在敏捷开发中,用户故事(userstories)是一种轻量级,更灵活的替代品指定软件需求的传统方法-软件需求规范,用例规格等。
需求卡片,可以全部拆分成一个或多个需求卡片,也可以全部拆分成一个或多个开发任务,还可以拆分成至少一个需求卡片和至少一个开发任务。需求卡片,是一种很实用的需求采集工具,一张需求卡片相当于需求列表中的一行。需求卡片包括但不限于:需求来源、需求应用场景、需求提出原因、验收标准、需求重要性权重、需求生命特征、需求关联信息、参考材料、竞争者对比信息。
开发任务,是代码开发的任务,开发任务包括但不限于:任务内容、任务验收标准、开发执行人员、开发审核人员、任务日期描述数据。
待评审代码可以是开发人员对原始代码修改得到的代码,也可以是开发人员根据需求卡片开发的全新代码。
目标校验机制,是匹配评审规则集的校验关系。目标校验机制包括但不限于:代码模块校验关系、开发人员校验关系、业务需求校验关系、测试案例校验关系、关联关系校验关系。校验关系包括但不限于:全部匹配、任一匹配。
对于S2,从数据库中获取评审规则集。
评审规则集中包括多条评审规则关联数据。评审规则关联数据,是指业务需求、用户故事、功能模块代码、问题数据、测试用例和评审人员信息之间的关联关系的规则数据。比如,评审规则关联数据包括:功能模块代码A1、A4、A10与用户故事G、测试用例T1、T2、T5、T15关联,在此举例不做具体限定。
代码评审记录目标训练集合包括多个历史代码评审记录。历史代码评审记录,是根据历史的代码评审的过程数据得到的数据。
对于S3,将所述待评审信息在所述评审规则集中进行匹配,匹配时将所述目标校验机制作为约束条件,当匹配到评审规则关联数据时确定所述评审关联匹配结果为成功,否则确定所述评审关联匹配结果为失败。
代码移交关联性匹配结果,是指提交的功能模块代码与用户故事的匹配结果。待评审信息的功能模块代码与用户故事的关联关系符合目标校验机制和评审规则集的要求时,确定代码移交关联性匹配结果为成功,否则确定代码移交关联性匹配结果为失败。比如,所述待评审信息中功能模块代码编号是A1、A2、A3和用户故事S2,目标校验机制是全部匹配,当所述评审规则集中用户故事S1对应的功能模块代码编号是A1、A2、A3时,此时待评审信息的功能模块代码与用户故事的关联关系不符合目标校验机制和评审规则集的要求,意味着待评审信息中功能模块代码和用户故事关联关系异常,确定代码移交关联性匹配结果为失败,在此举例不做具体限定。
代码改动匹配结果,是指开发人员信息与功能模块代码关联关系的匹配结果。待评审信息中开发人员信息与功能模块代码的关联关系符合目标校验机制和评审规则集的要求时确定代码改动匹配结果为成功,否则确定代码改动匹配结果为失败。比如,所述目标校验机制的关联关系校验关系为功能模块代码A1与开发人员K1,所述评审规则集中功能模块代码编号是A1且开发人员是K1,当所述待评审信息中功能模块代码编号是A1且开发人员是K1,此时待评审信息的功能模块代码与用户故事的关联关系符合目标校验机制和评审规则集的要求,意味着开发人员信息与功能模块代码关联关系成功匹配,确定所述代码改动匹配结果为成功,在此举例不做具体限定。
可以理解的是,所述评审关联匹配结果还可以有其他匹配结果,比如,功能模块测试用例匹配结果,在此不做具体限定。
功能模块测试用例匹配结果,是指测试用例与功能模块代码关联关系的匹配结果。待评审信息中测试用例与功能模块代码关联关系符合目标校验机制和评审规则集的要求时确定功能模块测试用例匹配结果为成功,否则确定功能模块测试用例匹配结果为失败。
对于S4,当所述代码移交关联性匹配结果为失败,意味着代码移交混乱,此时需要将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端进行人工核实和匹配;人工根据所述待评审信息和所述代码移交关联性匹配结果进行核实,当核实所述代码移交关联性匹配结果为无误时确定所述代码移交关联性匹配核实结果为无误,否则确定所述代码移交关联性匹配核实结果为错误;核实完成通过匹配端发送代码移交关联性匹配核实结果。
当所述代码移交关联性匹配核实结果为无误时,将所述代码移交关联性匹配结果更新为成功。当所述代码移交关联性匹配核实结果为错误时,将所述代码移交关联性匹配核实结果的人工关联匹配数据更新到所述代码评审记录目标训练集合,以用于丰富所述代码评审记录目标训练集合,从而实现了所述代码评审记录目标训练集合的持续更新,为评审规则集的持续更新提供了数据基础。
代码移交关联性匹配核实结果包括:核实结果、人工关联匹配数据,当核实结果为无误时人工关联匹配数据无数据,当核实结果为错误时人工关联匹配数据有数据。
对于S5,当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,意味着开发人员信息与功能模块代码的匹配失败,此时需要将所述待评审信息发送给匹配端进行人工匹配。人工根据所述待评审信息进行匹配得到评审配置数据,通过匹配端发送评审配置数据。根据所述评审配置数据确定测试用例集合,采用确定的测试用例集合对所述待评审代码进行自动化测试,根据自动化测试结果作为得到目标代码评审结果。
评审配置数据包括但不限于:功能模块与测试用例关联关系。
对于S6,当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,意味着待评审信息的功能模块代码与用户故事的关联关系时符合目标校验机制和评审规则集要求,以及待评审信息中开发人员信息与功能模块代码的关联关系为符合目标校验机制和评审规则集要求,此时根据所述代码改动匹配结果和所述代码移交关联性匹配结果可以获取正确的测试用例集合,将获取的正确的测试用例集合对所述待评审代码进行自动化测试,根据自动化测试结果得到所述目标代码评审结果。
在一个实施例中,上述获取评审规则集的步骤之前,还包括:
S21:获取所述代码评审记录目标训练集合,所述代码评审记录目标训练集合包括多个历史代码评审记录,所述历史代码评审记录包括:历史评审语音数据、历史评审文本数据;
S22:将所述历史评审语音数据输入语音识别模型进行语音识别,得到语音转文本数据;
S23:分别根据每个所述历史代码评审记录的所述历史评审文本数据和所述语音转文本数据,得到多个待学习文本数据;
S24:采用机器学习的规则学习从所述多个待学习文本数据中进行关联关系学习,得到所述评审规则集。
本实施例实现了先将历史评审语音数据的语音数据转换为文本数据,然后再结合历史评审文本数据生成待学习文本数据,从而丰富了待学习文本数据的数据内容,有利于提高机器学习的准确性,有利于提高评审规则集的准确性。
对于S21,从数据库中获取所述代码评审记录目标训练集合。
历史评审语音数据,是历史的代码评审过程的语音数据。
历史评审文本数据,是历史的代码评审过程的文本数据。历史评审文本数据包括但不限于:代码改动路径、代码修改的人员信息、代码修改内容、代码修改次数、代码修改涉及到的测试案例。
对于S22,将所述历史评审语音数据输入语音识别模型进行语音识别转换成文本数据,将转换得到的文本数据作为语音转文本数据。可以理解的是,每个所述历史评审语音数据进行独立转换。
语音识别模型,是基于神经网络训练得到的模型。
对于S23,将同一个所述历史代码评审记录的所述历史评审文本数据和所述语音转文本数据组合成一个文本数据,将组合得到的文本数据作为待学习文本数据。也就是说,所述历史代码评审记录与待学习文本数据一一对应。
对于S24,采用机器学习的规则学习从所述多个待学习文本数据中进行关联关系学习以用于总结出规则数据,根据总结出的规则数据确定所述评审规则集。
在一个实施例中,上述采用机器学习的规则学习从所述多个待学习文本数据中进行关联关系学习,得到所述评审规则集的步骤,包括:
S241:将所述多个待学习文本数据划分为目标训练集和目标验证集;
S242:从所述目标训练集中进行关联关系学习,得到待剪枝的规则集;
S243:对所述待剪枝的规则集进行随机剪枝,得到多个候选规则集;
S244:采用所述目标验证集对所述多个候选规则集进行评估,得到最优规则集;
S245:将所述最优规则集作为所述待剪枝的规则集,重复执行所述对所述待剪枝的规则集进行随机剪枝,得到多个候选规则集的步骤直至无法继续提高所述目标验证集的性能;
S246:将无法继续提高所述目标验证集的性能时的所述待剪枝的规则集作为所述评审规则集。
本实施例通过先进行关联关系学习得到待剪枝的规则集,然后再进行剪枝,从而在尽可能学习规则数据之后通过剪枝避免过拟合带来的风险,从而提高了通过机器学习得到评审规则集的效率,也提高了评审规则集的准确性。
对于S241,将所述多个待学习文本数据按时间划分为目标训练集和目标验证集,目标训练集的待学习文本数据和目标验证集中的待学习文本数据不重复。比如,将所述多个待学习文本数据中三个月以前的待学习文本数据放入集合作为目标训练集,将所述多个待学习文本数据中最后三个月的待学习文本数据放入集合作为目标验证集,在此举例不做具体限定。
对于S242,采用序贯覆盖法对所述目标训练集中所述待学习文本数据中进行关联关系学习以总结出规则数据,将总结出规则数据作为待剪枝的规则集。可以理解的是,还可以采用其它方法对所述目标训练集中的所述待学习文本数据中进行关联关系学习以总结出规则数据,在此不做具体限定。
对于S243,对所述待剪枝的规则集中的规则数据进行随机剪枝,将每次剪枝后剩余的所述待剪枝的规则集作为候选规则集。也就是说,对所述待剪枝的规则集进行的是多次随机剪枝,每次剪枝得到一个候选规则集。
随机剪枝实现穷举所有可能的剪枝操作。
剪枝操作包括但不限于:删除所述待剪枝的规则集中每条规则数据中某个文字、删除所述待剪枝的规则集的规则数据的结尾文字、删除所述待剪枝的规则集的规则数据的尾部多个文字、删除所述待剪枝的规则集的某条规则数据。
对于S244,采用所述目标验证集对所述多个候选规则集进行评估,保留最好的候选规则集,将最好的候选规则集作为最优规则集。
采用所述目标验证集对所述多个候选规则集进行评估可以从现有的后剪枝技术中选择,在此不做赘述。
对于S245,将所述最优规则集作为所述待剪枝的规则集,重复执行步骤S243至步骤S245,直至无法继续提高所述目标验证集的性能。
对于S246,无法继续提高所述目标验证集的性能时的所述待剪枝的规则集是已经去掉了过拟合后的规则集,将无法继续提高所述目标验证集的性能时的所述待剪枝的规则集作为所述评审规则集可以避免过拟合带来的风险。
在一个实施例中,上述从所述目标训练集中进行关联关系学习,得到待剪枝的规则集的步骤,包括:
S2421:从所述目标训练集中学习规则,得到待组合规则;
S2422:将所述待组合规则对应的所述待学习文本数据从所述目标训练集中删除,得到更新后的训练集;
S2423:将所述更新后的训练集作为所述目标训练集,重复执行所述从所述目标训练集中学习规则,得到待组合规则的步骤直至所述目标训练集中没有数据;
S2424:根据所有所述待组合规则,确定所述待剪枝的规则集。
本实施例实现了采用序贯覆盖法从所述目标训练集中进行关联关系学习以总结出规则数据,从而使总结出的规则数据能覆盖尽可能多的所述目标训练集中的待学习文本数据。
对于S2421,从所述目标训练集中的部分待学习文本数据中学习规则数据,将学习的规则数据作为待组合规则。也就是说,每次学习一条待组合规则。
对于S2422,将学习待组合规则采用的所有待学习文本数据从所述目标训练集中删除,将删除完成后的所述目标训练集作为更新后的训练集。
对于S2423,将所述更新后的训练集作为所述目标训练集,重复执行步骤SS2421至步骤S2423直至所述目标训练集中没有数据。
对于S2424,将所有所述待组合规则放入集合,得到所述待剪枝的规则集。
在一个实施例中,上述根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果的步骤,包括:
S51:根据所述评审配置数据,确定第一功能模块与测试用例关联关系;
S52:根据所述第一功能模块与测试用例关联关系获取测试用例,得到第一目标测试用例集合;
S53:采用所述第一目标测试用例集合对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
本实施例实现了根据匹配端发送的评审配置数据进行自动化测试,从而实现了在评审过程异常时,通过部分人工介入可以快速自动推动整个评审流程,提高了评审效率,提高了评审的准确性。
对于S51,从所述评审配置数据中提取出功能模块与测试用例关联关系,将提取得到的功能模块与测试用例关联关系作为第一功能模块与测试用例关联关系。
对于S52,根据所述第一功能模块与测试用例关联关系,从测试用例库中获取测试用例,将获取的测试用例放入一个集合,将该集合作为第一目标测试用例集合。
对于S53,采用所述第一目标测试用例集合中的每个测试用例对所述待评审代码进行自动化测试,得到每个测试用例的测试结果,将所有测试用例的测试结果进行组合,得到所述目标代码评审结果。
将所有测试用例的测试结果进行组合,包括但不限于:放入同一个文档中。
在一个实施例中,上述根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果的步骤,包括:
S61:根据所述代码改动匹配结果和所述代码移交关联性匹配结果,确定第二功能模块与测试用例关联关系;
S62:根据所述第二功能模块与测试用例关联关系获取测试用例,得到第二目标测试用例集合;
S63:采用所述第二目标测试用例集合对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
本实施例实现了根据自动匹配的所述代码改动匹配结果和所述代码移交关联性匹配结果进行自动化测试,从而实现了自动化推动整个评审流程,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
对于S61,所述代码改动匹配结果和所述代码移交关联性匹配结果从所述评审规则集中提取出功能模块与测试用例关联关系,将提取得到的功能模块与测试用例关联关系作为第二功能模块与测试用例关联关系。
对于S62,根据所述第二功能模块与测试用例关联关系,从测试用例库中获取测试用例,将获取的测试用例放入一个集合,将该集合作为第二目标测试用例集合。
对于S63,采用所述第二目标测试用例集合中的每个测试用例对所述待评审代码进行自动化测试,得到每个测试用例的测试结果,将所有测试用例的测试结果进行组合,得到所述目标代码评审结果。
在一个实施例中,上述根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果的步骤之后,包括:根据所述待评审信息和所述评审配置数据更新所述代码评审记录目标训练集合。
将所述待评审信息和所述评审配置数据放到一个文件中,将该文件作为一个历史代码评审记录,将得到的历史代码评审记录添加到所述代码评审记录目标训练集合中。
本实施例实现了在评审过程异常时,通过部分人工介入可以快速自动推动整个评审流程后,在评审结束后将代码评审过程的相关数据更新到所述代码评审记录目标训练集合中,从而实现了所述代码评审记录目标训练集合的持续更新,为评审规则集的持续更新提供了数据基础。
参照图3,本申请还提出了一种代码评审装置,所述装置包括:
请求获取模块100,用于获取代码评审请求,所述代码评审请求中携带有待评审信息,所述待评审信息包括待评审代码和目标校验机制;
评审关联匹配结果确定模块200,用于获取评审规则集,所述评审规则集是采用机器学习从代码评审记录目标训练集合中学习得到的规则数据,采用所述目标校验机制将所述待评审信息在所述评审规则集中进行匹配,得到评审关联匹配结果,所述评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果;
代码移交关联性失败处理模块300,用于当所述代码移交关联性匹配结果为失败,将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端,获取所述匹配端发送的代码移交关联性匹配核实结果,当所述代码移交关联性匹配核实结果为无误时确定所述代码移交关联性匹配结果为成功,否则根据所述代码移交关联性匹配核实结果更新所述代码评审记录目标训练集合;
代码改动失败及代码移交关联性成功处理模块400,用于当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,将所述待评审信息发送给所述匹配端,获取所述匹配端发送的评审配置数据,根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果;
代码改动及代码移交关联性成功处理模块500,用于当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
本实施例通过将采用机器学习从代码评审记录目标训练集合中学习得到的规则数据作为评审规则集,采用目标校验机制将待评审信息在评审规则集中进行匹配,得到评审关联匹配结果,评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果,根据评审关联匹配结果实现自动化获取匹配端反馈的数据、对待评审代码进行自动化测试,从而实现了自动化进行代码评审,不需每次都组织人工评审,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存代码评审方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码评审方法。所述代码评审方法,包括:获取代码评审请求,所述代码评审请求中携带有待评审信息,所述待评审信息包括待评审代码和目标校验机制;获取评审规则集,所述评审规则集是采用机器学习从代码评审记录目标训练集合中学习得到的规则数据;采用所述目标校验机制将所述待评审信息在所述评审规则集中进行匹配,得到评审关联匹配结果,所述评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果;当所述代码移交关联性匹配结果为失败,将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端,获取所述匹配端发送的代码移交关联性匹配核实结果,当所述代码移交关联性匹配核实结果为无误时确定所述代码移交关联性匹配结果为成功,否则根据所述代码移交关联性匹配核实结果更新所述代码评审记录目标训练集合;当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,将所述待评审信息发送给所述匹配端,获取所述匹配端发送的评审配置数据,根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果;当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
本实施例通过将采用机器学习从代码评审记录目标训练集合中学习得到的规则数据作为评审规则集,采用目标校验机制将待评审信息在评审规则集中进行匹配,得到评审关联匹配结果,评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果,根据评审关联匹配结果实现自动化获取匹配端反馈的数据、对待评审代码进行自动化测试,从而实现了自动化进行代码评审,不需每次都组织人工评审,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种代码评审方法,包括步骤:获取代码评审请求,所述代码评审请求中携带有待评审信息,所述待评审信息包括待评审代码和目标校验机制;获取评审规则集,所述评审规则集是采用机器学习从代码评审记录目标训练集合中学习得到的规则数据;采用所述目标校验机制将所述待评审信息在所述评审规则集中进行匹配,得到评审关联匹配结果,所述评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果;当所述代码移交关联性匹配结果为失败,将所述待评审信息和所述代码移交关联性匹配结果发送给匹配端,获取所述匹配端发送的代码移交关联性匹配核实结果,当所述代码移交关联性匹配核实结果为无误时确定所述代码移交关联性匹配结果为成功,否则根据所述代码移交关联性匹配核实结果更新所述代码评审记录目标训练集合;当所述代码改动匹配结果为失败和所述代码移交关联性匹配结果为成功时,将所述待评审信息发送给所述匹配端,获取所述匹配端发送的评审配置数据,根据所述评审配置数据对所述待评审代码进行自动化测试,得到目标代码评审结果;当所述代码改动匹配结果和所述代码移交关联性匹配结果均为成功时,根据所述代码改动匹配结果和所述代码移交关联性匹配结果对所述待评审代码进行自动化测试,得到所述目标代码评审结果。
上述执行的代码评审方法,通过将采用机器学习从代码评审记录目标训练集合中学习得到的规则数据作为评审规则集,采用目标校验机制将待评审信息在评审规则集中进行匹配,得到评审关联匹配结果,评审关联匹配结果包括:代码移交关联性匹配结果、代码改动匹配结果,根据评审关联匹配结果实现自动化获取匹配端反馈的数据、对待评审代码进行自动化测试,从而实现了自动化进行代码评审,不需每次都组织人工评审,减少了人工评审的次数,避免了人工评审导致生产问题出现的风险,提高了评审效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。