首页> 中国专利> 一种代码审查服务同步方法、装置及计算机设备

一种代码审查服务同步方法、装置及计算机设备

摘要

本发明公开了一种代码审查服务同步方法、装置及计算机设备,其中,该方法包括:当监听到代码仓库发生代码变更时,向代码审查服务器发送代码变更消息,使得所述代码审查服务器根据所述代码变更消息从所述代码仓库拉取目标代码;将所述代码审查服务器审查后的目标代码发送到所述代码仓库。本发明通过监听代码仓库的代码变更情况,当代码仓库发生变化时,通知代码审查端去拉取代码仓库中发生变更的代码,对发生变更的代码进行审查后发送到代码仓库,实现了代码仓库和代码审查服务器的代码同步,避免了代码仓库本身有新提交的代码时,代码审查软件代码审查的代码落后于代码仓库,导致不能审查直接提交到代码仓库的代码,代码仓库的安全性差的问题。

著录项

  • 公开/公告号CN113094089A

    专利类型发明专利

  • 公开/公告日2021-07-09

    原文格式PDF

  • 申请/专利权人 北京自如信息科技有限公司;

    申请/专利号CN202110408731.X

  • 发明设计人 黄成;刘鑫茹;张秀丽;孙国磊;

    申请日2021-04-15

  • 分类号G06F8/71(20180101);

  • 代理机构11250 北京三聚阳光知识产权代理有限公司;

  • 代理人张琳琳

  • 地址 101500 北京市密云区经济开发区兴盛南路8号开发区办公楼501室-1375

  • 入库时间 2023-06-19 11:45:49

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种代码审查服务同步方法、装置及计算机设备。

背景技术

代码审查服务指的是对计算机源代码进行系统化的审查,找出及修正软件开发初期未发现的错误,提升软件质量。目前公司大多数依赖于代码仓库(Gitlab)进行审查,但是代码仓库本身的代码审查功能粒度较粗,并不能很好的提供代码审查服务。

相关技术中,Google研发的代码审查软件(Gerrit)能够满足细粒度代码审查的需求,但是当代码仓库本身有新提交的代码时,代码审查软件代码审查的代码反而会落后于代码仓库,导致不能审查直接提交到代码仓库的代码,代码仓库的安全性差。

发明内容

因此,本发明要解决的技术问题在于克服现有技术中代码审查不能审查直接提交到代码仓库的代码导致代码仓库安全性差的缺陷,从而提供一种代码审查服务同步方法、装置及计算机设备。

根据第一方面,本发明公开了一种代码审查服务同步方法,包括如下步骤:当监听到代码仓库发生代码变更时,向代码审查服务器发送代码变更消息,使得所述代码审查服务器根据所述代码变更消息从所述代码仓库拉取目标代码;将所述代码审查服务器审查后的目标代码发送到所述代码仓库。

本发明请求保护的代码审查服务同步方法通过监听代码仓库的代码变更情况,当代码仓库发生变化时,通知代码审查端去拉取代码仓库中发生变更的代码,对发生变更的代码进行审查后发送到代码仓库,实现了代码仓库和代码审查服务器的代码同步,避免了代码仓库本身有新提交的代码时,代码审查软件代码审查的代码落后于代码仓库,导致不能审查直接提交到代码仓库的代码,代码仓库的安全性差的问题。

可选地,所述方法还包括:当接收到所述代码仓库发送的组创建事件时,向所述代码审查服务器发送组创建请求,以使得所述代码审查服务器根据所述组创建请求创建与所述代码仓库中的组对应的组。

本发明通过在接收到代码仓库发送的组创建事件时,向代码审查服务器发送组创建请求,以使得代码审查服务器根据组创建请求创建与代码仓库中的组对应的组,所有的用户都会授权上述组中,实现了代码仓库和代码审查端的组同步以及组权限控制。

可选地,所述组创建请求携带有:第一组名称和第二组名称,所述第一组名称对应的组的权限与所述第二组名称对应的组的权限不同。

本发明通过设置不同权限的组,用于限制不同的用户查看和修改权限,进一步保证了代码安全。

可选地,所述方法还包括:当接收到项目创建事件时,向所述代码审查端发送项目创建请求,以使得所述代码审查端根据所述项目创建请求创建项目;向所述代码审查服务器发送代码克隆请求,以使得所述代码审查服务器根据所述代码克隆请求从所述代码仓库中克隆目标项目;向所述代码审查服务器发送同步配置信息,使得所述代码审查服务器在所述目标项目的同步配置文件中添加同步配置信息。

本发明实施例通过在项目初始化时添加同步插件信息保证了代码仓库和代码审查服务端的项目同步。

可选地,所述方法还包括:当接收到权限更新事件时,向所述代码审查服务器发送用户权限变更请求,以使得所述代码审查服务器根据所述用户权限变更请求变更用户权限。

本发明通过当接收到权限更新事件时,向代码审查服务器发送用户权限变更请求,以使得代码审查服务器根据用户权限变更请求变更用户权限,保证了用户在代码审查端与代码仓库的权限一致,极大降低了大量企业基于现有代码仓库接入代码审查服务的成本。

可选地,所述方法还包括:当接收到事件时,将所述事件发送到预设位置进行存储。

本发明通过将接收到的每一个事件都存储到预设位置,防止了事件消息丢失。

根据第二方面,本发明还公开了一种代码审查服务同步装置,包括:监听模块,用于当监听到代码仓库发生代码变更时,向代码审查服务器发送代码变更消息,使得所述代码审查服务器根据所述代码变更消息从所述代码仓库拉取目标代码;发送模块,用于将所述代码审查服务器审查后的目标代码发送到所述代码仓库。

可选地,所述装置还包括:创建模块,用于当接收到所述代码仓库发送的组创建事件时,向所述代码审查服务器发送组创建请求,以使得所述代码审查服务器根据所述组创建请求创建与所述代码仓库中的组对应的组。

根据第三方面,本发明还公开了一种计算机设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如第一方面或第一方面任一可选实施方式所述的代码审查服务同步方法的步骤。

根据第四方面,本发明还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面任一可选实施方式所述的代码审查服务同步方法的步骤。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中代码审查服务同步方法的一个具体示例的流程图;

图2为本发明实施例中代码审查服务同步装置的一个具体示例的原理框图;

图3为本发明实施例中计算机设备的一个具体示例图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

本发明实施例公开了一种代码审查服务同步方法,应用于代码审查服务同步处理器,该代码审查服务同步处理器分别与代码仓库(Gitlab)、代码审查端(Gerrit)以及代码审查服务器连接,用于处理代码仓库和代码审查端发送的各种事件请求,以实现代码仓库和代码审查端的权限同步、代码同步等。如图1所示,包括如下步骤:

S11:当监听到代码仓库发生代码变更时,向代码审查服务器发送代码变更消息,使得代码审查服务器根据代码变更消息从代码仓库拉取目标代码。

示例性地,代码审查服务同步处理器中可以集成一个监听中间件或者与外部监听中间件连接。本发明实施例对该监听中间件与代码审查服务同步处理器的关系不作具体限定,本领域技术人员可以根据实际情况确定。当监听中间件监听到用户直接将代码推送到代码仓库时,代码审查服务同步处理器向代码审查服务器发送代码变更消息,使得代码审查服务器根据代码变更消息从代码仓库拉取目标代码,该目标代码即为监听中间件监听到的由用户直接提交到代码仓库中的。

S12:将代码审查服务器审查后的目标代码发送到代码仓库。

示例性地,代码审查服务器将目标代码从代码仓库拉取过来后,会对该目标代码进行细粒度的审查。审查完成后可以将该目标代码发给代码审查服务同步处理器,代码审查服务同步处理器将审查后的目标代码发送到代码仓库进行存储。

本发明请求保护的代码审查服务同步方法通过监听代码仓库的代码变更情况,当代码仓库发生变化时,通知代码审查端去拉取代码仓库中发生变更的代码,对发生变更的代码进行审查后发送到代码仓库,实现了代码仓库和代码审查服务器的代码同步,避免了代码仓库本身有新提交的代码时,代码审查软件代码审查的代码落后于代码仓库,导致不能审查直接提交到代码仓库的代码,代码仓库的安全性差的问题。

作为本发明实施例一个可选实施方式,该代码审查服务同步方法还包括:

当接收到代码仓库发送的组创建事件时,向代码审查服务器发送组创建请求,以使得代码审查服务器根据组创建请求创建与代码仓库中的组对应的组。

示例性地,当代码仓库中新建了一个组(Group)后,向代码审查服务同步处理器发送一个组创建事件,代码审查服务同步处理器向代码审查服务器发送一个组创建请求。该组创建请求可以为HTTP请求。本发明实施例对该组创建请求不作具体限定,本领域技术人员可以根据实际情况确定。

该组创建请求可以携带有代码仓库中的组的组名称,代码审查服务器可以创建一个或多个组名称与代码仓库中的组的组名称相同或者相关的组。本发明实施例对该代码审查服务器创建的组的个数不作具体限定,本领域技术人员可以根据实际情况确定。例如,当代码仓库中的组名称为Group A时,代码审查服务器创建的组的名称为Group A和Group A+L。

本发明实施例通过在接收到代码仓库发送的组创建事件时,向代码审查服务器发送组创建请求,以使得代码审查服务器根据组创建请求创建与代码仓库中的组对应的组,所有的用户都会授权上述组中,实现了代码仓库和代码审查端的组同步以及组权限控制。

在本发明实施例中,在创建好组以后,代码审查服务同步处理器会向代码审查端发送项目创建请求,以使得代码审查端根据该项目创建请求创建一个父项目(ParentRepo),该父项目的名称可以与上述创建的组的名称一致,上面创建的组通过该Repo进行用户权限授权操作,后续建立的子项目均会继承该父项目。

作为本发明实施例一个可选实施方式,组创建请求携带有:第一组名称和第二组名称,第一组名称对应的组的权限与第二组名称对应的组的权限不同。

示例性地,第一组名称对应的组的权限与第二组名称对应的组的权限不同,例如,第一组名称为:Group A,第二组名称为:Group A+L。第一组名称和第二组名称可以对应不同的权限等级,例如,第一组名称的权限可以为只读权限,权限较低,用于普通开发者,而第二组名称的权限可以为读写权限,权限较高,用于权限较高的审查者。

本发明实施例通过设置不同权限的组,用于限制不同的用户查看和修改权限,进一步保证了代码安全。

作为本发明实施例一个可选实施方式,该代码审查服务同步方法还包括:

首先,当接收到项目创建事件时,向代码审查端发送项目创建请求,以使得代码审查端根据项目创建请求创建项目。该项目创建事件和项目创建请求均可以为HTTP请求。该项目创建请求中携带有项目名称,代码审查端以及代码审查服务器均根据该项目名称创建一个空项目。在创建好项目后,删除代码审查端创建的空项目,保留代码审查服务器创建的空项目。

其次,向代码审查服务器发送代码克隆请求,以使得代码审查服务器根据代码克隆请求从代码仓库中克隆目标项目。该代码克隆请求也可以为HTTP请求。该目标项目可以为父项目。

再次,向代码审查服务器发送同步配置信息,使得代码审查服务器在目标项目的同步配置文件中添加同步配置信息。

示例性地,该同步配置信息可以是提前编辑好的通用的配置信息,也可以是根据业务需求编辑的配置信息。本发明实施例对该同步配置信息不作具体限定,本领域技术人员可以根据实际情况确定。代码审查服务器在目标项目的同步配置文件中添加同步配置信息后刷新后即完成项目初始化。

本发明实施例通过在项目初始化时添加同步插件信息保证了代码仓库和代码审查服务端的项目同步。

作为本发明实施例一个可选实施方式,该代码审查服务同步方法还包括:

当接收到权限更新事件时,向代码审查服务器发送用户权限变更请求,以使得代码审查服务器根据用户权限变更请求变更用户权限。

示例性地,当代码仓库发生用户权限变更时,代码仓库向代码审查服务同步处理器发送用户权限更新事件。上述用户权限更新事件和权限变更请求均可以为HTTP请求。

在本发明实施例中,代码仓库(Gitlab)的组权限可以包括:guest、reporter、developer、Maintainer以及Owner等,而代码审查端的组权限可以包括:普通开发者和审查者等。其中,代码仓库中的guest、reporter以及developer可以对应到代码审查端的普通开发者,而代码仓库中的Maintainer以及Owner可以对应到代码审查端的审查者。本发明实施例对该代码仓库的组权限、代码审查端的组权限以及代码仓库与代码审查端的组权限的对应规则均不作具体限定,本领域技术人员可以根据实际情况确定。

该用户权限变更请求可以携带有:待变更用户的标识信息、变更前的权限信息和变更后的权限信息。本发明实施例对该用户变更请求包括的内容不作具体限定,本领域技术人员可以根据实际情况确定。其中,待变更用户的标识信息可以为用户的名字。

代码审查服务器接收到用户权限变更请求时,根据用户权限变更请求中的待变更用户的标识信息确定待变更用户,将上述待变更用户的权限信息(即变更前的权限信息)删除掉,添加上述待变更用户的权限信息为变更后的权限信息。例如,当用户在代码仓库中的权限由developer变更为Maintainer时,在代码审查服务器将该用户现在的权限信息(普通开发者)删除,将该用户的权限信息添加为审查者。

本发明实施例通过当接收到权限更新事件时,向代码审查服务器发送用户权限变更请求,以使得代码审查服务器根据用户权限变更请求变更用户权限,保证了用户在代码审查端与代码仓库的权限一致,极大降低了大量企业基于现有代码仓库接入代码审查服务的成本。

作为本发明实施例一个可选实施方式,该代码审查服务同步方法还包括:

当接收到事件时,将事件发送到预设位置进行存储。

示例性地,该预设位置可以为代码审查服务同步处理器提前建立好的消息队列,也可以为云端。本发明实施例对该预设位置不作具体限定,本领域技术人员可以根据实际情况确定。因为HTTP请求一旦失败了,就不会再次尝试了,而后端服务时常重启可能会导致消息丢失,故本发明实施例通过将接收到的每一个事件都存储到预设位置,防止了事件消息丢失。

本发明实施例还公开了一种代码审查服务同步装置,如图2所示,包括:

监听模块21,用于当监听到代码仓库发生代码变更时,向代码审查服务器发送代码变更消息,使得代码审查服务器根据代码变更消息从代码仓库拉取目标代码;具体实现方式见上述实施例中步骤S11的相关描述,在此不再赘述。

发送模块22,用于将代码审查服务器审查后的目标代码发送到代码仓库。具体实现方式见上述实施例中步骤S12的相关描述,在此不再赘述。

本发明请求保护的代码审查服务同步装置通过监听代码仓库的代码变更情况,当代码仓库发生变化时,通知代码审查端去拉取代码仓库中发生变更的代码,对发生变更的代码进行审查后发送到代码仓库,实现了代码仓库和代码审查服务器的代码同步,避免了代码仓库本身有新提交的代码时,代码审查软件代码审查的代码落后于代码仓库,导致不能审查直接提交到代码仓库的代码,代码仓库的安全性差的问题。

作为本发明实施例一个可选实施方式,该代码审查服务同步装置还包括:

创建模块,用于当接收到代码仓库发送的组创建事件时,向代码审查服务器发送组创建请求,以使得代码审查服务器根据组创建请求创建与代码仓库中的组对应的组。具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

作为本发明实施例一个可选实施方式,组创建请求携带有:第一组名称和第二组名称,第一组名称对应的组的权限与第二组名称对应的组的权限不同。具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

作为本发明实施例一个可选实施方式,该代码审查服务同步装置还包括:

接收模块,用于当接收到项目创建事件时,向代码审查端发送项目创建请求,以使得代码审查端根据项目创建请求创建项目;具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

克隆模块,用于向代码审查服务器发送代码克隆请求,以使得代码审查服务器根据代码克隆请求从代码仓库中克隆目标项目;具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

配置模块,用于向代码审查服务器发送同步配置信息,使得代码审查服务器在目标项目的同步配置文件中添加同步配置信息。具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

作为本发明实施例一个可选实施方式,该代码审查服务同步装置还包括:

变更模块,用于当接收到权限更新事件时,向代码审查服务器发送用户权限变更请求,以使得代码审查服务器根据用户权限变更请求变更用户权限。具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

作为本发明实施例一个可选实施方式,该代码审查服务同步装置还包括:

存储模块,用于当接收到事件时,将事件发送到预设位置进行存储。具体实现方式见上述实施例中对应的步骤的相关描述,在此不再赘述。

本发明实施例还提供了一种计算机设备,如图3所示,该计算机设备可以包括处理器31和存储器32,其中处理器31和存储器32可以通过总线或者其他方式连接,图3中以通过总线连接为例。

处理器31可以为中央处理器(Central Processing Unit,CPU)。处理器31还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器32作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的代码审查服务同步方法对应的程序指令/模块(例如,图2所示的监听模块21和发送模块22)。处理器31通过运行存储在存储器32中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的代码审查服务同步方法。

存储器32可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器31所创建的数据等。此外,存储器32可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器32可选包括相对于处理器31远程设置的存储器,这些远程存储器可以通过网络连接至处理器31。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器32中,当被所述处理器31执行时,执行如图1所示实施例中的代码审查服务同步方法。

上述计算机设备具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。

虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号