CN110704297B - 代码评审方法、装置、计算机设备及存储介质 - Google Patents

代码评审方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110704297B
CN110704297B CN201910754715.9A CN201910754715A CN110704297B CN 110704297 B CN110704297 B CN 110704297B CN 201910754715 A CN201910754715 A CN 201910754715A CN 110704297 B CN110704297 B CN 110704297B
Authority
CN
China
Prior art keywords
review
code
detection tool
code detection
reviewed
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
Application number
CN201910754715.9A
Other languages
English (en)
Other versions
CN110704297A (zh
Inventor
周禄平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Lian Intellectual Property Service Center
Tianyi Safety Technology Co Ltd
Original Assignee
Tianyi Safety Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianyi Safety Technology Co Ltd filed Critical Tianyi Safety Technology Co Ltd
Priority to CN201910754715.9A priority Critical patent/CN110704297B/zh
Publication of CN110704297A publication Critical patent/CN110704297A/zh
Application granted granted Critical
Publication of CN110704297B publication Critical patent/CN110704297B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种代码评审方法、装置、计算机设备及存储介质,其中,该代码评审方法包括:获取代码评审请求,代码评审请求包括待评审项目;获取代码评审脚本和代码检测工具包,代码检测工具包包括至少一个目标代码检测工具;将代码评审脚本导入目标代码检测工具,生成代码评审接口;采用至少一个代码评审接口对待评审项目进行单维评审,获取单维评审结果;生成待评审项目对应的多维评审雷达图,获取多维分数对比结果;若多维分数对比结果为分数对比不通过,则生成待评审项目对应的多维评审报告。该方法得到的多维评审雷达图,可直观地体现待评审项目的问题所在,提高采用该代码评审系统评审代码的效率和质量。

Description

代码评审方法、装置、计算机设备及存储介质
技术领域
本发明涉及代码测试技术领域,尤其涉及一种代码评审方法、装置、计算机设备及存储介质。
背景技术
代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找系统缺陷,保证软件全维度质量和提高开发者自身水平。Code Review(轻量级代码评审)相对于正式代码评审,轻量级代码评审所需要的各种成本要明显低的多,如果流程正确,它可以起到更加积极的效果。正因如此,轻量级代码评审经常性得被引入到软件开发过程中。目前大部分WEB项目上线前的测试阶段都会进行Code Review。但是当WEB项目的分支多且复杂时,可能会导致Code Review的时间过长,难以保证Code Review的质量,甚至影响WEB项目总体开发时间。如何提高Code Review在WEB项目中的评审效率成为亟待解决的问题。
发明内容
本发明实施例提供一种代码评审方法、装置、计算机设备及存储介质,以解决提高Code Review在WEB项目中的评审效率的问题。
一种代码评审方法,包括:
获取客户端发送的代码评审请求,代码评审请求包括待评审项目;
获取代码评审脚本和代码检测工具包,代码检测工具包包括至少一个目标代码检测工具;
将代码评审脚本导入至少一个目标代码检测工具,生成与目标代码检测工具关联的代码评审接口;
采用至少一个代码评审接口对待评审项目进行单维评审,获取单维评审结果,单维评审结果包括单维评审分数和单维评审报告;
基于每一单维评审分数,生成待评审项目对应的多维评审雷达图;
获取多维评审雷达图中每一单维评审分数对应的预设维度分数阈值,对比单维评审分数和预设维度分数阈值;
若存在至少一个单维评审分数未超过预设维度分数阈值,则获取多维分数对比结果为分数对比不通过,并采用预设评审模板处理多维评审雷达图和所有单维评审报告,生成待评审项目对应的多维评审报告,将多维评审报告返回给客户端。
一种代码评审装置,包括:
获取评审请求模块,用于获取客户端发送的代码评审请求,所述代码评审请求包括待评审项目;
获取检测工具包模块,用于获取代码评审脚本和代码检测工具包,所述代码检测工具包包括至少一个目标代码检测工具;
生成评审接口模块,用于将所述代码评审脚本导入至少一个所述目标代码检测工具,生成与所述目标代码检测工具关联的代码评审接口;
获取单维结果模块,用于采用至少一个所述代码评审接口对所述待评审项目进行单维评审,获取单维评审结果,所述单维评审结果包括单维评审分数和单维评审报告;
生成评审雷达图模块,用于基于每一所述单维评审分数,生成所述待评审项目对应的多维评审雷达图;
对比单维分数模块,用于获取所述多维评审雷达图中每一所述单维评审分数对应的预设维度分数阈值,对比所述单维评审分数和所述预设维度分数阈值;
获取对比结果模块,用于若存在至少一个所述单维评审分数未超过所述预设维度分数阈值,则获取多维分数对比结果为分数对比不通过,并采用预设评审模板处理所述多维评审雷达图和所有所述单维评审报告,生成所述待评审项目对应的多维评审报告,将所述多维评审报告返回给所述客户端。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述代码评审方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述代码评审方法。
上述代码评审方法、装置、计算机设备及存储介质,通过通过客户端发送的代码评审请求中获取对应的待评审项目,采用预设代码评审脚本和代码检测工具包中的每一代码检测工具对该待评审项目进行多维评审,可获取多维分数对比结果;将多维分数对比结果为不通过的待评审项目生成对应的多维分数对比报告,且该多维分数对比报告包括多维评审雷达图,利于用户直观地看出待评审项目的问题所在,提高采用该代码评审系统评审代码的效率和质量,有效获取解决方案。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中代码评审方法的应用环境示意图;
图2是本发明一实施例中代码评审方法的流程图;
图3是本发明一实施例中代码评审方法的另一流程图;
图4是本发明一实施例中代码评审方法的另一流程图;
图5是本发明一实施例中代码评审方法的另一流程图;
图6是本发明一实施例中代码评审方法的另一流程图;
图7是本发明一实施例中代码评审装置的示意图;
图8是本发明一实施例中计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的代码评审方法,可应用在如图1的应用环境中,该代码评审方法应用在代码评审系统中,该代码评审系统包括客户端和服务器,其中,客户端通过网络与服务器进行通信。客户端又称为用户端,是指与服务器相对应,为客户端提供本地服务的程序。该客户端可安装在但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等计算机设备上。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种代码评审方法,以该方法应用在图1中的服务器为例进行说明,具体包括如下步骤:
S10.获取客户端发送的代码评审请求,代码评审请求包括待评审项目。
其中,代码评审请求是用户通过客户端发送的用以评审待评审项目的请求。
于本实施例,待评审项目是用以采用代码评审系统进行评审的互联网上线项目。
具体地,服务器可给客户端设置上传待评审项目的接口,用户可通过该接口将待评审项目发送给服务器进行代码评审。
步骤S10中,服务器可实时接受客户端发送的待评审项目,及时对待评审项目进行代码评审,提高代码评审项目的评审实时性。
S20.获取代码评审脚本和代码检测工具包,代码检测工具包包括至少一个目标代码检测工具。
其中,代码评审脚步是预设于服务器的对待评审项目进行评审的脚本。
代码检测工具包是包括各种目标代码检测工具对待评审项目进行多维度检测的工具的集合包,比如,包括代码规范评审工具、目录结构评审工具、函数复杂度评审工具和重复代码评审工具等,此处不作限定。可以理解地,代码规范评审工具是对待评审项目中包括的代码是否符合规范进行评审的工具,于本实施例,可采用ESLint作为代码规范评审工具。
具体地,ESLint是一个开源的JavaScript代码检查工具,由Nicholas C.Zakas于2013年6月创建。代码检查是一种静态的分析,常用于寻找有问题的模式或者代码,并且不依赖于具体的编码风格。对大多数编程语言来说都会有代码检查,一般来说编译程序会内置检查工具。
ESLint的初衷是为了让程序员可以创建自己的检测规则。ESLint的所有规则都被设计成可插入的。ESLint的默认规则与其它插件并没有什么区别,规则本身和测试可以依赖于同样的模式。为了便于使用,ESLint内置了一些规则,亦可自定义规则。ESLint使用Node.js编写,保障快速的运行环境同时也便于安装。
步骤S20中,服务器可获取预置的包括代码评审脚步和包括至少一个目标代码检测工具的代码检测工具包对待评审项目进行评审,无需现场生成代码评审脚步或现场调用代码检测工具,提高服务器对待评审项目进行实时评审的评审效率。
S30.将代码评审脚本导入至少一个目标代码检测工具,生成与目标代码检测工具关联的代码评审接口。
其中,代码评审接口是将代码评审脚步导入到目标代码检测工具后形成的以目标代码检测工具对应的程序语言形成的代码检测指令。该代码检测指令可调用对应的目标代码检测工具对待评审项目进行特定维度的代码评审,并获取评审结果等。比如,可将代码评审脚步接入ESLint,获得对应的Review.ESLint()评审接口,用以测试待评审项目的项目代码规范性等。
步骤S30中,服务器可将代码评审脚本导入至少一个所述目标代码检测工具,生成与所述目标代码检测工具关联的代码评审接口,用以后续服务器基于代码评审接口对待评审项目进行代码评审准备技术基础。
S40.采用至少一个代码评审接口对待评审项目进行单维评审,获取单维评审结果,单维评审结果包括单维评审分数和单维评审报告。
其中,单维评审是采用代码评审接口对待评审项目进行单个维度,比如从代码规范性、目标结构合理性、函数复杂性或代码近似性等对待评审项目进行评审。
单维评审结果就是采用代码评审接口对待评审项目进行单维评审后得到的评审结果,包括评审合格和评审缺陷等。
单维评审分数是单维评审结果中包括的采用评审规则对待评审项目进行评审后得到的分数;
单维评审报告即为采用代码评审接口对待评审项目进行单维评审后得到的评审记录等。
具体地,代码评审接口可能包括多个,每个代码评审接口对应一个维度的评审规则,基于不同的评审规则服务器可获取待评审项目对应的不同的单维评审结果。
步骤S40中,服务器可采用至少一个代码评审接口对待评审项目进行单维评审,获取单维评审结果,提高评审待评审项目的评审全面性和评审弹性。
S50.基于每一单维评审分数,生成待评审项目对应的多维评审雷达图。
其中,雷达图(Radar Chart),又可称为戴布拉图或蜘蛛网图(Spider Chart),是分析报表的一种。即将各项维度分析所得的数字或比率,就其比较重要的项目集中划在一个圆形的图表上,来表现各项维度比率的情况,使用者能一目了然的了解各项维度指标的变动情形及其好坏趋向。
具体地,于本实施例,多维评审雷达图的绘制方法是:先画3个同心圆,把圆分为n个区域(n为维度个数)(每个区为360/n度),于本实施例,每个维度线分别代表待评审项目的代码规范性、目录结构合理性、函数复杂性或代码近似性等。同心圆中最小的圆代表平均水平的1/2值或最差的情况;中心圆代表同行业的平均水平或特定比较对象的水平,称为标准线(区);大圆表示同行业平均水平的1.5倍或最佳状态。在n个区域内,以圆心为起点,以放射线的形式画出相应的单维评审分数线。然后,在相应的单维评审分数线上标出当前维度对应的单维评审分数。将各种单维评审分数线用线联结起来后,就形成了一个不规则闭环图。该不规则闭环图可清楚地表示出本待评审项目的维度评审态势,并把这种维度评审态势与标准线相比,就可以清楚地看出本维度评审态势的成绩和差距。
步骤S50中,多维评审雷达图是服务器基于待评审项目的所有维度得到的单维评审分数生成的雷达图,该雷达图可直观地反应出该待评审项目在每个维度的得分情况。
S60.获取多维评审雷达图中每一单维评审分数对应的预设维度分数阈值,对比单维评审分数和预设维度分数阈值。
其中,预设维度分数阈值是每个维度对应的最小合格分数值。也即,若单维评审分数低于预设维度分数阈值,说明当前维度的多维分数对比结果为分数对比不通过。
于本实施例中,服务器对待评审项目包括四个维度的评审,每一评审分数规则可基于实际应用场景设置如下:
代码规范维度:代码检查工具ESLint会检查项目中的js文件是否有不符合代码规范的语句,并分析出error及warning数量,出现1个error扣10分,出现1个warning扣5分,最低分为0分;
目录结构维度:利用node.js扫描项目中css文件夹中是否是css文件,js文件夹中是否是js文件,images文件夹中是否是图片文件,如果扫描出某个文件放置于错误的文件夹中则扣10分,最低分为0分;
函数复杂度维度:利用JSLint检查项目中每个js文件中函数复杂度,函数复杂度的阈值是9,如果某个函数的复杂度超过该值,那么扣10分,最低分为0分;
重复代码维度:利用JSInspect检测项目中每个js文件是否重复/近似代码,如果找到一处,那么扣10分,最低分为0分。
步骤S60中,服务器可基于不同维度分别对应的评审分数规则获取不同维度分别对应的单维评审分数,并获取不同维度分别对应的预设维度分数阈值,利于服务器后续快速基于每一单维评审分数和对应的预设维度分数阈值获取分数对比结果;服务器可基于多维评审雷达图获得多维分数对比结果,将单维评审分数和预设维度分数阈值进行分数对比,直观清晰地看出每个维度的态势,并给予不同的单维评审分数为后续进行进一步分析准备数据基础。
优选地,在S60之后,即在对比单维评审分数和预设维度分数阈值之后,该代码评审方法还具体包括如下步骤:
S601.若多维分数对比结果为分数对比通过,则给客户端发送待评审项目通过代码评审的信息。
步骤S601中,当多维分数对比结果为分数对比通过时,说明多维评审雷达图中每一单维评审分数均满足预设维度分数阈值,也即说明当前待评审项目符合评审请求,此时服务器应及时向客户端返回待评审项目通过代码评审的通知信息,利于及时推进待审批项目的后续流程。
S70.若存在至少一个单维评审分数未超过预设维度分数阈值,则获取多维分数对比结果为分数对比不通过,并采用预设评审模板处理多维评审雷达图和所有单维评审报告,生成待评审项目对应的多维评审报告,将多维评审报告返回给客户端。
其中,预设评审模板是用以添加多维评审雷达图和所有单维评审报告,用以形成多维评审报告的模板。
多维评审报告是针对多维分数对比结果不通过的待评审项目生成的评审报告,利于用户通过该报告直观并直接了解待评审项目的问题所在。
具体地,服务器可基于不同维度分别对应的评审分数规则获取不同维度分别对应的单维评审分数,并获取不同维度分别对应的预设维度分数阈值,利于服务器后续快速基于每一单维评审分数和对应的预设维度分数阈值获取分数对比结果。服务器将存在任一单维评审分数未超过预设维度分数阈值的待评审项目的多维分数对比结果快速判定为分数对比不通过。
步骤S70中,服务器可基于多维分数对比结果生成完整的存在问题的待评审项目对应的多维评审报告,并返回给客户端,无需人工再进行根据多维分数对比结果进行数据分析的工作,提高代码评审的效率。
本实施例提供的代码评审方法,服务器通过通过客户端发送的代码评审请求中获取对应的待评审项目,采用预设代码评审脚本和代码检测工具包中的每一代码检测工具对该待评审项目进行多维评审,可获取多维分数对比结果;将多维分数对比结果为不通过的待评审项目生成对应的多维分数对比报告,且该多维分数对比报告包括多维评审雷达图,利于用户直观地看出待评审项目的问题所在,提高采用该代码评审系统评审代码的效率和质量,有效获取解决方案。
在一实施例中,如图3所示,在S10之前,即在获取客户端发送的代码评审请求之前,代码评审方法还具体包括如下步骤:
S101.获取处理代码检测工具指令,处理代码检测工具指令包括处理动作。
其中,处理代码检测工具指令是对代码检测工具进行管理的指令,处理动作即为具体管理动作,比如增加动作、删除动作或升级动作。可以理解地,增加动作即为向代码检测工具包中添加检测工具的动作,删除动作即为从代码检测工具包中删除已存在的代码检测工具的动作,升级动作即为给代码检测工具包中指定的代码检测工具进行升级的动作。
步骤S101中,服务器可接受客户端发送的代码检测工具指令对代码检测工具包中的代码检测工具进行管理,增强代码检测工具包的管理灵活性和可扩展性。
S102.若处理动作为增加动作,且处理代码检测工具指令还包括待增加代码检测工具ID,则获取待增加代码检测工具ID对应的待增加代码检测工具和存储位置,将待增加代码检测工具和存储位置添加到代码检测工具包对应的存储位置数据表中。
其中,代码检测工具ID为服务器用以区分不同代码检测工具而配置的唯一的ID,可为数字、字母或数字与字母的组合等,此处不作具体限定。
待增加代码检测工具ID即为待增加代码检测工具对应的服务器可识别的唯一ID;基于该待增加代码检测工具ID服务器可检索出关于该待增加代码检测工具ID对应的待增加代码检测工具的所有信息,比如待增加代码检测工具当前的存储位置。
步骤S102中,服务器可基于该待增加代码检测工具ID检测到该待增加代码检测工具当前存储位置,并将该存储位置添加到代码检测工具包对应的存储位置数据表中,利于后续服务器可直接基于存储位置数据表直接获取该待增加代码检测工具,对待评审项目进行代码检测。
S103.若处理动作为删除动作,且处理代码检测工具指令还包括待删除代码检测工具ID,则在代码检测工具包中删除待删除代码检测工具ID对应的待删除代码检测工具的所有记录。
具体地,服务器可基于待删除代码检测工具ID在代码检测工具包中删除与该待删除代码检测工具ID对应的待删除代码检测工具的所有记录,比如在存储位置数据表中的记录,以及该待删除代码检测工具本身等。
步骤S103中,服务器可通过删除动作删除指定的代码检测工具,利于用户及时处理无用的代码检测工具,提高服务器存储空间的占用有效性。
S104.若处理动作为升级动作,且处理代码检测工具指令还包括待升级代码检测工具ID和升级工具包,则在代码检测工具包中采用升级工具包对待升级代码检测工具ID对应的待升级代码检测工具进行升级。
其中,升级工具包是对待升级代码检测工具ID对应的代码检测工具进行升级的辅助工具包。
步骤S104中,服务器可采用升级工具包对待升级代码检测工具ID对应的代码检测工具及时进行升级,提高代码检测工具包的检测功能实时性和检测功能可扩展性。
步骤S101至S104中,服务器可接受客户端发送的代码检测工具指令对代码检测工具包中的代码检测工具进行管理,增强代码检测工具包的管理灵活性和可扩展性。服务器可基于该待增加代码检测工具ID检测到该待增加代码检测工具当前存储位置,并将该存储位置添加到代码检测工具包对应的存储位置数据表中,利于后续服务器可直接基于存储位置数据表直接获取该待增加代码检测工具,对待评审项目进行代码检测。服务器可通过删除动作删除指定的代码检测工具,利于用户及时处理无用的代码检测工具,提高服务器存储空间的占用有效性。服务器可采用升级工具包对待升级代码检测工具ID对应的代码检测工具及时进行升级,提高代码检测工具包的检测功能实时性和检测功能可扩展性。
在一实施例中,如图4所示,在S30中,即将代码评审脚本导入至少一个目标代码检测工具,生成与目标代码检测工具关联的代码评审接口,具体包括如下步骤:
S31.获取代码检测工具包对应的存储位置数据表,存储位置数据表包括至少一个目标代码检测工具和对应的存储位置。
其中,存储位置数据表是服务器用以记录每一代码检测工具存储位置的数据表。优选地,服务器可将所有代码检测工具都存储到代码检测工具包中,利于用户通过存储位置数据表对所有代码检测工具进行统一管理。
步骤S31中,服务器可通过获取存储位置数据表间接查找到每一目标代码检测工具,利于服务器快速对目标代码检测工具进行实时调用。
S32.将代码评审脚本存储到存储位置数据表中的每一目标代码检测工具对应的存储位置,激活至少一个目标代码检测工具形成可执行代码检测工具。
步骤S32中,服务器可将代码评审脚本插入到每一目标代码检测工具对应的存储位置,激活目标代码检测工具形成可执行代码检测工具,便于服务器后续可直接调用该可执行代码检测工具对待审批项目进行代码检测,提高代码检测的效率,减少现场激活代码检测工具的时间。
S33.基于至少一个可执行代码检测工具,执行生成评审接口指令,获取与目标代码检测工具关联的代码评审接口。
其中,代码评审接口是指定代码检测工具用以接收待评审项目进行检测的检测接口,可包括具体的接入参数等,比如待评审项目对应的项目ID等,此处不作限定,可根据实际应用场景进行设定。
步骤S33中,服务器可基于可执行代码检测工具生成对应的代码评审接口,便于服务器可直接调用该代码评审接口对待评审项目进行单维度的代码评审。
步骤S31至S33中,服务器可通过获取存储位置数据表间接查找到每一目标代码检测工具,利于服务器快速对目标代码检测工具进行实时调用。服务器可将代码评审脚本插入到每一目标代码检测工具对应的存储位置,激活目标代码检测工具形成可执行代码检测工具,便于服务器后续可直接调用该可执行代码检测工具对待审批项目进行代码检测,提高代码检测的效率,减少现场激活代码检测工具的时间。服务器可基于可执行代码检测工具生成对应的代码评审接口,便于服务器可直接调用该代码评审接口对待评审项目进行单维度的代码评审。
在一实施例中,代码评审接口包括代码规范评审接口、目录结构评审接口、函数复杂度评审接口和重复代码评审接口中的至少一种。如图5所示,在S40中,即采用至少一个代码评审接口对待评审项目进行单维评审,获取单维评审结果,具体包括如下步骤:
S41.若存在代码规范评审接口,则采用代码规范评审接口对待评审项目进行评审,获取待评审项目的代码规范性。
其中,代码规范评审接口是通过代码规范评审工具生成的检测接口。于本实施例,可采用web前端代码检查工具ESLint作为代码规范评审工具。具体地,ESLint是一款开源的JavaScript lint工具,由Nicholas C.Zakas于2013年创建。借助ESLint,可将静态代码规范性分析和问题代码协助修复集成到编码、提交和打包过程中,及早发现并协助修复代码中:有语法错误的部分、不符合约定的样式准则的部分以及不符合约定的最佳实践的部分。
步骤S41中,服务器采用ESLint在项目开发中可获得如下收益:在执行代码之前发现并修复语法错误,减少调试耗时和潜在bug;保证项目的编码风格统一,提高可维护性;督促团队成员在编码时遵守约定的最佳实践,提高代码质量。
S42.若存在目录结构评审接口,则采用目录结构评审接口对待评审项目进行评审,获取待评审项目的目录结构合理性。
其中,目录结构评审接口是通过目录结构评审工具生成的检测接口。于本实施例,可采用node.js作为目录结构评审工具,以扫描项目目录结构是否合理。具体地,Node.js是基于ChromeV8引擎的JavaScript运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型。Node可将JavaScript运行在服务器的开发平台,以使JavaScript成为与PHP、Python、Perl以及Ruby等服务器语言平行的脚本语言。
具体检测内容比如:css文件夹是否放置css文件,js文件夹是否放置js文件,images文件夹是否放置图片文件,静态资源文件是否统一放入static文件夹下等。
步骤S42中,服务器采用Node可将测试目录结构的用例进行优化,提供替代的API,使得ChromeV8引擎在非浏览器环境下运行得更好。ChromeV8引擎执行Javascript的速度快,性能好,易于扩展,且适合在分布式设备上运行数据密集型的实时应用。
S43.若存在函数复杂度评审接口,则采用函数复杂度评审接口对待评审项目进行评审,获取待评审项目的函数复杂性。
其中,函数复杂度评审接口是通过函数复杂度评审工具生成的检测接口。于本实施例,可采用JSLint作为函数复杂度评审工具,检测js文件中的函数复杂度是否合理。具体地,JSLint是JavaScript验证工具(非开源),可以扫描JavaScript源代码来查找问题。如果JSLint发现一个问题,JSLint就会显示描述这个问题的消息,并指出错误在源代码中的大致位置。有些编码风格约定可能导致未预见的行为或错误。
进一步地,JSLint除了能指出这些不合理的约定,还能标志出结构方面的问题。尽管JSLint不能保证逻辑一定正确,但确实有助于发现错误,这些错误很可能导致浏览器的JavaScript引擎抛出错误。JSLint会把一些结构方面的错误标志为可疑的编码实践,以下列出了其中一部分:
JSLint要求所有代码行都以分号结束。尽管JavaScript确实允许将换行符作为行结束符,但一般认为这种做法是不明确的,而且是不好的编码风格;使用if和for的语句必须使用大括号把语句块括起来;不同于其他编程语言,在JavaScript中,块不会作为变量的作用域,JavaScript只支持函数级作用域,因此,JSLint只接受作为function、if、switch、while、for、do和try语句一部分的块,其他的块都会标志为错误;var只能声明一次,而且在使用之前必须声明;JSLint会把出现在return、break、continue或throw语句后面的代码标志为不可达的代码。这些语句后面必须紧跟一个结束大括号等。
步骤S43中,服务器将JSLint作为函数复杂度评审工具,利于JSLint及时将可能导致逻辑错误或其他未预见行为的部分标出来,减少调试时间。
S44.若存在重复代码评审接口,则采用重复代码评审接口对待评审项目进行评审,获取待评审项目的代码近似性。
其中,重复代码评审接口是通过重复代码评审工具生成的检测接口。于本实施例,可采用JSInspect作为重复代码评审工具。具体地,在开发的过程中开发人员往往会存在大量的复制粘贴代码的行为,这一点在项目的开发初期尤其显著;而在项目逐步稳定,功能需求逐步完善之后就需要考虑对代码库的优化与重构,尽量编写清晰可维护的代码。好的代码往往是在合理范围内尽可能地避免重复代码,遵循单一职责与单一数据源(SingleSource of Truth)等原则。此时,服务器可使用jsinspect对代码库进行自动检索,根据其反馈的重复或者近似的代码片进行合理的优化。
jsinspect利用babylon对JavaScript或者JSX代码构建AST(abstract syntaxtree,抽象语法树)语法树,根据不同的AST节点类型,比如BlockStatement、VariableDeclaration或ObjectExpression等标记相似结构的代码块等。
步骤S44中,服务器采用jsinspect检测待评审项目的代码近似性,以使项目代码在合理范围内尽可能地避免重复代码,遵循单一职责与单一数据源等原则。
步骤S41至S44中,服务器采用ESLint在项目开发中可获得如下收益:在执行代码之前发现并修复语法错误,减少调试耗时和潜在bug;保证项目的编码风格统一,提高可维护性;督促团队成员在编码时遵守约定的最佳实践,提高代码质量。服务器采用Node可将测试目录结构的用例进行优化,提供替代的API,使得ChromeV8引擎在非浏览器环境下运行得更好。ChromeV8引擎执行Javascript的速度快,性能好,易于扩展,且适合在分布式设备上运行数据密集型的实时应用。服务器将JSLint作为函数复杂度评审工具,利于JSLint及时将可能导致逻辑错误或其他未预见行为的部分标出来,减少调试时间。服务器采用jsinspect检测待评审项目的代码近似性,以使项目代码在合理范围内尽可能地避免重复代码,遵循单一职责与单一数据源等原则。
单维评审结果包括代码规范性、目录结构合理性、函数复杂性和代码近似性中的至少一种。
在一实施例中,如图6所示,在S41中,即采用代码规范评审接口对待评审项目进行评审,获取待评审项目的代码规范性,具体包括如下步骤:
S411.采用代码规范评审接口对待评审项目进行评审,获取规范评审结果,规范评审结果包括错误和告警。
其中,错误的评审结果表示代码规范评审接口对当前代码检测的结果为出现严重性错误,可能导致项目中断等严重后果。
告警表示代码规范评审接口对当前代码检测的结果为出现可容忍错误,及时对项目进程没有严重影响,也应注意规范性。
步骤S411中,服务器采用代码规范评审接口对待评审项目进行评审获得错误和告警两种结果,利于后续服务器基于不同的评审结果采取不用的处理措施。
S412.分别统计规范评审结果为错误和告警对应的第一规范评审数量和第二规范评审数量。
步骤S412中,服务器可基于步骤S411得到的规范评审结果进行分别统计,获取第一规范评审数量和第二规范评审数量,以基于不同的评审数量分别计算对应的分数。
S413.采用预设评分规则对第一规范评审数量和第二规范评审数量进行计算,获取代码规范性对应的单维评审分数和单维评审报告。
其中,单维评审分数是基于第一规范评审数量和第二规范评审数量分别对应的分数进行加成后得到的分数。具体加成算法可按实际场景设定,此处不作具体限定。
单维评审报告是服务器综合当前代码评审工具进行代码评审后得到的单维评审分数,以及该单维评审结果等信息形成的总结性报告,利于后续服务器基于多个单维评审报告形成多维评审报告,便于用户及时查看问题。
具体地,服务器可制定预设评审规则,比如:代码检查工具ESLint会检查项目中的js文件是否有不符合代码规范的语句,并分析出错误(error)数量及告警(warning)数量,出现1个error扣10分,出现1个warning扣5分,最低分为0分。
步骤S413中,服务器可基于单维评审分数等信息形成单维评审报告,利于后续服务器基于多个单维评审报告形成多维评审报告,便于用户及时查看问题。
步骤S411至S413中,服务器采用代码规范评审接口对待评审项目进行评审获得错误和告警两种结果,利于后续服务器基于不同的评审结果采取不用的处理措施。服务器可基于步骤S411得到的规范评审结果进行分别统计,获取第一规范评审数量和第二规范评审数量,以基于不同的评审数量分别计算对应的分数。服务器可基于单维评审分数等信息形成单维评审报告,利于后续服务器基于多个单维评审报告形成多维评审报告,便于用户及时查看问题。
本实施例提供的代码评审方法,服务器通过通过客户端发送的代码评审请求中获取对应的待评审项目,采用预设代码评审脚本和代码检测工具包中的每一代码检测工具对该待评审项目进行多维评审,可获取多维分数对比结果;将多维分数对比结果为不通过的待评审项目生成对应的多维分数对比报告,且该多维分数对比报告包括多维评审雷达图,利于用户直观地看出待评审项目的问题所在,提高采用该代码评审系统评审代码的效率和质量,有效获取解决方案。
进一步地,服务器可接受客户端发送的代码检测工具指令对代码检测工具包中的代码检测工具进行管理,增强代码检测工具包的管理灵活性和可扩展性。服务器可基于该待增加代码检测工具ID检测到该待增加代码检测工具当前存储位置,并将该存储位置添加到代码检测工具包对应的存储位置数据表中,利于后续服务器可直接基于存储位置数据表直接获取该待增加代码检测工具,对待评审项目进行代码检测。服务器可通过删除动作删除指定的代码检测工具,利于用户及时处理无用的代码检测工具,提高服务器存储空间的占用有效性。服务器可采用升级工具包对待升级代码检测工具ID对应的代码检测工具及时进行升级,提高代码检测工具包的检测功能实时性和检测功能可扩展性。
进一步地,服务器可通过获取存储位置数据表间接查找到每一目标代码检测工具,利于服务器快速对目标代码检测工具进行实时调用。服务器可将代码评审脚本插入到每一目标代码检测工具对应的存储位置,激活目标代码检测工具形成可执行代码检测工具,便于服务器后续可直接调用该可执行代码检测工具对待审批项目进行代码检测,提高代码检测的效率,减少现场激活代码检测工具的时间。服务器可基于可执行代码检测工具生成对应的代码评审接口,便于服务器可直接调用该代码评审接口对待评审项目进行单维度的代码评审。
进一步地,服务器采用ESLint在项目开发中可获得如下收益:在执行代码之前发现并修复语法错误,减少调试耗时和潜在bug;保证项目的编码风格统一,提高可维护性;督促团队成员在编码时遵守约定的最佳实践,提高代码质量。服务器采用Node可将测试目录结构的用例进行优化,提供替代的API,使得ChromeV8引擎在非浏览器环境下运行得更好。ChromeV8引擎执行Javascript的速度快,性能好,易于扩展,且适合在分布式设备上运行数据密集型的实时应用。具体检测内容比如:css文件夹是否放置css文件,js文件夹是否放置js文件,images文件夹是否放置图片文件,静态资源文件是否统一放入static文件夹下等。服务器将JSLint作为函数复杂度评审工具,利于JSLint及时将可能导致逻辑错误或其他未预见行为的部分标出来,减少调试时间。服务器采用jsinspect检测待评审项目的代码近似性,以使项目代码在合理范围内尽可能地避免重复代码,遵循单一职责与单一数据源等原则。
进一步地,服务器采用代码规范评审接口对待评审项目进行评审获得错误和告警两种结果,利于后续服务器基于不同的评审结果采取不用的处理措施。服务器可基于步骤S411得到的规范评审结果进行分别统计,获取第一规范评审数量和第二规范评审数量,以基于不同的评审数量分别计算对应的分数。服务器可基于单维评审分数等信息形成单维评审报告,利于后续服务器基于多个单维评审报告形成多维评审报告,便于用户及时查看问题。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种代码评审装置,该代码评审装置与上述实施例中代码评审方法一一对应。如图7所示,该代码评审装置包括获取评审请求模块10、获取检测工具包模块20、生成评审接口模块30、获取单维结果模块40、生成评审雷达图模块50、对比单维分数模块60和获取对比结果模块70。各功能模块详细说明如下:
获取评审请求模块10,用于获取客户端发送的代码评审请求,所述代码评审请求包括待评审项目;
获取检测工具包模块20,用于获取代码评审脚本和代码检测工具包,所述代码检测工具包包括至少一个目标代码检测工具;
生成评审接口模块30,用于将所述代码评审脚本导入至少一个所述目标代码检测工具,生成与所述目标代码检测工具关联的代码评审接口;
获取单维结果模块40,用于采用至少一个所述代码评审接口对所述待评审项目进行单维评审,获取单维评审结果,所述单维评审结果包括单维评审分数和单维评审报告;
生成评审雷达图模块50,用于基于每一所述单维评审分数,生成所述待评审项目对应的多维评审雷达图;
对比单维分数模块60,用于获取所述多维评审雷达图中每一所述单维评审分数对应的预设维度分数阈值,对比所述单维评审分数和所述预设维度分数阈值;
获取对比结果模块70,用于若存在至少一个所述单维评审分数未超过所述预设维度分数阈值,则获取多维分数对比结果为分数对比不通过,并采用预设评审模板处理所述多维评审雷达图和所有所述单维评审报告,生成所述待评审项目对应的多维评审报告,将所述多维评审报告返回给所述客户端。
优选地,该代码评审装置还包括获取工具指令模块、获取存储位置模块、删除检测工具模块以及升级检测工具模块。
获取工具指令模块,用于获取处理代码检测工具指令,处理代码检测工具指令包括处理动作。
获取存储位置模块,用于若处理动作为增加动作,且处理代码检测工具指令还包括待增加代码检测工具ID,则获取待增加代码检测工具ID对应的待增加代码检测工具和存储位置,将待增加代码检测工具和存储位置添加到代码检测工具包对应的存储位置数据表中。
删除检测工具模块,用于若处理动作为删除动作,且处理代码检测工具指令还包括待删除代码检测工具ID,则在代码检测工具包中删除待删除代码检测工具ID对应的待删除代码检测工具的所有记录。
升级检测工具模块,用于若处理动作为升级动作,且处理代码检测工具指令还包括待升级代码检测工具ID和升级工具包,则在代码检测工具包中采用升级工具包对待升级代码检测工具ID对应的待升级代码检测工具进行升级。
优选地,该生成评审接口模块包括获取存储位置单元、激活检测工具单元以及获取评审接口单元。
获取存储位置单元,用于获取代码检测工具包对应的存储位置数据表,存储位置数据表包括至少一个目标代码检测工具和对应的存储位置。
激活检测工具单元,用于将代码评审脚本存储到存储位置数据表中的每一目标代码检测工具对应的存储位置,激活至少一个目标代码检测工具形成可执行代码检测工具。
获取评审接口单元,用于基于至少一个可执行代码检测工具,执行生成评审接口指令,获取与目标代码检测工具关联的代码评审接口。
优选地,该获取单维结果模块包括获取代码规范性单元、获取结构合理性单元、获取函数复杂性单元以及获取代码近似性单元。
获取代码规范性单元,用于获取代码规范性单元,用于若存在代码规范评审接口,则采用代码规范评审接口对待评审项目进行评审,获取待评审项目的代码规范性。
获取结构合理性单元,用于若存在目录结构评审接口,则采用目录结构评审接口对待评审项目进行评审,获取待评审项目的目录结构合理性。
获取函数复杂性单元,用于若存在函数复杂度评审接口,则采用函数复杂度评审接口对待评审项目进行评审,获取待评审项目的函数复杂性。
获取代码近似性单元,用于若存在重复代码评审接口,则采用重复代码评审接口对待评审项目进行评审,获取待评审项目的代码近似性。
优选地,该获取代码规范性单元包括获取审批结果单元、统计评审结果单元以及获取单维报告单元。
获取审批结果单元,用于采用代码规范评审接口对待评审项目进行评审,获取规范评审结果,规范评审结果包括错误和告警。
统计评审结果单元,用于分别统计规范评审结果为错误和告警对应的第一规范评审数量和第二规范评审数量。
获取单维报告单元,用于采用预设评分规则对第一规范评审数量和第二规范评审数量进行计算,获取代码规范性对应的单维评审分数和单维评审报告。
优选地,该生成评审雷达图模块还包括获取对比通过单元。
获取对比通过单元,用于若每一所述单维评审分数均超过所述预设维度分数阈值,则获取多维分数对比结果为分数对比通过。
优选地,该代码评审装置还包括发送评审信息模块。
发送评审信息模块,用于若多维分数对比结果为分数对比通过,则给客户端发送待评审项目通过代码评审的信息。
关于代码评审装置的具体限定可以参见上文中对于代码评审方法的限定,在此不再赘述。上述代码评审装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于代码评审方法相关的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码评审方法。
在一实施例中,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例代码评审方法,例如图2所示S10至步骤S60。或者,处理器执行计算机程序时实现上述实施例中代码评审装置的各模块/单元的功能,例如图7所示模块10至模块60的功能。为避免重复,此处不再赘述。
在一实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例代码评审方法,例如图2所示S10至步骤S60。或者,该计算机程序被处理器执行时实现上述装置实施例中代码评审装置中各模块/单元的功能,例如图7所示模块10至模块60的功能。为避免重复,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (7)

1.一种代码评审方法,其特征在于,包括:
获取处理代码检测工具指令,所述处理代码检测工具指令包括处理动作;
若所述处理动作为增加动作,且所述处理代码检测工具指令还包括待增加代码检测工具ID,则获取所述待增加代码检测工具ID对应的待增加代码检测工具和存储位置,将所述待增加代码检测工具和所述存储位置添加到代码检测工具包对应的存储位置数据表中;
若所述处理动作为删除动作,且所述处理代码检测工具指令还包括待删除代码检测工具ID,则在所述代码检测工具包中删除所述待删除代码检测工具ID对应的待删除代码检测工具的所有记录;
若所述处理动作为升级动作,且所述处理代码检测工具指令还包括待升级代码检测工具ID和升级工具包,则在所述代码检测工具包中采用所述升级工具包对所述待升级代码检测工具ID对应的待升级代码检测工具进行升级;
获取客户端发送的代码评审请求,所述代码评审请求包括待评审项目;
获取代码评审脚本和代码检测工具包,所述代码检测工具包包括至少一个目标代码检测工具;
获取所述代码检测工具包对应的存储位置数据表,所述存储位置数据表包括至少一个所述目标代码检测工具和对应的存储位置;
将所述代码评审脚本存储到所述存储位置数据表中的每一所述目标代码检测工具对应的存储位置,激活至少一个所述目标代码检测工具形成可执行代码检测工具;
基于至少一个所述可执行代码检测工具,执行生成评审接口指令,获取与所述目标代码检测工具关联的代码评审接口;所述代码评审接口包括代码规范评审接口、目录结构评审接口、函数复杂度评审接口和重复代码评审接口中的至少一种;
若存在所述代码规范评审接口,则采用所述代码规范评审接口对所述待评审项目进行评审,获取所述待评审项目的代码规范性;
若存在所述目录结构评审接口,则采用所述目录结构评审接口对所述待评审项目进行评审,获取所述待评审项目的目录结构合理性;
若存在所述函数复杂度评审接口,则采用所述函数复杂度评审接口对所述待评审项目进行评审,获取所述待评审项目的函数复杂性;
若存在所述重复代码评审接口,则采用所述重复代码评审接口对所述待评审项目进行评审,获取所述待评审项目的代码近似性;
单维评审结果包括所述代码规范性、所述目录结构合理性、所述函数复杂性和所述代码近似性中的至少一种,所述单维评审结果包括单维评审分数和单维评审报告;
基于每一所述单维评审分数,生成所述待评审项目对应的多维评审雷达图;
获取所述多维评审雷达图中每一所述单维评审分数对应的预设维度分数阈值,对比所述单维评审分数和所述预设维度分数阈值;
若存在至少一个所述单维评审分数未超过所述预设维度分数阈值,则获取多维分数对比结果为分数对比不通过,并采用预设评审模板处理所述多维评审雷达图和所有所述单维评审报告,生成所述待评审项目对应的多维评审报告,将所述多维评审报告返回给所述客户端。
2.如权利要求1所述的代码评审方法,其特征在于,所述采用所述代码规范评审接口对所述待评审项目进行评审,获取所述待评审项目的代码规范性,包括:
采用所述代码规范评审接口对所述待评审项目进行评审,获取规范评审结果,所述规范评审结果包括错误和告警;
分别统计规范评审结果为错误和告警对应的第一规范评审数量和第二规范评审数量;
采用预设评分规则对所述第一规范评审数量和所述第二规范评审数量进行计算,获取所述代码规范性对应的单维评审分数和单维评审报告。
3.如权利要求1所述的代码评审方法,其特征在于,在所述对比所述单维评审分数和所述预设维度分数阈值之后,所述代码评审方法包括:
若每一所述单维评审分数均超过所述预设维度分数阈值,则获取多维分数对比结果为分数对比通过。
4.如权利要求3所述的代码评审方法,其特征在于,在所述获取多维分数对比结果为分数对比通过之后,所述代码评审方法还包括:
给所述客户端发送所述待评审项目通过代码评审的信息。
5.一种代码评审装置,其特征在于,包括:
获取工具指令模块,用于获取处理代码检测工具指令,所述处理代码检测工具指令包括处理动作;
获取存储位置模块,用于若所述处理动作为增加动作,且所述处理代码检测工具指令还包括待增加代码检测工具ID,则获取所述待增加代码检测工具ID对应的待增加代码检测工具和存储位置,将所述待增加代码检测工具和所述存储位置添加到代码检测工具包对应的存储位置数据表中;
删除检测工具模块,用于若所述处理动作为删除动作,且所述处理代码检测工具指令还包括待删除代码检测工具ID,则在所述代码检测工具包中删除所述待删除代码检测工具ID对应的待删除代码检测工具的所有记录;
升级检测工具模块,用于若所述处理动作为升级动作,且所述处理代码检测工具指令还包括待升级代码检测工具ID和升级工具包,则在所述代码检测工具包中采用所述升级工具包对所述待升级代码检测工具ID对应的待升级代码检测工具进行升级;
获取评审请求模块,用于获取客户端发送的代码评审请求,所述代码评审请求包括待评审项目;
获取检测工具包模块,用于获取代码评审脚本和代码检测工具包,所述代码检测工具包包括至少一个目标代码检测工具;
生成评审接口模块,用于获取所述代码检测工具包对应的存储位置数据表,所述存储位置数据表包括至少一个所述目标代码检测工具和对应的存储位置;将所述代码评审脚本存储到所述存储位置数据表中的每一所述目标代码检测工具对应的存储位置,激活至少一个所述目标代码检测工具形成可执行代码检测工具;基于至少一个所述可执行代码检测工具,执行生成评审接口指令,获取与所述目标代码检测工具关联的代码评审接口;所述代码评审接口包括代码规范评审接口、目录结构评审接口、函数复杂度评审接口和重复代码评审接口中的至少一种;
获取单维结果模块,用于若存在所述代码规范评审接口,则采用所述代码规范评审接口对所述待评审项目进行评审,获取所述待评审项目的代码规范性;若存在所述目录结构评审接口,则采用所述目录结构评审接口对所述待评审项目进行评审,获取所述待评审项目的目录结构合理性;若存在所述函数复杂度评审接口,则采用所述函数复杂度评审接口对所述待评审项目进行评审,获取所述待评审项目的函数复杂性;若存在所述重复代码评审接口,则采用所述重复代码评审接口对所述待评审项目进行评审,获取所述待评审项目的代码近似性;单维评审结果包括所述代码规范性、所述目录结构合理性、所述函数复杂性和所述代码近似性中的至少一种,所述单维评审结果包括单维评审分数和单维评审报告;
生成评审雷达图模块,用于基于每一所述单维评审分数,生成所述待评审项目对应的多维评审雷达图;
对比单维分数模块,用于获取所述多维评审雷达图中每一所述单维评审分数对应的预设维度分数阈值,对比所述单维评审分数和所述预设维度分数阈值;
获取对比结果模块,用于若存在至少一个所述单维评审分数未超过所述预设维度分数阈值,则获取多维分数对比结果为分数对比不通过,并采用预设评审模板处理所述多维评审雷达图和所有所述单维评审报告,生成所述待评审项目对应的多维评审报告,将所述多维评审报告返回给所述客户端。
6.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的代码评审方法。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的代码评审方法。
CN201910754715.9A 2019-08-15 2019-08-15 代码评审方法、装置、计算机设备及存储介质 Active CN110704297B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910754715.9A CN110704297B (zh) 2019-08-15 2019-08-15 代码评审方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910754715.9A CN110704297B (zh) 2019-08-15 2019-08-15 代码评审方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110704297A CN110704297A (zh) 2020-01-17
CN110704297B true CN110704297B (zh) 2024-02-06

Family

ID=69193506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910754715.9A Active CN110704297B (zh) 2019-08-15 2019-08-15 代码评审方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110704297B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309631B (zh) * 2020-03-16 2024-04-09 深信服科技股份有限公司 一种代码审计方法、装置、设备及计算机可读存储介质
CN111444093B (zh) * 2020-03-25 2024-04-02 天翼数字生活科技有限公司 项目开发过程质量的确定方法、装置、计算机设备
CN111625230A (zh) * 2020-05-19 2020-09-04 北京计算机技术及应用研究所 一种统一前端JavaScript编码规范的系统
CN112328506B (zh) * 2021-01-06 2021-04-13 北京云真信科技有限公司 一种web端代码检测系统
CN112860565A (zh) * 2021-02-24 2021-05-28 北京皮尔布莱尼软件有限公司 一种代码评审方法、系统、计算设备及存储介质
CN113468062A (zh) * 2021-07-16 2021-10-01 中国银行股份有限公司 一种基于ESLint配置的代码质量检测系统及方法
CN114610372A (zh) * 2022-02-09 2022-06-10 阿里云计算有限公司 评审文件的处理方法及装置、存储介质、处理器、终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648823A (zh) * 2016-12-30 2017-05-10 东软集团股份有限公司 代码发布的方法及装置
CN107045477A (zh) * 2016-12-30 2017-08-15 上海富聪金融信息服务有限公司 一种可进行多维度检测的质量评估平台
CN108459962A (zh) * 2018-01-23 2018-08-28 平安普惠企业管理有限公司 代码规范性检测方法、装置、终端设备及存储介质
US10180836B1 (en) * 2015-08-24 2019-01-15 Amazon Technologies, Inc. Generating source code review comments using code analysis tools

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080295085A1 (en) * 2007-05-25 2008-11-27 Microsoft Corporation Integrated code review tool
US9201646B2 (en) * 2013-01-05 2015-12-01 Vmware, Inc. Automatic code review and code reviewer recommendation
US9916224B2 (en) * 2015-09-15 2018-03-13 Linkedin Corporation Integrating quality analysis with a code review tool

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10180836B1 (en) * 2015-08-24 2019-01-15 Amazon Technologies, Inc. Generating source code review comments using code analysis tools
CN106648823A (zh) * 2016-12-30 2017-05-10 东软集团股份有限公司 代码发布的方法及装置
CN107045477A (zh) * 2016-12-30 2017-08-15 上海富聪金融信息服务有限公司 一种可进行多维度检测的质量评估平台
CN108459962A (zh) * 2018-01-23 2018-08-28 平安普惠企业管理有限公司 代码规范性检测方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN110704297A (zh) 2020-01-17

Similar Documents

Publication Publication Date Title
CN110704297B (zh) 代码评审方法、装置、计算机设备及存储介质
US10503478B2 (en) System and method for guiding a user in a software development lifecycle using machine learning
CN109376166B (zh) 脚本转换方法、装置、计算机设备及存储介质
US8954930B2 (en) System and method for reducing test effort by object risk analysis
US20180052725A1 (en) A method for identifying a cause for a failure of a test
JP7404839B2 (ja) ソフトウェアプログラム不良位置の識別
US20130179867A1 (en) Program Code Analysis System
CN113448862B (zh) 软件版本测试方法、装置及计算机设备
JP2018026135A (ja) 静的解析警告の効率的な運用のための原因ポイント解析のためのシステム及び方法
US20140113257A1 (en) Automated evaluation of programming code
CN110879781A (zh) 程序调试方法、装置、电子设备及计算机可读存储介质
US20180276110A1 (en) System and method for assisting a user in an application development lifecycle
WO2020186808A1 (zh) 页面权限测试方法、装置、计算机设备及存储介质
US8930765B2 (en) Systems and methods for feedback driven regression testing
CN114816971A (zh) 一种数据处理方法、相关设备及存储介质
CN112540925A (zh) 新特性兼容性检测系统及方法、电子设备及可读存储介质
CN112835779A (zh) 测试用例确定方法、装置、计算机设备
CN109522206B (zh) 异常数据定位方法、装置、计算机设备及存储介质
WO2023030282A1 (en) Methods and devices for assessing generalizability of benchmarks
Lavoie et al. A case study of TTCN-3 test scripts clone analysis in an industrial telecommunication setting
CN113778852A (zh) 一种基于正则表达式的代码分析方法
CN115705297A (zh) 代码调用检测方法、装置、计算机设备以及存储介质
CN114968751A (zh) 一种无代码开发平台的程序调试方法和程序调试装置
CN113220586A (zh) 一种自动化的接口压力测试执行方法、装置和系统
CN112148581A (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: 20240109

Address after: Chinatelecom tower, No. 19, Chaoyangmen North Street, Dongcheng District, Beijing 100010

Applicant after: Tianyi Safety Technology Co.,Ltd.

Address before: Room 202, Block B, Aerospace Micromotor Building, No. 7 Langshan 2nd Road, Xili Street, Nanshan District, Shenzhen City, Guangdong Province, 518057

Applicant before: Shenzhen LIAN intellectual property service center

Effective date of registration: 20240109

Address after: Room 202, Block B, Aerospace Micromotor Building, No. 7 Langshan 2nd Road, Xili Street, Nanshan District, Shenzhen City, Guangdong Province, 518057

Applicant after: Shenzhen LIAN intellectual property service center

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant before: PING AN PUHUI ENTERPRISE MANAGEMENT Co.,Ltd.

GR01 Patent grant
GR01 Patent grant