一种代码编译方法、计算机装置及计算机可读存储介质与流程

文档序号:16854929发布日期:2019-02-12 23:09阅读:121来源:国知局
一种代码编译方法、计算机装置及计算机可读存储介质与流程

本发明涉及代码编译领域,尤其涉及一种代码编译方法、实现这种方法的计算机装置以及计算机可读存储介质。



背景技术:

软件程序通常由大量的代码构成,因此软件程序的研发过程往往是由程序员编写代码。随着软件程序的升级、更新,程序员需要不断地对代码进行更新,并且提交新的代码。代码编写完毕后,还需要测试人员对代码进行测试,以确保代码能够正确的运行,并且实现预期的功能。而测试人员在测试代码之前,必须先对代码进行编译,生成可执行文件、脚本或程序包。

对代码进行测试时,首先需要在一台测试使用的计算机上配置编译所需要的运行环境,传统的做法是搭建一台编译服务器,该服务器可以是一台计算机,并且在服务器上配置编译环境,然后对代码进行编译。由于软件程序所使用的开发语言众多,每种语言都要配置各自的编译环境,为了编译软件程序创建一套新的编译环境时,需要大量的工作来安装配置不同语言的编译工具和依赖库,导致配置测试运行环境的工作量非常大。

而针对不同的语言所开发的代码,测试人员需要配置相对应的测试环境,导致测试效率低下。另一方面,一旦配置好测试环境的计算机运行出现异常,则需要使用另一台计算机进行测试,此时往往需要在新的计算机上配置相同的测试环境,测试环境的配置工作需要重新执行,花费较长的时间。



技术实现要素:

本发明的主要目的是提供一种减少测试时配置环境搭建工作的代码编译方法。

本发明的另一目的是提供一种能够实现上述代码编译方法的计算机装置。

本发明的再一目的是提供一种能够实现上述代码编译方法的计算机可读存储介质。

为了实现上述的主要目的,本发明提供的代码编译方法包括获取编译镜像文件,应用编译镜像文件创建一个编译容器文件,将待编译的代码导入编译容器文件;编译容器文件运行编译指令,对待编译的代码进行编译,并生成编译结果。

由上述方案可见,对代码进行编译时,获取一个编译镜像文件,使用编译镜像文件创建一个编译容器文件,使用编译容器文件对待编译的代码进行编译。这样,对代码进行编译前不需要花费较长时间配置测试环境,而只需要通过编译镜像文件生成一个编译容器文件即可,由于编译容器文件已经包含有编译所需要的测试环境,测试人员可以直接在编译容器文件上执行编译指令即可。

这样,即使测试过程中测试使用的计算机出现故障,也能够快速的更换另一台计算机并且在短时间内继续执行测试,而不需要等待很长的时间进行测试环境的配置,大大提升代码测试的效率。

一个优选的方案是,编译容器文件运行编译指令前,还执行:获取当前的环境变量,根据所获取的环境变量设定编译指令。

由此可见,通过获取当前计算机系统的环境变量,可以由测试人员自行定义编译指令,从而满足不同测试人员的个性化需求,提高测试的便利性。

进一步的方案是,获取当前的环境变量,根据所获取的环境变量设定编译指令包括:从系统获取环境变量的返回值,如返回值为预设的返回值,则使用默认编译指令作为设定的编译指令。

可见,编译容器文件预设存储有默认的编译指令,当系统的环境变量返回值表示没有测试人员自定义的编译指令时,可以使用默认的编译指令进行编译操作,确保编译的顺利进行。

更进一步的方案是,编译容器文件运行编译指令前,执行预设的启动脚本,启动脚本中存储有默认编译指令。

由此可见,将默认的编译指令存储在启动脚本中,可以确保编译容器文件启动后能够快速的查找到默认编译指令。

更进一步的方案是,获取编译镜像文件包括:从编译镜像文件仓库中获取与待编译代码相匹配的编译镜像文件。

可见,通过编译镜像文件仓库预先存储多个编译镜像文件,尤其是针对不同的语言所对应的编译镜像文件,或者是针对不同的测试环境的编译镜像文件,这样,测试人员需要进行测试时,可以根据代码开发语言不同或者测试环境的不同,选择所需要的编译镜像文件,大大方便代码编译工作的进行。

更进一步的方案是,编译镜像文件仓库设置于本地计算机存储器或者设置于远程网络服务器。

由于编译镜像文件仓库可以设置在本地计算机存储,即形成私有的编译镜像文件仓库,只供特定的测试人员使用,例如只供企业内部使用。或者,编译镜像文件仓库可以设置在远程服务器,这样可以提供给公众使用,或者提供给远程的测试人员使用,提高测试的便利性。

更进一步的方案是,编译镜像文件仓库存储有多个编译镜像文件,镜像文件仓库所存储的每一编译镜像文件均被预先设定并存储于编译镜像仓库。

