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

文档序号:23723368发布日期:2021-01-26 14:05阅读:61来源:国知局
一种代码编译方法、装置及计算机可读存储介质与流程

[0001]
本发明涉及计算机领域,特别涉及一种代码编译方法、装置及计算机可读存储介质。


背景技术:

[0002]
在软件产品的研发过程中,每天对于代码的编译是必不可少的。同时,对于每天不断的代码编译,编译环境的稳定性也十分重要。尤其对于大型的软件系统,编译的时间一般都会特别长、所以编译效率、编译问题的发现及编译环境的持续稳定性对产品开发时间和产品质量等都有极大的影响。
[0003]
尤其是编译过程中一旦出现错误就需要对全部代码进行重新编译,严重影响编译效率
[0004]
基于上述问题,需要提出一种可靠性和效率更高的代码编译方法。


技术实现要素:

[0005]
有鉴于此,本发明的目的在于提供一种代码编译方法、装置及计算机可读存储介质,提高可靠性和效率。其具体方案如下:
[0006]
一种代码编译方法,包括:
[0007]
分析代码,得到编译清单;其中,所述编译清单记载了编译所述代码所需的编译参数;
[0008]
根据所述代码的各功能模块,得到多个可自由选择编译的编译模块;
[0009]
接收所述编译参数,校验所述编译参数;
[0010]
若所述编译参数校验失败,则终止编译过程;
[0011]
若所述编译参数校验成功后,则校验编译环境;
[0012]
编译环境校验成功后,对被选中的编译模块进行编译。
[0013]
可选的,所述根据所述代码的各功能模块,得到多个可自由选择编译的编译模块的过程,包括:
[0014]
利用jenkins的extended choice paramiko plugin插件设置复选框,将所述代码的各功能模块,设置成多个可自由选择编译的编译模块。
[0015]
可选的,所述校验所述编译参数的过程,包括:
[0016]
校验所述编译参数的参数格式、范围校验、所述编译参数之间的关联和依赖关系。
[0017]
可选的,所述若所述编译参数校验失败之后,还包括:
[0018]
通过jenkins的ansicolor插件,标识出错误内容并输出到jenkins控制台。
[0019]
可选的,所述校验编译环境的过程,包括:
[0020]
对各编译工具及依赖进行检测;
[0021]
检测磁盘占用空间是否超过预设的存储阈值;
[0022]
如果超过,则按照预设的清理规则清理无用数据。
[0023]
可选的,所述对被选中的编译模块进行编译的过程,包括:
[0024]
将被选中的多个编译模块进行并行编译,得到各编译模块的编译结果;
[0025]
集合各编译模块的编译结果,进行统一编译。
[0026]
可选的,还包括:
[0027]
若任一编译模块编译失败,则终止全部编译过程。
[0028]
可选的,还包括:
[0029]
对编译模块的编译结果进行归档备份,得到备份编译结果;
[0030]
集合各编译模块的编译结果或备份编译结果,进行统一编译。
[0031]
本发明还公开了一种代码编译装置,包括:
[0032]
存储器,用于存储计算机程序;
[0033]
处理器,用于执行所述计算机程序以实现如前述的代码编译方法。
[0034]
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的代码编译方法。
[0035]
本发明中,代码编译方法,包括:分析代码,得到编译清单;其中,编译清单记载了编译代码所需的编译参数;根据代码的各功能模块,得到多个可自由选择编译的编译模块;接收编译参数,校验编译参数;若编译参数校验失败,则终止编译过程;若编译参数校验成功后,则校验编译环境;编译环境校验成功后,对被选中的编译模块进行编译。
[0036]
本发明利用代码自身的功能模块,相应的划分出编译模块,能够实现按照模块对代码进行编译,能够实现中断后继续对未编译的内容继续编译,并且在编译前对编译参数和编译环境进行校验,减少编译过程中因这两项因素导致的编译错误,提高编译系统的稳定性和可靠性。
附图说明
[0037]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0038]
图1为本发明实施例公开的一种代码编译方法流程示意图;
[0039]
图2为本发明实施例公开的另一种代码编译方法流程示意图。
具体实施方式
[0040]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]
本发明实施例公开了一种代码编译方法,参见图1所示,该方法包括:
[0042]
s11:分析代码,得到编译清单。
[0043]
具体的,首选对需要编译的代码进行分析,确认为了编译代码所需的编译参数,即为了编译代码,需要人为输入要将代码编译成何种格式,例如,.dpg格式、.exe格式或.ios
格式等,也会需要代码的功能模块数量、所需编译脚本的数量等等,为了编译代码所需要的基础参数,为此,根据代码,建立编译清单,显示给用户查看,以便后续用户根据编译清单输入相应的编译参数。
[0044]
s12:根据代码的各功能模块,得到多个可自由选择编译的编译模块。
[0045]
具体的,代码在编写之初就可以根据功能划分出多个独立的功能模块,为了后续能供应提高编译的可靠性和效率,为此根据代码的各功能模块,从对代码进行编译的整个编译任务也相应的划分出多个可自由选择编译的编译模块,编译模块对应代码中相应的功能模块的编译任务。
[0046]
具体的,可以利用jenkins的extended choice paramiko plugin插件设置复选框,将代码的各功能模块,设置成多个可自由选择编译的编译模块。
[0047]
s13:接收编译参数,校验编译参数。
[0048]
具体的,在接收到用户输入的编译参数后,校验编译参数,判断编译参数是否存在明显的形式和格式错误,例如,用户输入的编译参数不符合预设的参数格式要求,对参数设置的范围进行范围校验,判断参数设置是否超过合理的范围,编译参数之间的关联和依赖关系是否正确可行,输入的参数是否可读可识别等等项目进行一一校验。
[0049]
s14:若编译参数校验失败,则终止编译过程。
[0050]
具体的,若编译参数校验失败,则直接终止编译过程,即不再继续进行后续步骤进行编译,直至编译参数校验成功后才可以继续进行编译。
[0051]
具体的,因为编译过程的特殊性,为保证编译的准确性,一旦编译出错,出错前的内容也不再使用,只能重新编译,因此,为了避免编译中途因编译参数问题导致编译失败,浪费时间,所以在编译前对编译参数进行校验,确保编译期间不会因编译参数导致编译失败,提高编译的可靠性。
[0052]
s15:若编译参数校验成功后,则校验编译环境。
[0053]
具体的,如果编译参数校验成功,则进一步的对编译环境进行校验,编译环境可以包括编译工具本身和编译工具所运行下的环境。
[0054]
具体的,上述校验编译环境的过程,可以具体包括s151至s153;其中,
[0055]
s151:对各编译工具及依赖进行检测。
[0056]
具体的,首先可以对各编译工具本身的完整性进行检测,判断各编译工具是否完整,是否未受损,可以正常运行,并同时对各编译工具所依赖的操作系统中相关的基础插件进行检测,判断各编译工具是否可以在操作系统中正常运行。其中,编译工具可以包括ruby、jdk和make等工具。
[0057]
s152:检测磁盘占用空间是否超过预设的存储阈值;
[0058]
s153:如果超过,则按照预设的清理规则清理无用数据。
[0059]
可以理解的是,在编译期间需要保存编译结果,因此,为了确保磁盘中有足够的存储空间,检测磁盘占用空间是否超过预设的存储阈值,当超过存储阈值后,对磁盘进行清理,例如,当磁盘占用空间即磁盘中已经使用的存储空间超过80%则可以按照预设的清理规则对无用数据进行清理;其中,清理规则定义无用数据,清理规则可以为将创建时间超过预设时间阈值的文件定为无用数据,例如,将存储超过36小时的数据定义为无用数据,也可以将于编译过程无关的文件进行清除。
[0060]
此外,为了避免与编译相关的数据被误删,还可以建立专门用于保存编译相关数据的文件目录,在清理磁盘时不对该文件目录中的文件清理。
[0061]
可以理解的是,若未超过存储阈值则继续编译,无需进行清理。
[0062]
s16:编译环境校验成功后,对被选中的编译模块进行编译。
[0063]
具体的,在完成所有检验后,可以对被选中的编译模块进行编译,被选中的编译模块可以包括所有编译模块,也可以包括部分编译模块,实现对部分代码进行编译的功能,能够实现部分编译,例如,在先前一次编译过程中,编译过程临时中断或者某一编译模块编译失败,需要再次编译时,可以选中之前未编译完成的编译模块继续进行编译,最后将所有编译完成的模块进行整体编译,完成对代码的全部编译过程。
[0064]
可见,本发明实施例利用代码自身的功能模块,相应的划分出编译模块,能够实现按照模块对代码进行编译,能够实现中断后继续对未编译的内容继续编译,并且在编译前对编译参数和编译环境进行校验,减少编译过程中因这两项因素导致的编译错误,提高编译系统的稳定性和可靠性。
[0065]
本发明实施例公开了一种具体的代码编译方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图2所示,具体的:
[0066]
s201:分析代码,得到编译清单;其中,编译清单记载了编译代码所需的编译参数;
[0067]
s202:根据代码的各功能模块,得到多个可自由选择编译的编译模块;
[0068]
s203:接收编译参数,校验编译参数;
[0069]
s204:若编译参数校验失败,则终止编译过程;
[0070]
s205:通过jenkins的ansicolor插件,标识出错误内容并输出到jenkins控制台。
[0071]
具体的,为了便于用户快速纠正错误,将检测出的错误内容进行标识,例如,可以用红色标识标识出错误内容,并输出到jenkins控制台,以便显示给用户。
[0072]
s206:若编译参数校验成功后,则校验编译环境;
[0073]
s207:编译环境校验成功后,将被选中的多个编译模块进行并行编译,得到各编译模块的编译结果。
[0074]
具体的,由于将编译过程模块化,因此,为了进一步的提高编译效率,可以将被选中的多个编译模块进行并行编译分发到其它服务器或环境进行并行编译,并利用shell的&来将各类模块放在后台编译,使用shell的wait来等待所有编译模块编译完成。
[0075]
s208:集合各编译模块的编译结果,进行统一编译。
[0076]
具体的,最后集合所有编译模块的编译结果进行最后的统一编译,得到对代码的完整的整体编译。
[0077]
s209:若任一编译模块编译失败,则终止全部编译过程。
[0078]
具体的,在编译过程中,若检测到任一编译模块出现编译错误,则终止全部编译过程,可以快速及时的发现编译问题,而不用等待完全编译后才发现问题。
[0079]
s210:对编译模块的编译结果进行归档备份,得到备份编译结果。
[0080]
具体的,在编译过程中对各编译模块的编译结果和版本号、md5值、git代码库的commit等信息进行归档备份,根据备份得到的备份编译结果,下次编译时便可进行增量编译。即上次已经编译过的且没有修改的模块不再进行编译,只去编译有修改的编译模块。其中,可以以编译模块为单位进行备份。
[0081]
s211:集合各编译模块的编译结果或备份编译结果,进行统一编译。
[0082]
具体的,集合新编译的编译模块的编译结果,和之前编译过进行备份的备份编译结果进行统一编译,得到完整的编译结果。
[0083]
具体的,本发明实施例的代码编译方法可以基于jenkins构建。
[0084]
此外,本发明实施例还公开了一种代码编译装置,包括:
[0085]
存储器,用于存储计算机程序;
[0086]
处理器,用于执行计算机程序以实现如前述的代码编译方法。
[0087]
另外,本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述的代码编译方法。
[0088]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0089]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0090]
以上对本发明所提供的技术内容进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1