首页> 中国专利> 软件开发中的代码编译方法、装置和计算机可读存储介质

软件开发中的代码编译方法、装置和计算机可读存储介质

摘要

本申请实施例涉及计算机技术领域,公开了一种软件开发中的代码编译方法、装置和计算机可读存储介质,该方法包括:根据预设的第一验证规则对通过审查工具获取到的修改代码进行第一验证;对通过所述第一验证的修改代码进行第二验证,所述第二验证包括bug状态验证;将通过所述第二验证的修改代码合入到代码库中存储的当前代码中,并对合入后的代码进行编译;在所述合入后的代码编译成功的情况下,将所述合入后的代码存入所述代码库,从而大幅缩短了代码编译过程耗费的时间,有效提升了软件开发效率。

著录项

  • 公开/公告号CN115934104A

    专利类型发明专利

  • 公开/公告日2023-04-07

    原文格式PDF

  • 申请/专利权人 重庆芯讯通无线科技有限公司;

    申请/专利号CN202211739690.3

  • 发明设计人 杨涛;张平;

    申请日2022-12-30

  • 分类号G06F8/41(2018.01);G06F8/71(2018.01);

  • 代理机构上海晨皓知识产权代理事务所(普通合伙) 31260;

  • 代理人成丽杰

  • 地址 401336 重庆市南岸区茶园新区世纪大道99号

  • 入库时间 2023-06-19 19:14:59

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-04-07

    公开

    发明专利申请公布

说明书

技术领域

本申请实施例涉及计算机技术领域,特别涉及一种软件开发中的代码编译方法、装置和计算机可读存储介质。

背景技术

持续集成交付(Continuous integration/Continuous delivery,简称:CI/CD)是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法,作为一个面向开发和运营团队的解决方案,CI/CD主要针对解决在集成新代码时所引发的问题。团队开发成员会经常提交修改,通常每个成员每天都会至少提交一次修改,这也就意味着每天可能会发生多次集成。每次集成都需要通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。这个过程可以大大减少集成的问题,即代码集成到主干分支之前,必须通过代码审核、自动化测试,只要有一个测试用例失败,就不能集成。因此使用CI/CD可以让产品快速迭代,同时还能保持高质量。

然而,持续集成交付中,代码编译是不可缺少的一步,但代码编译流程用时较长,涉及软件配置管理系统(Software configuration management,简称:SCM)的多个手动操作,这导致软件开发节奏变缓,没有办法满足软件开发的高效率迭代的需求。

发明内容

本申请实施例的目的在于提供一种软件开发中的代码编译方法、装置和计算机可读存储介质,大幅缩短了代码编译过程耗费的时间,有效提升了软件开发效率。

为解决上述技术问题,本申请的实施例提供了一种软件开发中的代码编译方法,包括以下步骤:根据预设的第一验证规则对通过审查工具获取到的修改代码进行第一验证;对通过所述第一验证的修改代码进行第二验证,所述第二验证包括bug状态验证;将通过所述第二验证的修改代码合入到代码库中存储的当前代码中,并对合入后的代码进行编译;在所述合入后的代码编译成功的情况下,将所述合入后的代码存入所述代码库。

本申请的实施例还提供了一种代码编译装置,包括:审查工具、bug状态比对工具、SCM系统、编译工具和代码库;所述审查工具用于获取修改代码,根据预设的第一验证规则对所述修改代码进行第一验证,并将通过所述第一验证的修改代码发送至所述bug状态比对工具;所述bug状态比对工具用于对所述通过所述第一验证的修改代码进行第二验证,并将通过所述第二验证的修改代码发送至所述SCM系统,所述第二验证包括bug状态验证;所述SCM系统用于将通过所述第二验证的修改代码合入到所述代码库存储的当前代码中,并将合入后的代码发送至所述编译工具;所述编译工具用于对所述合入后的代码进行编译;所述SCM系统还用于在所述合入后的代码编译成功的情况下,将所述合入后的代码存入所述代码库。

本申请的实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的软件开发中的代码编译方法。

本申请的实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的软件开发中的代码编译方法。

本申请的实施例提供的软件开发中的代码编译方法、装置和计算机可读存储介质,通过审查工具获取修改代码,根据预设的第一验证规则对通过审查工具获取到的修改代码进行第一验证,若所述修改代码通过第一验证,则对通过第一验证的修改代码进行包括bug状态验证的第二验证,随后将通过第二验证的修改代码合入到当前代码中,并对合入后的代码进行编译,在合入后的代码编译成功的情况下,将合入后的代码存入代码库。考虑到业内通用的软件开发中的代码编译方法,代码编译流程用时较长,任何问题均需要等到编译过程结束才进行失败提示,这导致软件开发节奏变缓、软件开发的时间较长,而本申请的实施例,通过审查工具获取修改代码,在编译前进行两次验证,保证修改代码基本正确,再进行编译决定是否将修改代码入库,可以大幅缩短代码编译过程,有效提升了软件开发的效率。

另外,若所述修改代码未通过所述第一验证,或者通过所述第一验证修改代码未通过所述第二验证,所述方法还包括:生成第一退回信息,将所述修改代码和所述第一退回信息一并退回给所述修改代码的提交方。在修改代码未通过第一验证,或者通过第一验证的修改代码未通过第二验证的情况下,说明修改代码无法使用,此时及时退回无法使用修改代码,并给出修改代码的提交方以退回原因,可以进一步加快开发节奏。

另外,在所述对合入后的代码进行编译之后,所述方法还包括:若所述合入后的代码编译失败,则生成第二退回信息,将所述合入后的代码和所述第二退回信息一并退回给所述修改代码的提交方。

另外,在所述对合入后的代码进行编译之前,所述方法还包括:获取所述修改代码对应的编译脚本信息;所述对合入后的代码进行编译,包括:根据所述编译脚本信息对应的编译脚本,对所述目标版本的代码进行编译。对不同的修改使用相应的编译脚本进行编译,可以进一步节省编译过程耗费的时间。

另外,所述审查工具为gerrit工具,所述对通过所述第一验证的修改代码进行第二验证由jira工具实现。

另外,在所述将所述合入后的代码存入所述代码库之后,所述方法还包括:获取项目需求信息和输入参数;根据所述项目需求信息和所述输入参数,从所述代码库中获取目标版本的代码,对所述目标版本的代码进行编译,并在所述编译成功的情况下,发布所述目标版本的代码。可以提升软件发布的效率,进一步提升用户的使用体验。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。

图1是本申请的一个实施例提供的软件开发中的代码编译方法的流程图一;

图2是本申请的另一个实施例提供的软件开发中的代码编译方法的流程图二;

图3是本申请的另一个实施例提供的代码编译装置的示意图一;

图4是本申请的另一个实施例提供的代码编译装置的示意图二;

图5是本申请的另一个实施例提供的电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

本申请的一个实施例涉及一种软件开发中的代码编译方法,应用于电子设备,其中,电子设备可以为终端或服务器,本实施例以及以下各个实施例中电子设备以服务器为例进行说明。下面对本实施例的软件开发中的代码编译方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。

本实施例的软件开发中的代码编译方法的具体流程可以如图1所示,包括:

步骤101,根据预设的第一验证规则对通过审查工具获取到的修改代码进行第一验证。

在具体实现中,服务器通过审查工具进行持续获取,审查工具可以获取各开发人员的修改代码,也就是开发人员在完成修改代码后,提交至审查工具中。审查工具中存储有预设的第一验证规则,服务器获取到修改代码后,可以根据预设的第一验证规则对修改代码进行第一验证。第一验证可以为基础性的验证,如验证语法错误、拼写错误等。预设的第一验证规则可以由本领域的技术人员根据实际需要进行设置。

在一些例子中,第一验证规则可以由经验丰富的开发人员制定。

在一些例子中,经验丰富的开发人员也可以随时登录审查工具,对其他开发人员提交上来的修改代码进行审查。

在一些例子中,审查工具可以为gerrit工具。

步骤102,对通过第一验证的修改代码进行第二验证,第二验证包括bug状态验证。

在具体实现中,若修改代码通过第一验证,即修改代码没有基础性问题,服务器随即对通过第一验证的修改代码进行第二验证,第二验证包括bug状态验证,修改代码实际上是修正原始代码中存在的bug,修改代码中附带有修改信息,修改信息包括该修改代码修正了哪些bug,该修改代码的预期结果是什么,以及该修改代码的自测试结果是什么等,服务器进行的bug状态验证即查验修改代码中是否已对存在的bug进行修正。

在一些例子中,对通过第一验证的修改代码进行第二验证由jira工具实现,jira工具中集成有bug比对系统。

在一些例子中,若修改代码未通过第一验证,服务器则可以直接将修改代码退回给对应的开发人员。

步骤103,将通过第二验证的修改代码合入到代码库中存储的当前代码中,并对合入后的代码进行编译。

在具体实现中,服务器确定修改代码通过第二验证后,可以将通过第二验证的修改代码合入到代码库中存储的当前代码中,并对合入后的代码进行编译。

在一些例子中,编译过程可以由Jenkins工具实现。

在一些例子中,若修改代码未通过第二验证,服务器则可以直接将修改代码退回给对应的开发人员。

步骤104,在合入后的代码编译成功的情况下,将合入后的代码存入代码库。

在具体实现中,如果合入后的代码预编译成功,服务器可以将合入后的代码存入代码库,至此,一个持续集成过程完成,服务器可以进入下一个持续集成过程。

在一些例子中,如果合入后的代码编译失败,服务器则可以直接将修改代码退回给对应的开发人员。

本实施例,通过审查工具获取修改代码,根据预设的第一验证规则对通过审查工具获取到的修改代码进行第一验证,若所述修改代码通过第一验证,则对通过第一验证的修改代码进行包括bug状态验证的第二验证,随后将通过第二验证的修改代码合入到当前代码中,并对合入后的代码进行编译,在合入后的代码编译成功的情况下,将合入后的代码存入代码库。考虑到业内通用的软件开发中的代码编译方法,代码编译流程用时较长,任何问题均需要等到编译过程结束才进行失败提示,这导致软件开发节奏变缓、软件开发的时间较长,而本申请的实施例,通过审查工具获取修改代码,在编译前进行两次验证,保证修改代码基本正确,再进行编译决定是否将修改代码入库,可以大幅缩短代码编译过程,有效提升了软件开发的效率。

本申请的另一个实施例涉及一种软件开发中的代码编译方法,下面对本实施例的软件开发中的代码编译方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。本实施例的软件开发中的代码编译方法的具体流程可以如图2所示,包括:

步骤201,根据预设的第一验证规则对通过审查工具获取到的修改代码进行第一验证。

步骤202,判断修改代码是否通过第一验证,如果是,执行步骤203,否则,直接执行步骤205。

步骤203,对修改代码进行第二验证。

步骤204,判断修改代码是否通过第二验证,如果是,执行步骤206,否则,直接执行步骤205。

步骤205,生成第一退回信息,将修改代码和第一退回信息一并退回给修改代码的提交方。

步骤206,将修改代码合入到代码库中存储的当前代码中,并对合入后的代码进行编译。

步骤207,判断合入后的代码编译是否成功,如果是,执行步骤208,否则,直接执行步骤209。

步骤208,将合入后的代码存入代码库。

步骤209,生成第二退回信息,将合入后的代码代码和第二退回信息一并退回给修改代码的提交方。

本实施例,在修改代码未通过第一验证,或者通过第一验证的修改代码未通过第二验证的情况下,说明修改代码无法使用,此时及时退回无法使用修改代码,并给出修改代码的提交方以退回原因,可以进一步加快开发节奏。在合入后的代码编译失败的情况下,说明合入后的代码存在问题,服务器则生成第二退回信息,并将合入后的代码退回给修改代码的提交方,进一步加快开发节奏。

在一些实施例中,服务器在将合入后的代码存入代码库之后,还可以获取项目需求信息和输入参数;根据项目需求信息和输入参数,从代码库中获取目标版本的代码,对目标版本的代码进行编译,并在编译成功的情况下,发布目标版本的代码,可以有效提升软件开发的速度。

在一些例子中,项目需求信息包括版本号信息和编译脚本信息,服务器从代码库中获取目标版本的代码,是根据版本号信息,从代码库中获取的。服务器在对目标版本的代码进行编译时,使用编译脚本信息对应的编译脚本,对目标版本的代码进行编译,可以进一步节省编译过程耗费的时间,进一步提升软件开发的速度。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本申请的另一个实施例涉及一种代码编译装置,下面对本实施例的代码编译装置的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,本实施例的代码编译装置的示意图可以如图3所示,包括审查工具401、bug状态比对工具402、SCM系统403、编译工具404和代码库405。

审查工具401用于获取修改代码,根据预设的第一验证规则对修改代码进行第一验证,并将通过第一验证的修改代码发送至bug状态比对工具402。

bug状态比对工具402用于对通过第一验证的修改代码进行第二验证,并将通过第二验证的修改代码发送至SCM系统403,第二验证包括bug状态验证。

SCM系统403用于将通过第二验证的修改代码合入到代码库405存储的当前代码中,并将合入后的代码发送至编译工具404。

编译工具404用于对合入后的代码进行编译。

SCM系统403还用于在合入后的代码编译成功的情况下,将合入后的代码存入代码库405。

在一个例子中,代码编译装置的示意图可以如图4所示,代码编译装置还包括退回模块406。

退回模块406用于在修改代码未通过第一验证,或者通过第一验证修改代码未通过第二验证的情况下,生成第一退回信息,将修改代码和第一退回信息一并退回给修改代码的提交方。

退回模块406还用于在合入后的代码编译失败的情况下,生成第二退回信息,将合入后的代码和第二退回信息一并退回给修改代码的提交方。

值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。

本申请另一个实施例涉及一种电子设备,如图5所示,包括:至少一个处理器501;以及,与所述至少一个处理器501通信连接的存储器502;其中,所述存储器502存储有可被所述至少一个处理器501执行的指令,所述指令被所述至少一个处理器501执行,以使所述至少一个处理器501能够执行上述各实施例中的软件开发中的代码编译方法。

其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本申请另一个实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称:ROM)、随机存取存储器(Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号