由此可见,测试人员只需要针对一种代码开发语言配置一次测试环境,并且形成一个编译镜像文件后,即可以将该编译镜像文件上传至编译镜像文件仓库并且后续直接使用该编译镜像文件创建编译容器文件,从而避免测试环境的重复配置,提高测试效率。

更进一步的方案是,设定编译镜像文件包括:使用预设代码语言的运行环境镜像作为基础镜像文件,在基础镜像文件中设定编译指令的工作目录、待编译代码的导入目录,并设置启动脚本。

由此可见,测试人员可以使用一个基础镜像文件设定编译镜像文件,尤其是针对一种特定语言所开发的基础镜像文件,然后对基础镜像文件进行适当的修改,即可以形成所需要的编译镜像文件,编译镜像文件的制作简单、方便。

为了实现上述的另一目的,本发明还提供的计算机装置包括处理器以及存储器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述的代码编译方法的各个步骤。

为了实现上述的再一目的,本发明还提供的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述代码编译方法的各个步骤。

附图说明

图1是应用本发明代码编译方法的终端设备、服务器的示意图。

图2是本发明代码编译方法实施例的流程图。

以下结合附图及实施例对本发明作进一步说明。

具体实施方式

本发明的代码编译方法应用在计算机等终端设备上,并且用于对程序员所开发的软件程序的代码进行编译等测试工作。因此,本发明的计算机装置可以是个人计算机等终端设备,也可以是平板电脑或者其他具有代码编译功能的设备,计算机可读存储介质可以是具有数据存储功能的各种存储介质,包括但不限于flash、eeprom等非易失性存储器。

代码编译方法实施例:

应用本实施例的代码编译方法的终端设备可以是台式计算机、平板电脑等便终端设备,当然,也可以是其他具有代码编译、测试功能的设备。参见图1,用于对代码进行测试的计算机30可以连接至一个远程网络服务器20,例如通过英特网进行连接。

远程网络服务器20具有处理器以及存储器,存储器上存储有多个编译镜像文件,因此,远程网络服务器20上相当于设置了一个编译镜像文件仓库21,在编译镜像文件仓库21内存储有多个编译镜像文件22、23、24等,其中,每一个编译镜像文件可以是针对不同的语言的编译镜像文件,例如编译镜像文件22是针对java的编译镜像文件,而编译镜像文件23是针对c++的编译镜像文件。此外,不同的编译镜像文件可以是针对不同测试环境的编译镜像文件,本发明并不对此进行限制。

测试人员可以从远程网络服务器20上下载所需要的编译镜像文件,并且在本地的计算机30上应用获取的编译镜像文件创建一个编译容器文件32,优选的,编译容器文件32是基于docker的编译容器文件,测试人员可以将待编译代码33导入到编译容器文件32并通过运行编译容器文件32的指令来完成对代码的编译。

远程网络服务器20所存储的多个编译镜像文件可以预先设定,例如测试人员预先通过另一台计算机10制作编译镜像文件22,然后通过网络将制作好的编译镜像文件22上传至远程网络服务器20,并且将制作的编译镜像文件22保存在编译镜像文件仓库21中。优选的,编译镜像文件仓库21所存储的每一个编译镜像文件都均有自己唯一的标识,例如具有唯一的名称、编码或者编号等,且该标识能够清楚的标记该编译镜像文件所针对的语言或者测试环境,以便于测试人员可以快速的通过编译镜像文件的标识来了解编译镜像文件所针对的测试语言、测试环境等,方便测试人员快速的选择所需要下载的编译镜像文件。

下面结合图2介绍代码编译方法。本实施例的主要构思是,测试人员首先在一台计算机上制作一个编译镜像文件,将制作好的编译镜像文件存储在一个编译镜像文件仓库中。当测试人员需要对代码进行编译时,可以使用另一台计算机从编译镜像文件仓库中获取一个编译镜像文件,然后使用该编译镜像文件创建一个编译容器文件,使用该编译容器文件对待编译的代码进行编译。

因此,本实施例首先需要制作编译镜像文件,例如,首先执行步骤s1,使用预设代码语言的运行环境作为基础镜像文件,生成编译镜像文件。本实施例是基于docker项目的编译方法,其中docker是一个开源的应用容器引擎,让开发者可以打包所编辑的应用程序的代码,并且可以对代码进行编译等工作。因此,制作编译镜像文件的计算机上需要运行有docker软件。

步骤s1是依据一个语言的运行环境镜像,例如针对java或者c++等语言,通过镜像文件创建volume指令设定代码挂载目录,通过workdir指令设定编译指令工作目录,通过entrypoint指令来设定启动脚本。其中,上述的workdir指令、volume指令以及entrypoint指令都是dokcer软件用于创建镜像的指令。代码挂载目录是待编译代码所存储的路径,编译指令工作目录是编译指令存储的路径,启动脚本存储有默认的编译指令。因此,在制作编译镜像文件时,需要编辑一个启动脚本。

