CN110297656B - 基于配置模型评审代码的方法、装置及计算机设备 - Google Patents
基于配置模型评审代码的方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN110297656B CN110297656B CN201910435059.6A CN201910435059A CN110297656B CN 110297656 B CN110297656 B CN 110297656B CN 201910435059 A CN201910435059 A CN 201910435059A CN 110297656 B CN110297656 B CN 110297656B
- Authority
- CN
- China
- Prior art keywords
- defect
- code file
- specified
- specified code
- configuration model
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000012552 review Methods 0.000 claims abstract description 134
- 238000011161 development Methods 0.000 claims abstract description 66
- 230000007547 defect Effects 0.000 claims description 383
- 238000012549 training Methods 0.000 claims description 49
- 230000006870 function Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 39
- 238000011156 evaluation Methods 0.000 claims description 27
- 238000012986 modification Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013528 artificial neural network Methods 0.000 claims description 7
- 238000002372 labelling Methods 0.000 claims description 7
- 238000012216 screening Methods 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 14
- 230000004048 modification Effects 0.000 description 13
- 238000012550 audit Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000011895 specific detection Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered 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/70—Software maintenance or management
Abstract
本申请揭示了基于配置模型评审代码的方法、装置及计算机设备,其中基于配置模型评审代码的方法,包括:接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件;识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。本申请通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。
Description
技术领域
本申请涉及到计算机领域,特别是涉及到基于配置模型评审代码的方法、装置及计算机设备。
背景技术
目前真正在做codereview的技术团队并不多,主要原因是耗时,影响范围大,没有固定的责任人,事后无跟踪,而有些做codereview的技术开发团队,由于每个人技术经验不一致,水平不一致,理解不一致,对于同样的code有不同的见解,标准不一样,同时在做codereview的过程中,会遇到各种其他紧急事务插队,造成codereview滞后或者取消。整体来说,codereview进行的难度比较大。但一个产品系统需要多个开发用户参与编写代码,现有产品系统开发团队的各开发用户相互之间若没有codereview,完成代码编写就提交到代码库,然后经过简单测试就上线发布,会导致开发出的产品系统经常会出问题,调试bug的过程中,更加耗时耗力。
发明内容
本申请的主要目的为提供一种基于配置模型评审代码的方法,旨在解决现有产品系统的维护或调试过程中进行codereview难度大且耗时耗力的技术问题。
本申请提出一种基于配置模型评审代码的方法,包括:
接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件;
识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;
根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;
通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。
优选地,所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,所述通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤,包括:
通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题;
若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配;
若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果。
优选地,各所述缺陷问题分别对应的缺陷等级通过等级分数进行表示,所述等级分数与所述缺陷等级成正比例关系,所述根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:
根据各所述缺陷问题分别对应的缺陷等级,确定各所述缺陷问题分别对应的等级分数;
将各所述缺陷问题分别对应的缺陷等级的等级分数,与各所述缺陷等级分别对应的权重相乘得到各乘积,并将各所述乘积进行加和得到所述指定代码文件的评审分数;
判断所述评审分数是否超过预设阈值;
若超过预设阈值,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
优选地,各所述缺陷问题分别对应的缺陷等级与各处理建议表存在对应关系,所述根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:
判断各所述缺陷问题分别对应的缺陷等级是否存在于第一处理建议表,其中所述第一处理建议表对应的处理建议为拒绝提交;
若存在,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
优选地,所述判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配的步骤之后,包括:
若各所述缺陷问题未分别与所述第一配置模型中的缺陷等级相匹配,则筛选出与所述第一配置模型中的缺陷等级不相匹配的第一缺陷问题;
将所述第一缺陷问题发送至给管理者的指定终端;
判断是否接收到所述指定终端反馈的提交意见;
若是,则根据所述提交意见输出所述指定代码文件的第二评审结果,其中所述第二评审结果包括提交或修改后提交。
优选地,所述识别所述指定代码文件对应的文件信息的步骤,包括:
启动Git函数以调取与所述Git函数内的指定钩子函数;
通过所述钩子函数对所述指定代码文件进行全局文件扫描,以获取所述指定代码文件对应的所述文件信息。
优选地,所述接收开发用户端提交的指定代码文件的步骤之前,包括:
获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文件携带所述第一缺陷的标注信息;
将所述第一代码文本注入训练样本库中形成训练样本;
将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练;
获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量;
将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
本申请还提供了一种基于配置模型评审代码的装置,包括:
接收模块,用于接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件;
识别模块,用于识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;
调用模块,用于根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;
扫描模块,用于通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。
本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本申请通过配置模型扫描指定代码文件,以判断指定代码文件是否存在对应的缺陷问题,若存在并通过配置模型辨别出指定代码文件对应的缺陷问题类型,并根据缺陷问题以及缺陷问题类型形成评审结果。若判断指定代码文件不存在对应的缺陷问题,则输出评审通过的评审结果,通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。本申请的配置模型不仅能辨别出各缺陷问题,还可根据预设的缺陷等级对各缺陷问题进行等级划分,以便根据等级划分评价对应的开发用户,或通过等级划分对该代码文件给出合适的处理建议。本申请通过为不同缺陷等级配置不同的处理建议,以进一步提高代码审核流程的自动化程度,当判断缺陷等级达到预设条件时,可直接拒绝本次提交;将缺陷问题严重、审核不通过的代码文件直接退返至相关的开发用户,并携带相应的评审结果及修改建议;将无缺陷问题的代码文件直接提交代码库,提高codereview的效率。
附图说明
图1本申请一实施例的基于配置模型评审代码的方法流程示意图;
图2本申请一实施例的基于配置模型评审代码的装置结构示意图;
图3本申请一实施例的计算机设备内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例的基于配置模型评审代码的方法,包括:
S1:接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件。
本实施例用于管理各开发用户开发的代码文件,以提高代码文件的质量,减少上线发布后的缺陷问题,管理代码文件的管理平台与各开发用户端通过账号实现关联,通过识别账号区分各开发用户端,进而区分各开发用户。
S2:识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言。
由于编写代码文件的编辑语言类型有多种,同一编辑语言对应的编辑语法也有多种,本实施例根据编辑语言区分需要审核的代码文件,不同编辑语言对应不同的审核方法,以便更精准地匹配审核方法,提高审核有效性以及审核结果的精准度。本实施例通过识别待审核代码文件的后缀区分代码文件的编辑语言,或通过识别待审核代码文件的起始内容区分代码文件的编辑语言,亦或通过识别待审核代码文件对应的运行命令行携带的编辑语言参数区分代码文件的编辑语言。
S3:根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型。
本实施例通过配置模型对待审核代码文件进行过滤,以便实现智能高效的codereview,提高codereview的效率。
本实施例通过针对不同编辑语言匹配不同的配置模型,实现智能高效的codereview的适用面。本实施例的配置模型根据不同编辑语言特性进行匹配,提高匹配性,提高智能高效的codereview的有效性,上述不同编辑语言特性包括特有缺点、特有的使用习惯和开发者常出现的失误点等。
S4:通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。
本实施例通过配置模型扫描指定代码文件,以判断指定代码文件是否存在对应的缺陷问题,若存在并通过配置模型辨别出指定代码文件对应的缺陷问题类型,并根据缺陷问题以及缺陷问题类型形成评审结果。若判断指定代码文件不存在对应的缺陷问题,则输出评审通过的评审结果。本实施例通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。
进一步地,所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,所述通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤S4,包括:
S41:通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题。
本实施例的配置模型中包括各种检测规则,比如编写顺序规则、单词完整性规则、语法规则等,以便根据上述具体的检测规则辨别缺陷问题以及缺陷问题类型,比如包括:编写顺序错误缺陷问题、单词不完整缺陷问题、不符合语法规则的缺陷问题、命名不是帕斯卡命名规则的命名规则缺陷问题、变量不是驼峰命名规则的变量缺陷问题、代码格式未遵守checkStyle模板规则的格式缺陷问题、存在不建议使用的框架类的形式缺陷问题,等等。
S42:若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配。
本实施例的配置模型不仅能辨别出各缺陷问题,还可根据预设的缺陷等级对各缺陷问题进行等级划分,不同缺陷问题对应不同等级,以便根据等级划分评价对应的开发用户,或通过等级划分对该代码文件给出合适的处理建议。
S43:若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果。
本实施例的预设规则包括将各所述缺陷问题分别对应的缺陷等级以详细列表的形式存储在第一评审结果中,或将各所述缺陷问题分别对应的缺陷等级以对应评分的形式显示在第一评审结果中等等,通过对缺陷问题进行细化分析,以便第一评审结果更具有技术指导意义。
进一步地,各所述缺陷问题分别对应的缺陷等级通过等级分数进行表示,所述等级分数与所述缺陷等级成正比例关系,所述根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤S43,包括:
S431:根据各所述缺陷问题分别对应的缺陷等级,确定各所述缺陷问题分别对应的等级分数。
本实施例根据等级分数简明地标识各缺陷问题的严重程度,等级分数越高缺陷等级越高,对应的缺陷问题越严重。
S432:将各所述缺陷问题分别对应的缺陷等级的等级分数,与各所述缺陷等级的等级分数相乘得到各乘积,并将各所述乘积进行加和得到所述指定代码文件的评审分数。
本实施例通过综合考虑各缺陷问题的总评分,以便评审更全面,更具有参考价值。本实施例对不同缺陷等级在总评分的权重不同,比如缺陷等级高的对应的权重高,以便在综合考虑各缺陷问题的前提下,区分关注侧重点,以便评审分数更贴近实际操作需要。上述缺陷等级的等级分数以及缺陷等级的等级分数可根据不同的业务需要进行预设置,或根据管理平台的管理者的关注度进行预设置。
S433:判断所述评审分数是否超过预设阈值。
S434:若超过预设阈值,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
本实施例根据评审分数设定一定的递交权限,当缺陷问题对应的评审分数高于一定值,则说明缺陷问题较多或缺陷问题交严重,则直接拒绝递交到管来平台,并通知相应的开发用户。本实施例的管理平台为代码库,所有完成的代码文件均需递交到代码库,以便等待测试。
进一步地,各所述缺陷问题分别对应的缺陷等级与各处理建议表存在对应关系,所述根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤S43,包括:
S435:判断各所述缺陷问题分别对应的缺陷等级是否存在于第一处理建议表,其中所述第一处理建议表对应的处理建议为拒绝提交。
S436:若存在,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
本实施例通过为不同缺陷等级配置不同的处理建议,以进一步提高代码审核流程的自动化程度,当判断缺陷等级达到预设条件时,可直接拒绝本次提交;将缺陷问题严重、审核不通过的代码文件直接退返至相关的开发用户,并携带相应的评审结果及修改建议;将无缺陷问题的代码文件直接提交代码库,提高codereview的效率。
进一步地,所述判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配的步骤S42之后,包括:
S44:若各所述缺陷问题未分别与所述第一配置模型中的缺陷等级相匹配,则筛选出与所述第一配置模型中的缺陷等级不相匹配的第一缺陷问题。
本实施例的第一缺陷问题包括不影响代码文件内容的形式问题,在配置模型中未有相应的缺陷等级,需要未有相应的缺陷等级的缺陷问题反馈至管理员,以便确保提交后的代码文件为合规文件,上述不影响代码文件内容的形式问题包括代码文件注释较多造成阅读难度高等。
S45:将所述第一缺陷问题发送至给管理者的指定终端。
本实施例的管理者为管理平台的负责人,当提交到管理平台的代码文件无法通过配置模型实现自动递交或自动退回时,会选择发送至管理者对应的终端设备,等待接收管理者的操作指令,以便根据管理者的操作指令完善codereview的自动化过程。
S46:判断是否接收到所述指定终端反馈的提交意见。
S47:若是,则根据所述提交意见输出所述指定代码文件的第二评审结果,其中所述第二评审结果包括提交或修改后提交。
本实施例的管理平台在接收到管理者发送的提交意见后,会继续完成将对应的代码文件自动提交至代码库。本实施例的提交意见包括直接提交或修改后提交,若为直接提交则启动提交流程,若为修改后提交,则退回至对应的开发用户并携带修改建议。上述修改建议通过识别到的缺陷类型,调用该缺陷类型对应的标准规则,将标准规则与当前代码文件的缺陷进行比较,确定出差异信息,并将差异信息预置于预设的修改建议模板中,以形成修改建议。比如,当前识别到缺陷为JAVA语言的编辑语法,则通过调用JAVA语言的标准编辑语法规则,通过比较锁定当前代码文件与标准编辑语法规则之间存在的具体差异信息,并将差异信息摘取出来,放置于修改建议模板中,以形成跟对JAVA语言的编辑语法缺陷的修改建议。本实施例中管理者给出的为提交意见之外的其他意见,比如退回意见,则直接通过管理者对应的终端直接退回至开发用户,以缩短处理流程,提高效率。
进一步地,所述识别所述指定代码文件对应的文件信息的步骤S2,包括:
S21:启动Git函数以调取与所述Git函数内的指定钩子函数。
本实施例通过Git函数调用codereview流程,当监测到有代码文件申请提交,则会启动Git函数,进而通过Git函数启动整个codereview流程。本实施例的Git函数内存在多个钩子函数,以便对进入codereview流程的代码文件进行预处理。上述Git函数指的是Git工具安装在本地操作系统中的命令行,通过命令行操作Git的内置函数。钩子函数指的是Git在操作的过程中,会触发钩子函数内置的codereview流程,codereview流程会通知给对应的监听器,监听器触发钩子函数中的钩子,将codereview流程中的对应的代码程序,通过系统调用并挂入系统运行。
S22:通过所述钩子函数对所述指定代码文件进行全局文件扫描,以获取所述指定代码文件对应的所述文件信息。
本实施例先通过指定钩子函数对整个提交版本的指定代码文件做全局文件扫描,以获得指定代码文件的文件信息,进而识别指定代码文件的编程语言类型等。本申请其他实施例若已存在编程语言类型的映射关系,即无需通过指定钩子函数进行全局扫描即可获得指定代码文件的编辑语言类型,比如通过识别编辑语言类型对应的参数设定等方式直接获得指定代码文件的编程语言类型,以便根据确定的编辑语言类型选择codereview流程中的配置模型。
进一步地,所述通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤S4之后,包括:
S5:获取所述第一配置模型在第一指定时间段内生成的新评审数据。
本实施例以指定编辑语言类型对应的第一配置模型的更新升级为例进行详细说明,其他编辑语言类型对应的配置模型的升级过程相类似,不一一赘述。本实施例的第一指定时间段为配置模型自主升级的频率时间段,比如设定每个一个月升级一次,则第一指定时间段为一个月。本实施例的新评审数据会存储于管理平台的指定内存区域,当判断达到预设的自主升级时刻,则自动从指定内存区域,启动第一配置模型自主升级的机器学习模型进行升级训练。
S6:根据新训练集对所述第一配置模型对应的机器学习模型,进行更新训练,以获取更新后的新第一配置模型,其中所述新训练集通过将所述新评审数据合并入历史评审数据中形成,所述历史评审数据包括所述第一指定时间段之前的所有评审数据,所述评审数据包括根据所述第一编辑语言按照不同语法编辑而成的第一编辑语言代码文本,以及各所述第一编辑语言代码文本分别对应的指定评审结果。
本实施例通过每隔指定时间段对配置模型进行升级训练,以对配置模型进行升级、修复,提高识别准确率。本实施例通过将指定时间段内的新评审数据加入原训练样本中,以不断扩充训练集,提高配置模型的机器学习能力。
进一步地,所述接收开发用户端提交的指定代码文件的步骤S1之前,包括:
S11:获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文件携带所述第一缺陷的标注信息。
S12:将所述第一代码文本注入训练样本库中形成训练样本。
S13:将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练。
S14:获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量。
S15:将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
本实施例中,通过将各缺陷问题对应的特征通过神经网络模型进行抽象提取,形成能对应映射各缺陷问题的规则,并将各缺陷问题的规则按照编辑语言的不同,分类汇集成对应的配置模型,以便将同一编辑语言对应的各缺陷问题的规则分解为同一个配置模型,以便在使用中,通过依次输入,实现多种缺陷问题的集中评价,提高效率。
本实施例通过配置模型扫描指定代码文件,以判断指定代码文件是否存在对应的缺陷问题,若存在并通过配置模型辨别出指定代码文件对应的缺陷问题类型,并根据缺陷问题以及缺陷问题类型形成评审结果。若判断指定代码文件不存在对应的缺陷问题,则输出评审通过的评审结果,通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。本实施例的配置模型不仅能辨别出各缺陷问题,还可根据预设的缺陷等级对各缺陷问题进行等级划分,以便根据等级划分评价对应的开发用户,或通过等级划分对该代码文件给出合适的处理建议。本实施例通过为不同缺陷等级配置不同的处理建议,以进一步提高代码审核流程的自动化程度,当判断缺陷等级达到预设条件时,可直接拒绝本次提交;将缺陷问题严重、审核不通过的代码文件直接退返至相关的开发用户,并携带相应的评审结果及修改建议;将无缺陷问题的代码文件直接提交代码库,提高codereview的效率。
参照图2,本申请一实施例的基于配置模型评审代码的装置,包括:
接收模块1,用于接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件。
本实施例用于管理各开发用户开发的代码文件,以提高代码文件的质量,减少上线发布后的缺陷问题,管理代码文件的管理平台与各开发用户端通过账号实现关联,通过识别账号区分各开发用户端,进而区分各开发用户。
识别模块2,用于识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言。
由于编写代码文件的编辑语言类型有多种,同一编辑语言对应的编辑语法也有多种,本实施例根据编辑语言区分需要审核的代码文件,不同编辑语言对应不同的审核方法,以便更精准地匹配审核方法,提高审核有效性以及审核结果的精准度。本实施例通过识别待审核代码文件的后缀区分代码文件的编辑语言,或通过识别待审核代码文件的起始内容区分代码文件的编辑语言,亦或通过识别待审核代码文件对应的运行命令行携带的编辑语言参数区分代码文件的编辑语言。
调用模块3,用于根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型。
本实施例通过配置模型对待审核代码文件进行过滤,以便实现智能高效的codereview,提高codereview的效率。
本实施例通过针对不同编辑语言匹配不同的配置模型,实现智能高效的codereview的适用面。本实施例的配置模型根据不同编辑语言特性进行匹配,提高匹配性,提高智能高效的codereview的有效性,上述不同编辑语言特性包括特有缺点、特有的使用习惯和开发者常出现的失误点等。
扫描模块4,用于通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。
本实施例通过配置模型扫描指定代码文件,以判断指定代码文件是否存在对应的缺陷问题,若存在并通过配置模型辨别出指定代码文件对应的缺陷问题类型,并根据缺陷问题以及缺陷问题类型形成评审结果。若判断指定代码文件不存在对应的缺陷问题,则输出评审通过的评审结果。本实施例通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。
进一步地,所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,所述扫描模块4,包括:
扫描单元,用于通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题。
本实施例的配置模型中包括各种检测规则,比如编写顺序规则、单词完整性规则、语法规则等,以便根据上述具体的检测规则辨别缺陷问题以及缺陷问题类型。
第一判断单元,用于若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配。
本实施例的配置模型不仅能辨别出各缺陷问题,还可根据预设的缺陷等级对各缺陷问题进行等级划分,不同缺陷问题对应不同等级,以便根据等级划分评价对应的开发用户,或通过等级划分对该代码文件给出合适的处理建议。
第一输出单元,用于若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果。
本实施例的预设规则包括将各所述缺陷问题分别对应的缺陷等级以详细列表的形式存储在第一评审结果中,或将各所述缺陷问题分别对应的缺陷等级以对应评分的形式显示在第一评审结果中等等,通过对缺陷问题进行细化分析,以便第一评审结果更具有技术指导意义。
进一步地,各所述缺陷问题分别对应的缺陷等级通过等级分数进行表示,所述等级分数与所述缺陷等级成正比例关系,所述第一输出单元,包括:
确定子单元,用于根据各所述缺陷问题分别对应的缺陷等级,确定各所述缺陷问题分别对应的等级分数。
本实施例根据等级分数简明地标识各缺陷问题的严重程度,等级分数越高缺陷等级越高,对应的缺陷问题越严重。
计算子单元,用于将各所述缺陷问题分别对应的缺陷等级的等级分数,与各所述缺陷等级的等级分数相乘得到各乘积,并将各所述乘积进行加和得到所述指定代码文件的评审分数。
本实施例通过综合考虑各缺陷问题的总评分,以便评审更全面,更具有参考价值。本实施例对不同缺陷等级在总评分的权重不同,比如缺陷等级高的对应的权重高,以便在综合考虑各缺陷问题的前提下,区分关注侧重点,以便评审分数更贴近实际操作需要。上述缺陷等级的等级分数以及缺陷等级的等级分数可根据不同的业务需要进行预设置,或根据管理平台的管理者的关注度进行预设置。
第一判断子单元,用于判断所述评审分数是否超过预设阈值。
第一输出子单元,用于若超过预设阈值,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
本实施例根据评审分数设定一定的递交权限,当缺陷问题对应的评审分数高于一定值,则说明缺陷问题较多或缺陷问题交严重,则直接拒绝递交到管来平台,并通知相应的开发用户。本实施例的管理平台为代码库,所有完成的代码文件均需递交到代码库,以便等待测试。
进一步地,各所述缺陷问题分别对应的缺陷等级与各处理建议表存在对应关系,所述输出单元,包括:
第二判断子单元,用于判断各所述缺陷问题分别对应的缺陷等级是否存在于第一处理建议表,其中所述第一处理建议表对应的处理建议为拒绝提交。
第一输出子单元,用于若各所述缺陷问题分别对应的缺陷等级存在于第一处理建议表,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
本实施例通过为不同缺陷等级配置不同的处理建议,以进一步提高代码审核流程的自动化程度,当判断缺陷等级达到预设条件时,可直接拒绝本次提交;将缺陷问题严重、审核不通过的代码文件直接退返至相关的开发用户,并携带相应的评审结果及修改建议;将无缺陷问题的代码文件直接提交代码库,提高codereview的效率。
进一步地,所述扫描模块4,包括:
筛选单元,用于若各所述缺陷问题未分别与所述第一配置模型中的缺陷等级相匹配,则筛选出与所述第一配置模型中的缺陷等级不相匹配的第一缺陷问题。
本实施例的第一缺陷问题包括不影响代码文件内容的形式问题,在配置模型中未有相应的缺陷等级,需要未有相应的缺陷等级的缺陷问题反馈至管理员,以便确保提交后的代码文件为合规文件,上述不影响代码文件内容的形式问题包括代码文件注释较多造成阅读难度高等。
发送单元,用于将所述第一缺陷问题发送至给管理者的指定终端。
本实施例的管理者为管理平台的负责人,当提交到管理平台的代码文件无法通过配置模型实现自动递交或自动退回时,会选择发送至管理者对应的终端设备,等待接收管理者的操作指令,以便根据管理者的操作指令完善codereview的自动化过程。
第二判断单元,用于判断是否接收到所述指定终端反馈的提交意见。
第二输出单元,用于若接收到所述指定终端反馈的提交意见,则根据所述提交意见输出所述指定代码文件的第二评审结果,其中所述第二评审结果包括提交或修改后提交。
本实施例的管理平台在接收到管理者发送的提交意见后,会继续完成将对应的代码文件自动提交至代码库。本实施例的提交意见包括直接提交或修改后提交,若为直接提交则启动提交流程,若为修改后提交,则退回至对应的开发用户并携带修改建议。本实施例中管理者给出的为提交意见之外的其他意见,比如退回意见,则直接通过管理者对应的终端直接退回至开发用户,以缩短处理流程,提高效率。
进一步地,所述识别模块2,包括:
启动单元,用于启动Git函数以调取与所述Git函数内的指定钩子函数。
本实施例通过Git函数调用codereview流程,当监测到有代码文件申请提交,则会启动Git函数,进而通过Git函数启动整个codereview流程。本实施例的Git函数内存在多个钩子函数,以便对进入codereview流程的代码文件进行预处理。
获取单元,用于通过所述钩子函数对所述指定代码文件进行全局文件扫描,以获取所述指定代码文件对应的所述文件信息。
本实施例先通过指定钩子函数对整个提交版本的指定代码文件做全局文件扫描,以获得指定代码文件的文件信息,进而识别指定代码文件的编程语言类型等。本申请其他实施例若已存在编程语言类型的映射关系,即无需通过指定钩子函数进行全局扫描即可获得指定代码文件的编辑语言类型,比如通过识别编辑语言类型对应的参数设定等方式直接获得指定代码文件的编程语言类型,以便根据确定的编辑语言类型选择codereview流程中的配置模型。
进一步地,基于配置模型评审代码的装置,包括:
第一获取模块,用于获取所述第一配置模型在第一指定时间段内生成的新评审数据。
本实施例以指定编辑语言类型对应的第一配置模型的更新升级为例进行详细说明,其他编辑语言类型对应的配置模型的升级过程相类似,不一一赘述。本实施例的第一指定时间段为配置模型自主升级的频率时间段,比如设定每个一个月升级一次,则第一指定时间段为一个月。本实施例的新评审数据会存储于管理平台的指定内存区域,当判断达到预设的自主升级时刻,则自动从指定内存区域,启动第一配置模型自主升级的机器学习模型进行升级训练。
更新模块,用于根据新训练集对所述第一配置模型对应的机器学习模型,进行更新训练,以获取更新后的新第一配置模型,其中所述新训练集通过将所述新评审数据合并入历史评审数据中形成,所述历史评审数据包括所述第一指定时间段之前的所有评审数据,所述评审数据包括根据所述第一编辑语言按照不同语法编辑而成的第一编辑语言代码文本,以及各所述第一编辑语言代码文本分别对应的指定评审结果。
进一步地,基于配置模型评审代码的装置,包括:
第二获取模块,用于获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文件携带所述第一缺陷的标注信息。
注入模块,用于将所述第一代码文本注入训练样本库中形成训练样本。
输入模块,用于将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练。
第三获取模块,用于获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量。
集成模块,用于将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
本实施例中,通过将各缺陷问题对应的特征通过神经网络模型进行抽象提取,形成能对应映射各缺陷问题的规则,并将各缺陷问题的规则按照编辑语言的不同,分类汇集成对应的配置模型,以便将同一编辑语言对应的各缺陷问题的规则分解为同一个配置模型,以便在使用中,通过依次输入,实现多种缺陷问题的集中评价,提高效率。
本实施例通过每隔指定时间段对配置模型进行升级训练,以对配置模型进行升级、修复,提高识别准确率。本实施例通过将指定时间段内的新评审数据加入原训练样本中,以不断扩充训练集,提高配置模型的机器学习能力。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于配置模型评审代码的过程需要的所有数据。该计算机设备的网络接口用于与外部的端通过网络连接通信。该计算机程序被处理器执行时以实现基于配置模型评审代码的方法。
上述处理器执行上述基于配置模型评审代码的方法,包括:接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件;识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。
上述计算机设备,通过配置模型扫描指定代码文件,以判断指定代码文件是否存在对应的缺陷问题,若存在并通过配置模型辨别出指定代码文件对应的缺陷问题类型,并根据缺陷问题以及缺陷问题类型形成评审结果。若判断指定代码文件不存在对应的缺陷问题,则输出评审通过的评审结果,通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。配置模型不仅能辨别出各缺陷问题,还可根据预设的缺陷等级对各缺陷问题进行等级划分,以便根据等级划分评价对应的开发用户,或通过等级划分对该代码文件给出合适的处理建议。通过为不同缺陷等级配置不同的处理建议,以进一步提高代码审核流程的自动化程度,当判断缺陷等级达到预设条件时,可直接拒绝本次提交;将缺陷问题严重、审核不通过的代码文件直接退返至相关的开发用户,并携带相应的评审结果及修改建议;将无缺陷问题的代码文件直接提交代码库,提高codereview的效率。
在一个实施例中,所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,上述处理器通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤,包括:通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题;若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配;若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果。
在一个实施例中,各所述缺陷问题分别对应的缺陷等级通过等级分数进行表示,所述等级分数与所述缺陷等级成正比例关系,上述处理器根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:根据各所述缺陷问题分别对应的缺陷等级,确定各所述缺陷问题分别对应的等级分数;将各所述缺陷问题分别对应的缺陷等级的等级分数,与各所述缺陷等级分别对应的权重相乘得到各乘积,并将各所述乘积进行加和得到所述指定代码文件的评审分数;判断所述评审分数是否超过预设阈值;若超过预设阈值,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
在一个实施例中,各所述缺陷问题分别对应的缺陷等级与各处理建议表存在对应关系,上述处理器根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:判断各所述缺陷问题分别对应的缺陷等级是否存在于第一处理建议表,其中所述第一处理建议表对应的处理建议为拒绝提交;若存在,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
在一个实施例中,上述处理器判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配的步骤之后,包括:若各所述缺陷问题未分别与所述第一配置模型中的缺陷等级相匹配,则筛选出与所述第一配置模型中的缺陷等级不相匹配的第一缺陷问题;将所述第一缺陷问题发送至给管理者的指定终端;判断是否接收到所述指定终端反馈的提交意见;若是,则根据所述提交意见输出所述指定代码文件的第二评审结果,其中所述第二评审结果包括提交或修改后提交。
在一个实施例中,上述处理器识别所述指定代码文件对应的文件信息的步骤,包括:启动Git函数以调取与所述Git函数内的指定钩子函数;通过所述钩子函数对所述指定代码文件进行全局文件扫描,以获取所述指定代码文件对应的所述文件信息。
在一个实施例中,上述处理器接收开发用户端提交的指定代码文件的步骤之前,包括:获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文件携带所述第一缺陷的标注信息;将所述第一代码文本注入训练样本库中形成训练样本;将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练;获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量;将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现基于配置模型评审代码的,包括:接收开发用户端提交的指定代码文件,其中所述指定代码文件为所述开发用户新开发的代码文件;识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出。
上述计算机可读存储介质,通过配置模型扫描指定代码文件,以判断指定代码文件是否存在对应的缺陷问题,若存在并通过配置模型辨别出指定代码文件对应的缺陷问题类型,并根据缺陷问题以及缺陷问题类型形成评审结果。若判断指定代码文件不存在对应的缺陷问题,则输出评审通过的评审结果,通过配置模型使codereview实现标准化、流程化、固定化,使得codereivew成为方便、快捷、高效的过程。配置模型不仅能辨别出各缺陷问题,还可根据预设的缺陷等级对各缺陷问题进行等级划分,以便根据等级划分评价对应的开发用户,或通过等级划分对该代码文件给出合适的处理建议。通过为不同缺陷等级配置不同的处理建议,以进一步提高代码审核流程的自动化程度,当判断缺陷等级达到预设条件时,可直接拒绝本次提交;将缺陷问题严重、审核不通过的代码文件直接退返至相关的开发用户,并携带相应的评审结果及修改建议;将无缺陷问题的代码文件直接提交代码库,提高codereview的效率。
在一个实施例中,所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,上述处理器通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤,包括:通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题;若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配;若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果。
在一个实施例中,各所述缺陷问题分别对应的缺陷等级通过等级分数进行表示,所述等级分数与所述缺陷等级成正比例关系,上述处理器根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:根据各所述缺陷问题分别对应的缺陷等级,确定各所述缺陷问题分别对应的等级分数;将各所述缺陷问题分别对应的缺陷等级的等级分数,与各所述缺陷等级分别对应的权重相乘得到各乘积,并将各所述乘积进行加和得到所述指定代码文件的评审分数;判断所述评审分数是否超过预设阈值;若超过预设阈值,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
在一个实施例中,各所述缺陷问题分别对应的缺陷等级与各处理建议表存在对应关系,上述处理器根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:判断各所述缺陷问题分别对应的缺陷等级是否存在于第一处理建议表,其中所述第一处理建议表对应的处理建议为拒绝提交;若存在,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
在一个实施例中,上述处理器判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配的步骤之后,包括:若各所述缺陷问题未分别与所述第一配置模型中的缺陷等级相匹配,则筛选出与所述第一配置模型中的缺陷等级不相匹配的第一缺陷问题;将所述第一缺陷问题发送至给管理者的指定终端;判断是否接收到所述指定终端反馈的提交意见;若是,则根据所述提交意见输出所述指定代码文件的第二评审结果,其中所述第二评审结果包括提交或修改后提交。
在一个实施例中,上述处理器识别所述指定代码文件对应的文件信息的步骤,包括:启动Git函数以调取与所述Git函数内的指定钩子函数;通过所述钩子函数对所述指定代码文件进行全局文件扫描,以获取所述指定代码文件对应的所述文件信息。
在一个实施例中,上述处理器接收开发用户端提交的指定代码文件的步骤之前,包括:获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文件携带所述第一缺陷的标注信息;将所述第一代码文本注入训练样本库中形成训练样本;将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练;获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量;将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(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)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (8)
1.一种基于配置模型评审代码的方法,其特征在于,包括:
接收开发用户端提交的指定代码文件,其中所述指定代码文件为开发用户新开发的代码文件;
识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;
根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;
通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出;
所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,所述通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤,包括:
通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题;
若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配;
若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果;
所述接收开发用户端提交的指定代码文件的步骤之前,包括:
获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文本携带所述第一缺陷的标注信息;
将所述第一代码文本注入训练样本库中形成训练样本;
将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练;
获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量;
将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
2.根据权利要求1所述的基于配置模型评审代码的方法,其特征在于,各所述缺陷问题分别对应的缺陷等级通过等级分数进行表示,所述等级分数与所述缺陷等级成正比例关系,所述根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:
根据各所述缺陷问题分别对应的缺陷等级,确定各所述缺陷问题分别对应的等级分数;
将各所述缺陷问题分别对应的缺陷等级的等级分数,与各所述缺陷等级分别对应的权重相乘得到各乘积,并将各所述乘积进行加和得到所述指定代码文件的评审分数;
判断所述评审分数是否超过预设阈值;
若超过预设阈值,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
3.根据权利要求1所述的基于配置模型评审代码的方法,其特征在于,各所述缺陷问题分别对应的缺陷等级与各处理建议表存在对应关系,所述根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果的步骤,包括:
判断各所述缺陷问题分别对应的缺陷等级是否存在于第一处理建议表,其中所述第一处理建议表对应的处理建议为拒绝提交;
若存在,则输出的第一评审结果为拒绝提交,并通知所述指定代码文件对应的所述开发用户。
4.根据权利要求1所述的基于配置模型评审代码的方法,其特征在于,所述判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配的步骤之后,包括:
若各所述缺陷问题未分别与所述第一配置模型中的缺陷等级相匹配,则筛选出与所述第一配置模型中的缺陷等级不相匹配的第一缺陷问题;
将所述第一缺陷问题发送至给管理者的指定终端;
判断是否接收到所述指定终端反馈的提交意见;
若是,则根据所述提交意见输出所述指定代码文件的第二评审结果,其中所述第二评审结果包括提交或修改后提交。
5.根据权利要求1所述的基于配置模型评审代码的方法,其特征在于,所述识别所述指定代码文件对应的文件信息的步骤,包括:
启动Git函数以调取与所述Git函数内的指定钩子函数;
通过所述钩子函数对所述指定代码文件进行全局文件扫描,以获取所述指定代码文件对应的所述文件信息。
6.一种基于配置模型评审代码的装置,其特征在于,包括:
接收模块,用于接收开发用户端提交的指定代码文件,其中所述指定代码文件为开发用户新开发的代码文件;
识别模块,用于识别所述指定代码文件对应的文件信息,其中所述文件信息至少包括指定代码文件对应的指定编辑语言;
调用模块,用于根据所述指定编辑语言调用与所述指定代码文件相匹配的第一配置模型;
扫描模块,用于通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出;
所述第一配置模型内配置有各缺陷问题分别对应的缺陷等级,所述通过所述第一配置模型对所述指定代码文件进行扫描,并将扫描结果作为所述指定代码文件的评审结果输出的步骤,包括:
通过所述第一配置模型对所述指定代码文件进行文件扫描,以判断所述指定代码文件中是否存在各所述缺陷问题;
若存在各所述缺陷问题,判断各所述缺陷问题是否分别与所述第一配置模型中的缺陷等级相匹配;
若相匹配,则根据各所述缺陷问题分别对应的缺陷等级,按照预设规则输出所述指定代码文件的第一评审结果;
所述接收开发用户端提交的指定代码文件的步骤之前,包括:
获取携带第一缺陷的第一编辑语言对应的第一代码文本,其中所述第一缺陷包含于各所述缺陷问题中,所述第一代码文本携带所述第一缺陷的标注信息;
将所述第一代码文本注入训练样本库中形成训练样本;
将所述训练样本库中的训练样本,按照预设数量批次输入到预设神经网络中进行训练;
获取训练后的各所述缺陷问题分别对应的评审规则,其中所述评审规则包括评价各缺陷问题的参量;
将各所述评审规则按照编辑语言进行分类集成,形成各编辑语言分别对应的配置模型。
7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435059.6A CN110297656B (zh) | 2019-05-23 | 2019-05-23 | 基于配置模型评审代码的方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435059.6A CN110297656B (zh) | 2019-05-23 | 2019-05-23 | 基于配置模型评审代码的方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297656A CN110297656A (zh) | 2019-10-01 |
CN110297656B true CN110297656B (zh) | 2024-01-26 |
Family
ID=68027064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910435059.6A Active CN110297656B (zh) | 2019-05-23 | 2019-05-23 | 基于配置模型评审代码的方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297656B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111008017B (zh) * | 2019-12-02 | 2024-04-09 | 深圳市迅雷网络技术有限公司 | 一种基于oclint的待提交文件预审方法及相关组件 |
CN112905224B (zh) * | 2019-12-04 | 2024-04-30 | 阿里巴巴集团控股有限公司 | 一种用于代码评审的耗时确定方法、装置及设备 |
CN112000573B (zh) * | 2020-08-17 | 2022-10-28 | 苏州达家迎信息技术有限公司 | 代码质量的监控方法、装置、计算机设备及介质 |
CN112668345A (zh) * | 2020-12-24 | 2021-04-16 | 科大讯飞股份有限公司 | 语法缺陷数据识别模型构建方法和语法缺陷数据识别方法 |
CN112949262A (zh) * | 2021-02-09 | 2021-06-11 | 中广核工程有限公司 | 评审单处理方法、装置、计算机设备和存储介质 |
CN113946340A (zh) * | 2021-09-30 | 2022-01-18 | 北京五八信息技术有限公司 | 一种代码处理方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512034A (zh) * | 2015-12-04 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 一种评审方法和评审系统 |
CN106294164A (zh) * | 2016-08-15 | 2017-01-04 | 中国银行股份有限公司 | 一种代码检查方法及装置 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN108664402A (zh) * | 2018-05-14 | 2018-10-16 | 北京航空航天大学 | 一种基于软件网络特征学习的故障预测方法 |
CN108804323A (zh) * | 2018-06-06 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 代码质量监控方法、设备及存储介质 |
CN109408389A (zh) * | 2018-10-30 | 2019-03-01 | 北京理工大学 | 一种基于深度学习的代码缺陷检测方法及装置 |
CN109408385A (zh) * | 2018-10-17 | 2019-03-01 | 哈尔滨工程大学 | 一种基于缺陷规则和分类反馈的缺陷发现方法 |
CN109446107A (zh) * | 2019-01-23 | 2019-03-08 | 长沙软工信息科技有限公司 | 一种源代码检测方法及装置、电子设备 |
CN109726120A (zh) * | 2018-12-05 | 2019-05-07 | 北京计算机技术及应用研究所 | 一种基于机器学习的软件缺陷确认方法 |
CN109726123A (zh) * | 2018-12-20 | 2019-05-07 | 北京每日优鲜电子商务有限公司 | 代码质量的检测系统和检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8627279B2 (en) * | 2011-02-07 | 2014-01-07 | International Business Machines Corporation | Distributed, non-intrusive code review in a development environment |
-
2019
- 2019-05-23 CN CN201910435059.6A patent/CN110297656B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512034A (zh) * | 2015-12-04 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 一种评审方法和评审系统 |
CN106294164A (zh) * | 2016-08-15 | 2017-01-04 | 中国银行股份有限公司 | 一种代码检查方法及装置 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN108664402A (zh) * | 2018-05-14 | 2018-10-16 | 北京航空航天大学 | 一种基于软件网络特征学习的故障预测方法 |
CN108804323A (zh) * | 2018-06-06 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 代码质量监控方法、设备及存储介质 |
CN109408385A (zh) * | 2018-10-17 | 2019-03-01 | 哈尔滨工程大学 | 一种基于缺陷规则和分类反馈的缺陷发现方法 |
CN109408389A (zh) * | 2018-10-30 | 2019-03-01 | 北京理工大学 | 一种基于深度学习的代码缺陷检测方法及装置 |
CN109726120A (zh) * | 2018-12-05 | 2019-05-07 | 北京计算机技术及应用研究所 | 一种基于机器学习的软件缺陷确认方法 |
CN109726123A (zh) * | 2018-12-20 | 2019-05-07 | 北京每日优鲜电子商务有限公司 | 代码质量的检测系统和检测方法 |
CN109446107A (zh) * | 2019-01-23 | 2019-03-08 | 长沙软工信息科技有限公司 | 一种源代码检测方法及装置、电子设备 |
Non-Patent Citations (2)
Title |
---|
Benchmarking Classification Models for Software Defect Prediction: A Proposed Framework and Novel Findings;Stefan Lessmann等;IEEE Transactions on Software Engineering;第34卷(第4期);第485-496页 * |
基于机器学习的软件缺陷预测技术研究;马樱;中国博士学位论文全文数据库信息科技辑(第12期);第I138-9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110297656A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297656B (zh) | 基于配置模型评审代码的方法、装置及计算机设备 | |
CN108256074B (zh) | 校验处理的方法、装置、电子设备和存储介质 | |
CN111210842B (zh) | 语音质检方法、装置、终端及计算机可读存储介质 | |
CN109710528B (zh) | 一种测试脚本生成方法、装置、设备和介质 | |
CN103678109A (zh) | 一种转储文件分析方法、装置和系统 | |
CN113010413B (zh) | 一种接口自动化测试方法和装置 | |
US20220327452A1 (en) | Method for automatically updating unit cost of inspection by using comparison between inspection time and work time of crowdsourcing-based project for generating artificial intelligence training data | |
CN111444718A (zh) | 一种保险产品需求文档处理方法、装置及电子设备 | |
CN111274136B (zh) | 一种机载软件测试管理系统和测试过程管理方法 | |
US20140129295A1 (en) | System for automated process mining | |
CN115952081A (zh) | 一种软件测试方法、装置、存储介质及设备 | |
CN114003692A (zh) | 合同文本信息的处理方法、装置、计算机设备及存储介质 | |
CN114721959A (zh) | 一种测试信息分析方法及装置 | |
CN116069628A (zh) | 一种智能处置的软件自动化回归测试方法、系统及设备 | |
KR102621633B1 (ko) | 개발 제품의 인증 프로세스 정보 제공 시스템 및 그 방법 | |
CN113886262A (zh) | 软件自动化测试方法、装置、计算机设备和存储介质 | |
KR100888422B1 (ko) | 금융계약의 사용자 인터페이스 검증시스템 및 이를 이용한 검증 방법 | |
EP3690772A1 (en) | Method and system for skill matching for determining skill similarity | |
CN113064811A (zh) | 基于工作流的自动化测试方法、装置以及电子设备 | |
CN112651620A (zh) | 系统级软件需求处理方法、装置、终端设备及存储介质 | |
CN109359028B (zh) | 代码质量监控方法、装置、计算机设备及存储介质 | |
CN115328896A (zh) | 一种用于保单上报的数据自动修复方法、系统及介质 | |
CN117194603A (zh) | 一种文档的审核方法、装置、电子设备及存储介质 | |
CN117785651A (zh) | 测试用例处理方法及用例管理平台、电子设备、存储介质 | |
CN115270741A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240102 Address after: No. 301, Building 11, Phase II, Taicang University Science Park, No. 27 Zigang Road, Science and Education New City, Taicang City, Suzhou City, Jiangsu Province, 215000 Applicant after: Tianhang Changying (Jiangsu) Technology Co.,Ltd. Address before: 400010 38 / F, 39 / F, unit 1, 99 Wuyi Road, Yuzhong District, Chongqing Applicant before: CHONGQING FINANCIAL ASSETS EXCHANGE Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |