CN107168758A - 多代码库的代码编译检查方法及装置 - Google Patents

多代码库的代码编译检查方法及装置 Download PDF

Info

Publication number
CN107168758A
CN107168758A CN201710237151.2A CN201710237151A CN107168758A CN 107168758 A CN107168758 A CN 107168758A CN 201710237151 A CN201710237151 A CN 201710237151A CN 107168758 A CN107168758 A CN 107168758A
Authority
CN
China
Prior art keywords
code
compiling
compiler
server
type
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
Application number
CN201710237151.2A
Other languages
English (en)
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201710237151.2A priority Critical patent/CN107168758A/zh
Publication of CN107168758A publication Critical patent/CN107168758A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开是关于一种多代码库的代码编译检查方法及装置,该方法包括:在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,根据所述代码所提交分支确定所述代码所覆盖的各机型;根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;将编译消息分别发送至所述各机型对应的各编译服务器;接收所述各机型对应的各编译服务器返回的编译结果消息,在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,向所述管理服务器发送编译检查成功消息,通知所述代码编译检查成功。该技术方案可以对各代码库的代码进行编译检查。

Description

多代码库的代码编译检查方法及装置
技术领域
本公开涉及终端技术领域,尤其涉及多代码库的代码编译检查方法及装置。
背景技术
由于终端操作***的复杂性,***代码可能会存储在不同的代码库中,在此情况下,若要对不同代码库内的代码进行编译检查,终端可以使用不同的编译***分别对不同的代码库进行独立的代码编译检查。
发明内容
本公开实施例提供多代码库的代码编译检查方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种多代码库的代码编译检查方法,包括:
在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
根据所述代码所提交分支确定所述代码所覆盖的各机型;
根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
本公开的实施例提供的技术方案可以包括以下有益效果:本实施例可以对不同代码库的代码进行编译检查,对于多用户提交不同代码的情况,也可以使用上述方法以多线程的方式工作,满足大量多用户并发操作,简化对多源代码进行代码编译检查的流程,节省编译检查服务器资源,减轻编译检查***管理员的工作复杂性。
在一个实施例中,所述方法还包括:
在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
本公开的实施例提供的技术方案可以包括以下有益效果:本实施例可以在各机型对应的编译服务器返回的编译结果消息中有通知编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,以通知开发人员在该代码编译检查失败后更改该代码。
在一个实施例中,在向所述管理服务器发送编译检查成功消息后,所述方法还包括:
向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
本公开的实施例提供的技术方案可以包括以下有益效果:本实施例可以向各编译服务器发送代码更新消息,通知编译服务器更新所述代码的状态,提高终端***底层、中层和上层代码库的稳定性,减少编译失败影响开发进度,并且节省了服务器资源和减少了编译检查***的维护工作量。
在一个实施例中,所述编译检查成功消息中携带有代码的相关信息。
本公开的实施例提供的技术方案可以包括以下有益效果:本实施例可以在编译检查成功消息中携带代码的相关信息,向管理服务器指示编译检查成功的代码。
在一个实施例中,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
本公开的实施例提供的技术方案可以包括以下有益效果:本实施例可以在编译结果消息中携带代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息,使得服务器能够确定哪段代码编译检查成功。
根据本公开实施例的第二方面,提供一种多代码库的代码编译检查装置,包括:
获取模块,用于在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
确定模块,用于根据所述代码所提交分支确定所述代码所覆盖的各机型;
创建模块,用于根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
第一发送模块,用于将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收模块,用于接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
第二发送模块,用于在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
在一个实施例中,所述装置还包括:
第三发送模块,用于在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
在一个实施例中,所述装置还包括:
第四发送模块,用于在向所述管理服务器发送编译检查成功消息后,向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
在一个实施例中,所述编译检查成功消息中携带有代码的相关信息。
在一个实施例中,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
根据本公开实施例的第三方面,提供一种多代码库的代码编译检查装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
根据所述代码所提交分支确定所述代码所覆盖的各机型;
根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种多代码库的代码编译检查方法的流程图。
图2是根据一示例性实施例示出的一种多代码库的代码编译检查方法的流程图。
图3是根据一示例性实施例示出的一种多代码库的代码编译检查方法的流程图。
图4是根据一示例性实施例示出的一种多代码库的代码编译检查装置的框图。
图5是根据一示例性实施例示出的一种多代码库的代码编译检查装置的框图。
图6是根据一示例性实施例示出的一种多代码库的代码编译检查装置的框图。
图7是根据一示例性实施例示出的一种多代码库的代码编译检查装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
终端若是分别对不同的代码库进行独立的代码编译检查,虽然可以解决对不同源的代码起到检查的作用,但是相应的会增加额外的编译服务器资源,造成资源浪费,也会增加编译检查***维护人员的维护复杂性。
为了解决上述问题,本实施例可以使用同一套编译检查***来对不同代码库的代码进行检查,在监听到用户向管理服务器提交代码时,不管该代码是属于哪个代码库的代码,服务器都获取该代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;根据所述代码所提交分支确定所述代码所覆盖的各机型;根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;将编译消息分别发送至所述各机型对应的各编译服务器,并接收所述各机型对应的各编译服务器返回的编译结果消息,在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功;如此,不管该代码是属于哪个代码库的代码,服务器都可以按照上述方法对该代码进行编译检查,对于多用户提交不同代码的情况,也可以使用上述方法以多线程的方式工作,满足大量多用户并发操作,简化对多源代码进行代码编译检查的流程,节省编译检查服务器资源,减轻编译检查***管理员的工作复杂性。
图1是根据一示例性实施例示出的一种多代码库的代码编译检查方法的流程图,如图1所示,该多代码库的代码编译检查方法用于服务器等设备中,包括以下步骤101-104:
在步骤101中,在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支。
在步骤102中,根据所述代码所提交分支确定所述代码所覆盖的各机型。
在步骤103中,根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务。
在步骤104中,将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码。
在步骤105中,接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功。
在步骤106中,在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
在该实施例中,服务器内设置有监听程序(listener),该监听程序可以负责监听多个管理服务器如:Gerrit_A服务器、Gerrit_B服务器和Gerrit_C服务器。当终端***软件的开发人员在管理服务器上提交了该终端***下的代码时,该监听程序就会被触发,此时,监听程序就会获取触发了监听程序的代码的相关信息以及代码提交到的所述管理服务器的地址信息。
这里,各个开发人员编写该终端***下的代码完成后,就会将编写完成的代码提交到管理服务器,包括Gerrit_A服务器、Gerrit_B服务器、Gerrit_C服务器等多个不同的各个代码库的管理服务器,如果该代码是底层代码库中电话项目(telephony)的alpha分支处的代码,则开发人员会将该代码提交至底层代码库对应的管理服务器-Gerrit_A服务器中电话项目下的alpha分支处,此时,Gerrit_A服务器会为该代码生成相应的代码标识如代码编号1或者代码编号1和代码拥有者(owner),如此,服务器的监听程序就可以监听到开发人员向Gerrit_A服务器中电话项目下的alpha分支处提交了代码编号1的代码,服务器就获取了该代码的标识信息为代码编号1、所属的项目名为电话项目和所提交分支为alpha分支,以及该代码提交到的Gerrit_A服务器的地址信息,这里,管理服务器的地址信息包括管理服务器的域名和端口号。
在该实施例中,服务器的监听程序获取代码的相关信息和该代码提交到的管理服务器的地址信息后,就可以将代码的相关信息和该代码提交到的管理服务器的地址信息以post(post是向服务器提交数据的一种请求的形式)的形式传送给服务器中的控制(controller)服务,控制服务会根据该代码所提交分支即alpha分支,确定所述代码所覆盖的各机型即使用该alpha分支处代码的所有机型:机型1、机型2和机型3。然后,控制服务会根据该代码所属的项目名确定该代码所在的代码库,进而确定出该代码在机型1的编译策略,创建出该代码在机型1中的编译任务1;同理,控制服务也会创建该代码在机型2中的编译任务2,该代码在机型3中的编译任务3。
在该实施例中,服务器中的控制服务创建完成该代码在各机型中的各编译任务后,就会将相应的编译任务携带在编译消息中发送给各机型对应的各编译服务器,即将编译任务1携带在编译消息中发送给机型1对应的编译服务器1中,将编译任务2携带在编译消息中发送给机型2对应的编译服务器2中,将编译任务3携带在编译消息中发送给机型3对应的编译服务器3中。该编译消息中还携带有该代码的相关信息和Gerrit_A服务器的地址信息,这样,编译服务器1就会按照该代码的相关信息和Gerrit_A服务器的地址信息向Gerrit_A服务器发送代码请求消息,请求Gerrit_A服务器将该代码的相关信息即Gerrit_A服务器中电话项目下的alpha分支处代码编号1的代码发送至编译服务器1,编译服务器1获取该代码后,就会按照编译任务1中的编译策略编译Gerrit_A服务器中提交的代码,同理,编译服务器2会按照编译任务2中的编译策略编译Gerrit_A服务器中提交的代码,编译服务器3会按照编译任务3中的编译策略编译Gerrit_A服务器中提交的代码。编译服务器1按照编译任务1中的编译策略编译完成代码后就会向服务器返回编译结果消息,通知该编译任务成功,编译服务器2和编译服务器3编译完成代码后也会向服务器返回编译结果消息,通知该编译任务成功。
在该实施例中,编译服务器返回的编译结果消息均通知编译任务成功时,表明该代码在各个覆盖的机型中都编译检查成功,即该代码编译检查成功,此时,服务器就会根据该Gerrit_A服务器的地址信息向Gerrit_A服务器发送编译检查成功消息,通知该代码编译检查成功;Gerrit_A服务器接收到该代码对应的编译检查成功消息后,就会进行codereview(代码评审)操作+1,为开发人员显示该代码的编译检查成功结果。
本实施例可以使用上述方法对不同代码库的代码进行编译检查,对于多用户提交不同代码的情况,也可以使用上述方法以多线程的方式工作,满足大量多用户并发操作,简化对多源代码进行代码编译检查的流程,节省编译检查服务器资源,减轻编译检查***管理员的工作复杂性。
在一种可能的实施方式中,上述多代码库的代码编译检查方法还可以包括以下步骤A1。
在步骤A1中,在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
在该实施例中,若该代码所覆盖的各机型对应的编译服务器中,有任一编译服务器返回的编译结果消息通知该编译任务失败,或者有任一编译服务器超出预设时间未获取编译结果消息时,则表明该代码在相应机型对应的编译服务器中的编译检查失败,这就表明该代码的编译检查失败,该代码不能使用,此时,服务器就会向根据该Gerrit_A服务器的地址信息向Gerrit_A服务器发送编译检查失败消息,通知该代码编译检查失败;Gerrit_A服务器接收到该代码对应的编译检查失败消息后,就会进行code review(代码评审)操作-2,为开发人员显示该代码的编译检查失败结果,以使开发人员更改该代码。
本实施例可以在各机型对应的编译服务器返回的编译结果消息中有通知编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,以通知开发人员在该代码编译检查失败后更改该代码。
在一可能的实施方式中,在向所述管理服务器发送编译检查成功消息后,上述方法还包括以下步骤B1。
在步骤B1中,向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
在该实施例中,服务器在向管理服务器发送编译检查成功消息时,表明该代码可以在其覆盖的机型中使用,可以进入终端***内,此时为了保证各代码库中代码的编译检查的兼容性,服务器可以向各编译服务器发送代码更新消息,所述代码更新消息用于通知编译服务器更新该代码的状态,如此,在有新的代码要编译检查时,编译服务器就可以在该代码的新状态下,完成对该新代码的编译检查,如此,不管是哪层代码库中代码的更新,编译服务器都会及时地进行状态更新,在该代码的状态下对其它层代码库的新代码进行编译检查,提高终端***底层、中层和上层代码库的稳定性,与现有技术可能发生的上层新代码在上层代码库编译检查成功,但是在刚更新的底层代码状态下可能会发生编译失败相比,减少编译失败影响开发进度,并且节省了服务器资源和减少了编译检查***的维护工作量。
本实施例可以向各编译服务器发送代码更新消息,通知编译服务器更新所述代码的状态,提高终端***底层、中层和上层代码库的稳定性,减少编译失败影响开发进度,并且节省了服务器资源和减少了编译检查***的维护工作量。
在一种可能的实施方式中,所述编译检查成功消息中携带有代码的相关信息。
在本实施例中,服务器根据管理服务器的地址信息向管理服务器发送编译检查成功消息,通知该代码编译检查成功时,该编译检查成功消息中携带有该代码的相关信息,该代码的相关信息中包括所述代码的标识信息、所属的项目名和所提交分支;如此,当管理服务器接收到编译检查成功消息后就可以通过代码的标识信息、所属的项目名和所提交分支确定编译检查成功的是哪个代码,进而向开发人员显示该代码编译检查成功。
本实施例可以在编译检查成功消息中携带代码的相关信息,向管理服务器指示编译检查成功的代码。
在一种可能的实施方式中,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
在本实施例中,服务器接收到的编译结果消息中携带有代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息,如此,服务器就会知道是哪个编译服务器对哪个代码编译是否成功,进而在各机型对应的编译服务器均通知编译任务成功时,通知管理服务器开发人员提交的代码编译检查成功。
示例的,服务器在创建该代码在机型1中的编译任务1,该代码在机型2中的编译任务2,该代码在机型3中的编译任务3时,可以将该代码的相关信息即代码编号1、所属的项目名为电话项目和所提交分支为alpha分支、机型1对应的编译任务1、机型2对应的编译任务2、机型3对应的编译任务3记录在数据库中,并在接收到一编译服务器发送的编译结果消息时,将编译结果消息中携带有所述代码的相关信息和当前编译服务器对应的机型与数据库中记录的信息进行比对,如果代码的相关信息和当前编译服务器对应的机型与数据库中记录的代码编号1、所属的项目名为电话项目和所提交分支为alpha分支相同,且当前编译服务器对应的机型为机型1时,将临时变量count++(自动+1),这里临时变量count初始值为0,当临时变量count的值等于机型数量3时,服务器确定各机型对应的编译服务器返回的编译结果消息是否均通知所述编译任务成功,只有3个机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,服务器才会向管理服务器发送编译检查成功消息,通知该代码编译检查成功。
本实施例可以在编译结果消息中携带代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息,使得服务器能够确定哪段代码编译检查成功。
下面通过几个实施例详细介绍实现过程。
图2是根据一示例性实施例示出的一种多代码库的代码编译检查方法的流程图,如图2所示,该方法可以由服务器等设备实现,包括步骤201-207。
在步骤201中,在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支。
在步骤202中,根据所述代码所提交分支确定所述代码所覆盖的各机型。
在步骤203中,根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务。
在步骤204中,将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码。
在步骤205中,接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
在步骤206中,在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功,所述编译检查成功消息中携带有代码的相关信息。
在步骤207中,在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
图3是根据一示例性实施例示出的一种多代码库的代码编译检查方法的流程图,如图3所示,该方法可以由服务器等设备实现,包括步骤301至307。
在步骤301中,在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支。
在步骤302中,根据所述代码所提交分支确定所述代码所覆盖的各机型。
在步骤303中,根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务。
在步骤304中,将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码。
在步骤305中,接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
在步骤306中,在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功,所述编译检查成功消息中携带有代码的相关信息。
在步骤307中,向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图4是根据一示例性实施例示出的一种多代码库的代码编译检查装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,该多代码库的代码编译检查装置包括:获取模块401、确定模块402、创建模块403、第一发送模块404、接收模块405和第二发送模块406;其中:
获取模块401,用于在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
确定模块402,用于根据所述代码所提交分支确定所述代码所覆盖的各机型;
创建模块403,用于根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
第一发送模块404,用于将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收模块405,用于接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
第二发送模块406,用于在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
作为一种可能的实施例,上述公开的多代码库的代码编译检查装置还可以被配置成包括第三发送模块407,图5是涉及上述多代码库的代码编译检查装置的框图,其中:
第三发送模块407,用于在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
作为一种可能的实施例,上述公开的多代码库的代码编译检查装置还可以被配置成包括第四发送模块408,图6是涉及上述多代码库的代码编译检查装置的框图,其中:
第四发送模块408,用于在向所述管理服务器发送编译检查成功消息后,向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
作为一种可能的实施例,上述公开的多代码库的代码编译检查装置中,所述编译检查成功消息中携带有代码的相关信息。
作为一种可能的实施例,上述公开的多代码库的代码编译检查装置中,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种多代码库的代码编译检查装置的框图,该装置适用于服务器。装置700包括处理组件711,其进一步包括一个或多个处理器,以及由存储器712所代表的存储器资源,用于存储可由处理组件711的执行的指令,例如应用程序。存储器712中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件711被配置为执行指令,以执行上述方法。
装置700还可以包括一个电源组件713被配置为执行装置700的电源管理,一个有线或无线网络接口714被配置为将装置700连接到网络,和一个输入输出(I/O)接口715。装置700可以操作基于存储在存储器712的操作***,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
该非临时性计算机可读存储介质,当所述存储介质中的指令由装置700的处理器执行时,使得装置700能够执行上述多代码库的代码编译检查装置,所述方法包括:
在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
根据所述代码所提交分支确定所述代码所覆盖的各机型;
根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
所述存储介质中的指令还可以包括:
所述方法还包括:
在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
所述存储介质中的指令还可以包括:
在向所述管理服务器发送编译检查成功消息后,所述方法还包括:
向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
所述存储介质中的指令还可以包括:
所述编译检查成功消息中携带有代码的相关信息。
所述存储介质中的指令还可以包括:
所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
一种多代码库的代码编译检查装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
根据所述代码所提交分支确定所述代码所覆盖的各机型;
根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
所述处理器还可以被配置为:
所述方法还包括:
在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
所述处理器还可以被配置为:
在向所述管理服务器发送编译检查成功消息后,所述方法还包括:
向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
所述处理器还可以被配置为:
所述编译检查成功消息中携带有代码的相关信息。
所述处理器还可以被配置为:
所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (11)

1.一种多代码库的代码编译检查方法,其特征在于,包括:
在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
根据所述代码所提交分支确定所述代码所覆盖的各机型;
根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
3.根据权利要求1所述的方法,其特征在于,在向所述管理服务器发送编译检查成功消息后,所述方法还包括:
向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
4.根据权利要求1所述的方法,其特征在于,所述编译检查成功消息中携带有代码的相关信息。
5.根据权利要求1中所述的方法,其特征在于,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
6.一种多代码库的代码编译检查装置,其特征在于,包括:
获取模块,用于在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
确定模块,用于根据所述代码所提交分支确定所述代码所覆盖的各机型;
创建模块,用于根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
第一发送模块,用于将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收模块,用于接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
第二发送模块,用于在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三发送模块,用于在所述各机型对应的编译服务器返回的编译结果消息中有通知所述编译任务失败或超出预设时间未获取编译结果消息时,向所述管理服务器发送编译检查失败消息,所述编译检查失败消息用于表明所述代码编译检查失败。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第四发送模块,用于在向所述管理服务器发送编译检查成功消息后,向各编译服务器发送代码更新消息,所述代码更新消息用于通知所述编译服务器更新所述代码的状态。
9.根据权利要求6所述的装置,其特征在于,所述编译检查成功消息中携带有代码的相关信息。
10.根据权利要求6所述的装置,其特征在于,所述编译结果消息中携带有所述代码的相关信息,当前编译服务器对应的机型以及编译成功与否的标识信息。
11.一种多代码库的代码编译检查装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在监听到用户向管理服务器提交代码时,获取所述代码的相关信息和所述代码提交到的所述管理服务器的地址信息,其中,所述代码的相关信息包括所述代码的标识信息、所属的项目名和所提交分支;
根据所述代码所提交分支确定所述代码所覆盖的各机型;
根据所述代码所属的项目名,创建所述代码在所述各机型中的各编译任务;
将编译消息分别发送至所述各机型对应的各编译服务器,其中,所述编译消息中携带有对应的编译任务以及所述代码的相关信息、所述管理服务器的地址信息,用于指示所述编译服务器按照所述编译任务中的编译策略编译所述管理服务器中提交的所述代码;
接收所述各机型对应的各编译服务器返回的编译结果消息,所述编译结果消息用于通知所述编译任务是否成功;
在所述各机型对应的编译服务器返回的编译结果消息均通知所述编译任务成功时,根据所述管理服务器的地址信息向所述管理服务器发送编译检查成功消息,所述编译检查成功消息用于通知所述代码编译检查成功。
CN201710237151.2A 2017-04-12 2017-04-12 多代码库的代码编译检查方法及装置 Pending CN107168758A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710237151.2A CN107168758A (zh) 2017-04-12 2017-04-12 多代码库的代码编译检查方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710237151.2A CN107168758A (zh) 2017-04-12 2017-04-12 多代码库的代码编译检查方法及装置

Publications (1)

Publication Number Publication Date
CN107168758A true CN107168758A (zh) 2017-09-15

Family

ID=59849189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710237151.2A Pending CN107168758A (zh) 2017-04-12 2017-04-12 多代码库的代码编译检查方法及装置

Country Status (1)

Country Link
CN (1) CN107168758A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255493A (zh) * 2018-01-09 2018-07-06 武汉斗鱼网络科技有限公司 组件发布与编译方法、存储介质、电子设备及***
CN109558318A (zh) * 2018-11-23 2019-04-02 北京车和家信息技术有限公司 一种代码管理方法和代码仓库分布式***
CN109582316A (zh) * 2018-11-15 2019-04-05 北京深思数盾科技股份有限公司 一种跨平台编译方法、装置、***、服务器及存储介质
CN110688112A (zh) * 2019-09-25 2020-01-14 上海创功通讯技术有限公司 多项目共线开发代码的自动入库的方法及***
CN112486567A (zh) * 2020-11-30 2021-03-12 上海瑞家信息技术有限公司 代码的合并请求发送方法、装置、电子设备及存储介质
CN112637086A (zh) * 2020-12-11 2021-04-09 苏州浪潮智能科技有限公司 一种基于模块自动化编译的通信方法、***及介质
CN113342323A (zh) * 2021-06-29 2021-09-03 银清科技有限公司 软件在线开发的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290581A (zh) * 2008-05-16 2008-10-22 北京星网锐捷网络技术有限公司 编译***及方法
US20120284719A1 (en) * 2011-05-03 2012-11-08 Microsoft Corporation Distributed multi-phase batch job processing
CN106095522A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现分布式编译的方法和分布式编译***
CN106406971A (zh) * 2016-09-26 2017-02-15 杭州迪普科技有限公司 一种代码文件的编译方法及装置
CN106445581A (zh) * 2016-08-30 2017-02-22 宁波方太厨具有限公司 一种终端设备的软件发布管理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290581A (zh) * 2008-05-16 2008-10-22 北京星网锐捷网络技术有限公司 编译***及方法
US20120284719A1 (en) * 2011-05-03 2012-11-08 Microsoft Corporation Distributed multi-phase batch job processing
CN106095522A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现分布式编译的方法和分布式编译***
CN106445581A (zh) * 2016-08-30 2017-02-22 宁波方太厨具有限公司 一种终端设备的软件发布管理方法
CN106406971A (zh) * 2016-09-26 2017-02-15 杭州迪普科技有限公司 一种代码文件的编译方法及装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255493A (zh) * 2018-01-09 2018-07-06 武汉斗鱼网络科技有限公司 组件发布与编译方法、存储介质、电子设备及***
CN109582316A (zh) * 2018-11-15 2019-04-05 北京深思数盾科技股份有限公司 一种跨平台编译方法、装置、***、服务器及存储介质
CN109558318A (zh) * 2018-11-23 2019-04-02 北京车和家信息技术有限公司 一种代码管理方法和代码仓库分布式***
CN109558318B (zh) * 2018-11-23 2022-03-29 北京车和家信息技术有限公司 一种代码管理方法和代码仓库分布式***
CN110688112A (zh) * 2019-09-25 2020-01-14 上海创功通讯技术有限公司 多项目共线开发代码的自动入库的方法及***
CN112486567A (zh) * 2020-11-30 2021-03-12 上海瑞家信息技术有限公司 代码的合并请求发送方法、装置、电子设备及存储介质
CN112486567B (zh) * 2020-11-30 2024-06-14 上海瑞家信息技术有限公司 代码的合并请求发送方法、装置、电子设备及存储介质
CN112637086A (zh) * 2020-12-11 2021-04-09 苏州浪潮智能科技有限公司 一种基于模块自动化编译的通信方法、***及介质
CN112637086B (zh) * 2020-12-11 2022-12-27 苏州浪潮智能科技有限公司 一种基于模块自动化编译的通信方法、***及介质
CN113342323A (zh) * 2021-06-29 2021-09-03 银清科技有限公司 软件在线开发的方法及装置
CN113342323B (zh) * 2021-06-29 2024-03-29 银清科技有限公司 软件在线开发的方法及装置

Similar Documents

Publication Publication Date Title
CN107168758A (zh) 多代码库的代码编译检查方法及装置
CN108595157B (zh) 区块链数据的处理方法、装置、设备和存储介质
US8151248B1 (en) Method and system for software defect management
CN106603264A (zh) 一种定位故障根源的方法和设备
US20090249308A1 (en) Efficient Encoding of Instrumented Data in Real-Time Concurrent Systems
CN109146081B (zh) 一种用于机器学习平台中创建模型项目的方法及装置
CN112433944A (zh) 业务测试方法、装置、计算机设备和存储介质
CN108491254A (zh) 一种数据仓库的调度方法及装置
CN108920139B (zh) 一种程序生成方法、装置、***、电子设备及存储介质
US20080244233A1 (en) Machine cluster topology representation for automated testing
CN109933520A (zh) 软件开发测试方法、装置、计算机装置及存储介质
CN109614312A (zh) 测试用例生成方法、装置、电子设备及存储介质
CN102486749A (zh) 数据驱动测试方法及***
CN113163011A (zh) 区块链中修改数据的方法、***、设备及存储介质
US8661305B2 (en) Method and system for test vector generation
Kapur et al. A software up-gradation model with testing effort and two types of imperfect debugging
CN114968816A (zh) 基于数据模拟的策略测试方法、装置、设备及存储介质
CN112506802B (zh) 测试数据的管理方法及***
CN111625330A (zh) 跨线程的任务处理方法、装置、服务器及存储介质
CN114896164A (zh) 接口优化方法、装置、电子设备及存储介质
CN113282504A (zh) 一种增量代码覆盖率检测方法及业务开发方法、装置
CN111090420A (zh) 基于任务功能线的软件项目管理方法及***
CN111767222A (zh) 数据模型的验证方法、装置、电子设备、存储介质
CN109446103A (zh) 一种CIM Provider测试方法及装置
CN110851344A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20170915

RJ01 Rejection of invention patent application after publication