具体的,测试人员可以使用预设代码语言的运行环境镜像作为基础镜像文件,在该基础镜像文件中设定编译指令的工作目录、待编译代码的导入目录,并设置启动脚本,从而生成所需要的编译镜像文件。例如使用java语言的某一个设定好的运行环境作为基础镜像文件,然后在该基础镜像文件中设定编译指令的工作目录、待编译代码的导入目录,并且编辑一个启动脚本,这样即编辑生成一个编译镜像文件。

本实施例中,启动脚本可以通过环境变量buildcommand来获取测试人员自定义的编译指令,因此,当编译镜像文件所创建的编译容器文件执行时,可以执行默认的指令编译。

生成编译镜像文件以后,执行步骤s2,将编译镜像文件传输至编译镜像文件仓库。本实施例中,编译镜像文件仓库设置在一个远程网络服务器上,因此,计算机需要通过网络与远程网络服务器连接并且进行通信,从而将编译镜像文件上传至远程网络服务器。当然,编译镜像文件仓库不一定是设置在远程网络服务器上,可以是设置在企业内部的服务器上,此时,可以通过企业内部的局域网将编译镜像文件传输至内部的服务器,并且存储在编译镜像文件仓库中。

可选的,直接在生成编译镜像文件的计算机上设置一个编译镜像文件仓库,即编译镜像文件仓库就存储在计算机的本地存储器上,因此,在生成编译镜像文件以后,只需要将所生成的编译镜像文件存储在指定的文件夹即可。

当测试人员需要对开发出来的代码进行测试时,例如需要执行编译操作时,执行步骤s3,从编译镜像文件仓库中获取一个编译镜像文件。由于编译镜像文件参考中存储有多个编译镜像文件,每一个编译镜像文件对应于不同的开发语音或者不同的测试环境,因此,测试人员需要待编译的代码的开发语言,以及所希望的测试环境,选择对应的编译镜像文件。

将所选择的编译镜像文件下载到测试使用的计算机以后,执行步骤s4,应用所获取的编译镜像文件创建一个编译容器文件。例如,使用编译镜像文件创建一个docker编译容器文件,然后将待编译的代码文件导入所创建的编译容器文件。然后,启动编译容器文件,例如运行启动脚本。

在编译容器文件启动以后,需要通过编译指令来对待编译的代码进行编译。编译指令可以使用启动脚本包含的默认的编译指令,也可以使用测试人员自定义的编译指令,因此,本实施例中需要通过获取环境变量来确定是否需要使用默认编译指令进行编译。因此,启动编译容器文件以后,执行步骤s5,从系统中获取环境变量的返回值,启动脚本将获取环境变量的参数,并且接收返回值buildcommand值,根据返回值的结果来执行不同的编译指令。

从系统获取环境变量的返回值以后,执行步骤s6,判断该返回值是否为预设的返回值,例如预设的值为空,即没有任何返回数据。因此,当获取的环境变量buildcommand的值返回值为空时,则判断结果为是,执行步骤s8,否则,执行步骤s7。

例如,当环境变量的返回值为空,则执行步骤s8,编译容器文件执行默认的编译指令,例如mvncleancompile指令等。当返回值不为空时,则表示测试人员自定义设定编译指令,则执行步骤s7,根据环境变量获取用户自定义设定的编译指令。

当然,如果编译容器文件获取返回值失败,则打印错误信息,并通过设定exitcode为非0值表示编译失败。

最后,执行步骤s9,利用步骤s7或者步骤s8所确定的编译指令对待编译的代码进行编译,并且生成编译结果,编译结果可以是代码通过编译,或者代码编译过程中出现的报错等,测试人员可以根据编译结果执行相应的处理,例如更改代码中的错误。

可见,本发明使用docker容器技术,在对代码进行编译的过程中,对编译所需要的计算机环境要求降至最低,仅需要编译使用的计算机上安装docker软件即可实现多种编程语言代码的编译要求。例如,在敏捷开发环境中,应用本发明的方案后,只需要创建一次编译镜像文件,即可实现对dev、test或者demo环境的编译环境配置,实现dev、test或者demo环境的代码编译。

即使在编译过程中一台计算机出现故障,只要编译镜像文件存储与另一台计算机或者网络上,测试人员都可以从另一台计算机或者网络上获取编译镜像文件,从而在新的计算机上创建编译容器文件,可以快速的执行编译操作,而不需要在新的计算机上执行测试环境的配置,提高代码的测试效率。

计算机装置实施例:

本实施例的计算机装置包括有处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,例如用于实现上述代码编译方法的计算机程序。处理器执行计算机程序时实现上述代码编译方法的各个步骤。

例如,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明的各个模块。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。

需要说明的是,终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,本发明的示意图仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备还可以包括输入输出设备、网络接入设备、总线等。

本发明所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。

存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

计算机可读存储介质:

服务器所集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个代码编译方法的各个步骤。

其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化,例如,编译镜像文件针对的语言的改变,或者编译镜像文件仓库设置方式的改变等,这样的改变不影响本发明的实施,也应该包括在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1