CN111752572B - 编译方法、装置、设备及存储介质 - Google Patents
编译方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111752572B CN111752572B CN202010605315.4A CN202010605315A CN111752572B CN 111752572 B CN111752572 B CN 111752572B CN 202010605315 A CN202010605315 A CN 202010605315A CN 111752572 B CN111752572 B CN 111752572B
- Authority
- CN
- China
- Prior art keywords
- source code
- characteristic information
- target file
- code
- information
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Abstract
本申请公开了编译方法、装置、设备及存储介质,涉及云计算领域、编译处理领域。具体实现方案为:确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件;解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息;基于所述发布特征信息,得到所述源代码的存储特征信息;利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。如此,来解决现有中央编码仓库下载到的源代码的版本与所需要的源代码的版本不匹配的问题,提升了开发效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及云计算领域、编译处理领域。
背景技术
代码工程的架构趋势是代码模块化,组件化;随着工程规模增大,代码数量的增加,代码库优化为一个中央编码仓库和众多子编码仓库;现有代码工程中,默认中央编码仓库只引用子编码仓库的二进制编译产物,不引用源代码,只有在需要子编码仓库的源代码参与编译时才会下载子编码仓库的源代码。但是,现有方案下载子编码仓库的源代码时,通常下载的为最新版本,这样,可能导致下载到的版本与中央编码仓库需要进行编译的版本不匹配,导致编译失败,或未达到预期效果。
发明内容
本申请提供了一种用于编译方法、装置、设备以及存储介质。
根据本申请的一方面,提供了一种编译方法,包括:
确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件;
解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息;
基于所述发布特征信息,得到所述源代码的存储特征信息;
利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。
根据本申请的另一方面,提供了一种编译装置,包括:
描述信息确定单元,用于确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件;
发布信息解析单元,用于解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息;
存储信息获取单元,用于基于所述发布特征信息,得到所述源代码的存储特征信息;
源代码获取单元,用于利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。
根据本申请的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上所述的方法。
根据本申请的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行以上所述的方法。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。
根据本申请的技术解决了现有中央编码仓库下载到的源代码的版本与所需要的源代码的版本不匹配的问题,提升了开发效率。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请第一实施例的示意图;
图2是根据本申请第二实施例的示意图;
图3是根据本申请第三实施例的示意图;
图4是根据本申请实施例在一具体场景下的示意图一;
图5是根据本申请实施例在一具体场景下的示意图二;
图6是根据本申请实施例的编译装置的结构示意图;
图7是用来实现本申请实施例的编译方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请方案提供一种编译方法,如图1所示,包括:
步骤S101:确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件。
步骤S102:解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息。
步骤S103:基于所述发布特征信息,得到所述源代码的存储特征信息。
步骤S104:利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。
这样,由于本申请方案能够利用目标文件的描述信息,得到所述目标文件对应的子编码组件发布该目标文件对应源代码的发布特征信息,并基于该发布特征信息得到该目标文件对应源代码的存储特征信息,如此,获取到与目标文件的描述信息相匹配的源代码,使得中央编码组件至少利用获取到的所述源代码完成编译任务,所以,解决了现有中央编码仓库下载到的源代码的版本与所需要的源代码的版本不匹配的问题,提升了开发效率。
同时,本申请方案也避免了开发人员手动来确定中央编码组件所需的源代码的位置,也避免了由于手动失误而导致的编译错误的问题,提升了编译成功率,同时,也提升了开发效率,为降低开发成本奠定了基础。尤其当中央编码组件需要获取多个子编码组件的源代码的场景,本申请方案自动化获取相匹配的源代码的优势更加突出。
这里,本申请方案所述的编译指利用编译程序从源语言编写的源程序(也即源代码)产生目标程序的过程。
本申请方案中,中央编码组件可以对应一个或至少两个子编码组件,而且,能够调用子编码组件中的源代码或者源代码对应的目标文件,如此,为快速进行代码编译,或代码最后和封装奠定了基础。当然,实际应用中,中央编码组件和子编码组件中并非直接存储有源代码或目标文件,只记录有源代和目标文件的标识,而该源代码和目标文件均存储在外部设备中,如代码服务器等。
在一示例中,所述描述信息中包含有发布所述目标文件对应的源代码的发布特征信息,如版本信息等,或者,该描述信息即为目标文件的发布特征信息,此时,由于目标文件与源代码具有对应关系,即为源代码转换后得到的,所以,两者的发布特征信息也具有关联关系,比如相同;如此,便于基于所述目标文件对应的版本信息,去获取与该版本信息相匹配的源代码,为解决现有中央编码仓库下载到的源代码的版本与所需要的源代码的版本不匹配的问题奠定了基础,进而为提升开发效率奠定了基础。
实际应用中,所述存储特征信息可以包含有源代码的代码标识,如此,便于唯一指示出该源代码;而且,还可以包含有源代码的存储地址,如此,便于获取到该源代码。
在一示例中,所述目标文件可以具体为基于源代码转换得到的二进制码,实际应用中,比如,Android代码工程中,所述中央编码组件中对应的代码均为二进制码,并非源代码,因此,若中央编码组件想到进行代码编译时,需要获取自身对应的二进制码的源代码,如此,才能完成代码编译过程。相应地,所述源代码为任意编码语言所对应的开发代码,如为Android代码工程中开发人员所使用语言对应的代码。
在本申请方案的一具体示例中,如图2所示,为便于后续中央编码组件能够准确获取到相匹配的源代码,本示例在进行源代码发布时即记录该源代码的发布特征信息与存储特征信息,以及两者之间的关联关系;也就是说,在步骤S101之前,还包括:
步骤201:检测到所述子编码组件触发的发布指令。
步骤202:将所述发布指令对应的所述源代码进行发布,并生成发布特征信息。
步骤203:基于所述发布特征信息,将所述源代码存储于外部设备,并得到存储特征信息。
步骤204:将所述发布特征信息和所述存储特征信息建立关联关系。
这里,由于建立有源代码的发布特征信息和存储特征信息之间的关联关系,所以,步骤103可基于该已经建立的关联关系得到与所述源代码的发布特征信息相匹配的该源代码的存储特征信息,进而为准确获取到源代码奠定了基础;而且,上述流程简单,改动成本低,所以,为大规模工程化应用奠定了基础。
在本申请方案的一具体示例中,所述发布特征信息至少包含有发布版本信息。如此,便于准确记录不同时期、不同版本的源代码,为精准查找到中央编码组件所需的源代码奠定了基础。而且,该记载方式简单,可兼容性强,为大规模工程化应用、降低开发成本、提升开发效率奠定了基础。
在本申请方案的一具体示例中,在发布所述源代码时,还会将所述源代码转换为机器语言存储的目标文件,同时,一并将源代码和目标文件进行发布,并存储于外部设备中,步骤S202之后,还包括:
将所述源代码转换为机器语言,得到所述目标文件,将所述目标文件进行发布;基于所述发布特征信息(即所述源代码的发布特征信息)将所述目标文件存储于外部设备。这里,当目标文件存储于外部设备后,与源文件类似,也会记录该目标文件的存储特征信息,如此,便于中央编码组件获取到目标文件进行代码组合和封装。
需要说明的是,由于所述目标文件与所述源代码为不同语言存储的相同功能的代码,所以,目标文件的发布特征信息与所述源代码的发布特征信息可以相同,即两者使用同一版本记录规则,以及同一版本进行记录。
而且,在一示例中,发布目标文件的步骤可以在发布源代码的步骤之后执行,即检测到所述子编码组件触发的发布指令,将所述发布指令对应的所述源代码进行发布,并生成发布特征信息;然后,将所述源代码转换为机器语言,得到所述目标文件,将所述目标文件进行发布,并基于所述发布特征信息,将所述源代码和所述目标文件存储于外部设备,并分别得到所述源代码与目标文件各自的存储特征信息,如存储位置、代码标识等。此时,建立的关联关系即可对应为所述发布特征信息与所述源代码的存储特征信息、以及与所述目标文件的存储特征信息,即三者的关联关系。或者,在另一示例中,所述源代码和目标文件同时发布,即子编码组件在确定源代码编辑完成后,将所述源代码转换为机器语言,得到所述目标文件,然后,触发发布指令,此时,将所述发布指令对应的源代码和目标文件进行同步发布,生成发布特征信息,并基于发布特征信息将所述源代码和目标文件分别存储于外部设备中,得到各自对应的存储特征信息。
在本申请方案的一具体示例中,所述中央编码组件利用所述子编码组件中所编辑的源代码转换后得到的目标文件完整代码组合和封装。也就是说,所述中央编码组件能够直接调用子编码组件中编辑的源代码转换后的目标文件,如此,来实现快速代码组合和封装,丰富了应用范围。
在本申请方案的一具体示例中,为了中央编码组件能够快速有效进行代码编译,在得到存储特征信息即步骤S103之后,如图3所示,还会执行如下步骤:
步骤S104-1:确定指定地址;
步骤S104-2:将获取到的所述源代码下载并存储至所述指定地址,使得所述中央编码组件利用所述指定地址存储的所述源代码完成编译任务。
这样,使得待编译的源代码能够下载到指定地址,为中央编码组件对获取到的源代码进行继续编译奠定了基础。而且,由于能够将待下载的源代码存储到指定位置,所以使得本申请方案编译过程更加灵活,可操作空间更强。
这样,由于本申请方案能够利用目标文件的描述信息,得到所述目标文件对应的子编码组件发布该目标文件对应源代码的发布特征信息,并基于该发布特征信息得到该目标文件对应源代码的存储特征信息,如此,获取到与目标文件的描述信息相匹配的源代码,使得中央编码组件至少利用获取到的所述源代码完成编译任务,所以,解决了现有中央编码仓库下载到的源代码的版本与所需要的源代码的版本不匹配的问题,提升了开发效率。
同时,本申请方案也避免了开发人员手动来确定中央编码组件所需的源代码的位置,也避免了由于手动失误而导致的编译错误的问题,提升了编译成功率,同时,也提升了开发效率,为降低开发成本奠定了基础。尤其当中央编码组件需要获取多个子编码组件的源代码的场景,本申请方案自动化获取相匹配的源代码的优势更加突出。
以下结合具体示例对本申请方案做进一步详细说明;该示例以Android代码工程中利用git编译组件进行代码编译为例;现在git编译过程中,若中央编码仓库(以下简称中央仓库)所需进行编译的源代码并非对应为子编码仓库(以下简称子仓库)的最新版本,此时,若按照默认方式进行下载,则下载的版本必然不匹配,所以,现有只能通过手动去找到所需的版本,然后手动设置去下载,显然,降低了开发效率,而且,引入了由于手动误操作而导致最终编译错误的风险。基于此,本示例提供一种方案能够自动完成子仓库的源代码的下载,且确保下载到的为中央仓库所需的版本,这样,使开发过程中无需关注版本问题而导致编译失败的问题,提高了开发效率。
这里,需要说明的是,本示例中中央仓库对应一个或多个子仓库,该中央仓库和子仓库为逻辑划分。
具体方案如下:
首先,中央仓库默认引用子仓库的二进制码编译产物(该二进制码是源代码转换后得到的),每一个被引用的二进制码在中央仓库都有对应的版本号,如图4所示,中央仓库对应app引用三个子仓库的二进制码,且对应的版本号分别为:A1.1.1、B1.0.2、C2.1.3。
其次,每个子仓库的二进制编译产物在存储(也即发布)时不仅仅会存储二进制码本身,还会存储一个记录与其依赖关系的文件,即POM文件。子仓库发布二进制码时,会生成二进制码对应的一个版本号,同时在对应的POM文件中写入当前发布的二进制码对应的代码标识如commitId信息,利用该commitId信息能够获取到该二进制码对应的源代码。如此,中央仓库即可基于代码标识、版本号等关联信息匹配得到所需版本的源代码,为后续顺利完成编译任务奠定了基础。
最后,中央仓库默认使用子仓库的二进制码,当希望使用子仓库的源代码时,获取POM文件,并解析出commitId信息,并新指定一个远端不存在的分支名(也即指定地址);基于如下命令来拉取发布的二进制码所对应源代码:
切换到指定分支,即git checkout-b${指定分支};
回滚到发布时提交git reset--hard${commitId}。
如图5所示,中央仓库引用子仓库A的版本为1.1.1,发布时的commitId是88ee,而子仓库A master的最新提交是83re;此时,若使用git clone时默认拉取master的源代码,就会出现中央仓库和子仓库A中83re的源代码一起编译,因为在88ee和83re之间可能有很多代码调整,且这些调整可能与当前中央仓库代码不兼容。因此,利用本申请方案能够指定一个新分支,并获取发布二进制码时的commitId,也就是88ee。如此,切换到新分支后,执行git reset,将当前分支的代码回滚到指定commitId节点,即实现reset到88ee。
这样,中央仓库代码即可与子仓库A中版本88ee的源代码一起编译,完成编译任务,该流程节约了开发时间,提升了开发效率,也避免了由于手动误操作而导致最终编译错误的风险。
根据本申请的实施例,本申请还提供了一种编译装置,如图6所示,包括:
描述信息确定单元61,用于确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件;
发布信息解析单元62,用于解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息;
存储信息获取单元63,用于基于所述发布特征信息,得到所述源代码的存储特征信息;
源代码获取单元64,用于利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。
在本申请方案的一具体示例中,还包括:
检测单元,用于检测到所述子编码组件触发的发布指令;
发布单元,用于将所述发布指令对应的所述源代码进行发布,并生成发布特征信息;
存储单元,用于基于所述发布特征信息将所述源代码存储于外部设备,并得到存储特征信息;
关联关系建立单元,用于将所述发布特征信息与所述存储特征信息建立关联关系。
在本申请方案的一具体示例中,所述发布特征信息至少包含有发布版本信息。
在本申请方案的一具体示例中,包括:代码转换单元;其中,
所述代码转换单元,用于将所述源代码转换为机器语言,得到所述目标文件;
所述发布单元,还用于将所述目标文件进行发布;
所述存储单元,还用于基于所述发布特征信息将所述目标文件存储于外部设备。
在本申请方案的一具体示例中,其中,所述中央编码组件利用所述子编码组件中所编辑的源代码转换后得到的目标文件完整代码组合和封装。
在本申请方案的一具体示例中,还包括:地址确定单元;其中,
所述地址确定单元,用于确定指定地址;
所述源代码获取单元,还用于将获取到的所述源代码下载并存储至所述指定地址,使得所述中央编码组件利用所述指定地址存储的所述源代码完成编译任务。
这里,需要说明的是,本申请方案所述的中央编码组件和子编码组件,在实际应用中,可以为逻辑单元,而非物理单元。当然,也可以具体为物理硬件,此时,本申请方案所述的编译装置即为集成有该中央编码组件和子编码组件的装置。另外,本申请方案所述的装置还可以在云服务器上运行,即本申请方案能够运行于云服务器上。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
如图7所示,是根据本申请实施例的编译方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图7所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器701为例。
存储器702即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的编译方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的编译方法。
存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的编译方法对应的程序指令/模块(例如,附图6所示的描述信息确定单元61、发布信息解析单元62、存储信息获取单元63以及源代码获取单元64)。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的编译方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据编译方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至编译方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
编译方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图7中以通过总线连接为例。
输入装置703可接收输入的数字或字符信息,以及产生与编译方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与虚拟专用服务器(VPS)服务中,存在的管理难度大,业务扩展性弱的缺陷。
这样,由于本申请方案能够利用目标文件的描述信息,得到所述目标文件对应的子编码组件发布该目标文件对应源代码的发布特征信息,并基于该发布特征信息得到该目标文件对应源代码的存储特征信息,如此,获取到与目标文件的描述信息相匹配的源代码,使得中央编码组件至少利用获取到的所述源代码完成编译任务,所以,解决了现有中央编码仓库下载到的源代码的版本与所需要的源代码的版本不匹配的问题,提升了开发效率。
同时,本申请方案也避免了开发人员手动来确定中央编码组件所需的源代码的位置,也避免了由于手动失误而导致的编译错误的问题,提升了编译成功率,同时,也提升了开发效率,为降低开发成本奠定了基础。尤其当中央编码组件需要获取多个子编码组件的源代码的场景,本申请方案自动化获取相匹配的源代码的优势更加突出。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (12)
1.一种编译方法,包括:
确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件;
解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息,其中,所述发布特征信息至少包含有发布版本信息;
基于所述源代码发布时记录的所述发布特征信息与所述源代码的存储特征信息之间的关联关系,得到所述发布特征信息对应的存储特征信息;
利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。
2.根据权利要求1所述的方法,还包括:
检测到所述子编码组件触发的发布指令;
将所述发布指令对应的所述源代码进行发布,并生成发布特征信息;
基于所述发布特征信息,将所述源代码存储于外部设备,并得到存储特征信息;
将所述发布特征信息与所述存储特征信息建立关联关系。
3.根据权利要求2所述的方法,还包括:
将所述源代码转换为机器语言,得到所述目标文件,将所述目标文件进行发布;
基于所述发布特征信息将所述目标文件存储于外部设备。
4.根据权利要求1所述的方法,其中,所述中央编码组件利用所述子编码组件中所编辑的源代码转换后得到的目标文件完整代码组合和封装。
5.根据权利要求1所述的方法,还包括:
确定指定地址;
将获取到的所述源代码下载并存储至所述指定地址,使得所述中央编码组件利用所述指定地址存储的所述源代码完成编译任务。
6.一种编译装置,包括:
描述信息确定单元,用于确定中央编码组件中目标文件的描述信息,其中,所述目标文件为子编码组件中编辑的源代码转换为机器语言后被所述中央编码组件所调取的代码文件;
发布信息解析单元,用于解析所述描述信息,得到所述目标文件对应的所述子编码组件发布所述源代码的发布特征信息,其中,所述发布特征信息至少包含有发布版本信息;
存储信息获取单元,用于基于所述源代码发布时记录的所述发布特征信息与所述源代码的存储特征信息之间的关联关系,得到所述发布特征信息对应的存储特征信息;
源代码获取单元,用于利用所述存储特征信息获取所述源代码,使得所述中央编码组件至少利用获取到的所述源代码完成编译任务。
7.根据权利要求6所述的装置,还包括:
检测单元,用于检测到所述子编码组件触发的发布指令;
发布单元,用于将所述发布指令对应的所述源代码进行发布,并生成发布特征信息;
存储单元,用于基于所述发布特征信息将所述源代码存储于外部设备,并得到存储特征信息;
关联关系建立单元,用于将所述发布特征信息与所述存储特征信息建立关联关系。
8.根据权利要求7所述的装置,包括:代码转换单元;其中,
所述代码转换单元,用于将所述源代码转换为机器语言,得到所述目标文件;
所述发布单元,还用于将所述目标文件进行发布;
所述存储单元,还用于基于所述发布特征信息将所述目标文件存储于外部设备。
9.根据权利要求6所述的装置,其中,所述中央编码组件利用所述子编码组件中所编辑的源代码转换后得到的目标文件完整代码组合和封装。
10.根据权利要求6所述的装置,还包括:地址确定单元;其中,
所述地址确定单元,用于确定指定地址;
所述源代码获取单元,还用于将获取到的所述源代码下载并存储至所述指定地址,使得所述中央编码组件利用所述指定地址存储的所述源代码完成编译任务。
11.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010605315.4A CN111752572B (zh) | 2020-06-29 | 2020-06-29 | 编译方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010605315.4A CN111752572B (zh) | 2020-06-29 | 2020-06-29 | 编译方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752572A CN111752572A (zh) | 2020-10-09 |
CN111752572B true CN111752572B (zh) | 2023-03-14 |
Family
ID=72677996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010605315.4A Active CN111752572B (zh) | 2020-06-29 | 2020-06-29 | 编译方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752572B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783508B (zh) * | 2021-02-01 | 2022-05-24 | 北京百度网讯科技有限公司 | 文件的编译方法、装置、设备以及存储介质 |
CN113010180A (zh) * | 2021-03-12 | 2021-06-22 | 山东英信计算机技术有限公司 | 一种固件生成方法、系统、设备以及介质 |
CN116009851A (zh) * | 2022-12-20 | 2023-04-25 | 浙江凌骁能源科技有限公司 | 目标模型集成与发布方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630569A (zh) * | 2015-12-17 | 2016-06-01 | 北京金山安全软件有限公司 | 一种软件源代码的处理方法、装置及电子设备 |
CN105653287A (zh) * | 2015-12-31 | 2016-06-08 | 北京元心科技有限公司 | 一种程序自动版本发布方法和装置 |
CN105912379A (zh) * | 2016-04-01 | 2016-08-31 | 青岛海信电器股份有限公司 | 一种编译任务管理方法及编译任务管理装置 |
CN107656739A (zh) * | 2017-11-07 | 2018-02-02 | 北京奇安信科技有限公司 | 基于windows系统的代码编译方法及装置 |
CN110058860A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | 一种代码自动交付方法、装置、设备及计算机存储介质 |
CN111124478A (zh) * | 2019-12-19 | 2020-05-08 | 杭州迪普科技股份有限公司 | 版本管理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929125B2 (en) * | 2017-12-28 | 2021-02-23 | Microsoft Technology Licensing, Llc | Determining provenance of files in source code projects |
-
2020
- 2020-06-29 CN CN202010605315.4A patent/CN111752572B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630569A (zh) * | 2015-12-17 | 2016-06-01 | 北京金山安全软件有限公司 | 一种软件源代码的处理方法、装置及电子设备 |
CN105653287A (zh) * | 2015-12-31 | 2016-06-08 | 北京元心科技有限公司 | 一种程序自动版本发布方法和装置 |
CN105912379A (zh) * | 2016-04-01 | 2016-08-31 | 青岛海信电器股份有限公司 | 一种编译任务管理方法及编译任务管理装置 |
CN107656739A (zh) * | 2017-11-07 | 2018-02-02 | 北京奇安信科技有限公司 | 基于windows系统的代码编译方法及装置 |
CN110058860A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | 一种代码自动交付方法、装置、设备及计算机存储介质 |
CN111124478A (zh) * | 2019-12-19 | 2020-05-08 | 杭州迪普科技股份有限公司 | 版本管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111752572A (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752572B (zh) | 编译方法、装置、设备及存储介质 | |
EP3377968B1 (en) | Dynamic update of an application in compilation and deployment | |
CN111666206B (zh) | 变更代码的影响范围的获取方法、装置、设备及存储介质 | |
CN111080243A (zh) | 业务处理的方法、装置、系统、电子设备及存储介质 | |
CN111984476B (zh) | 测试方法和装置 | |
CN111124420B (zh) | 编译方法、装置、电子设备及可读存储介质 | |
KR20210110530A (ko) | 딥 러닝에 기반한 연산자 등록 처리 방법, 장치 및 전자 기기 | |
EP3418918A1 (en) | Generation and graphical display of data transform provenance metadata | |
WO2017087801A1 (en) | Dynamic update of an application in compilation and deployment | |
CN110543297A (zh) | 用于生成源码的方法和装置 | |
CN111144839A (zh) | 一种项目构建方法、持续集成系统及终端设备 | |
CN112148272A (zh) | 工程组件化开发中配置共享的方法、装置、设备及介质 | |
CN112463256A (zh) | 确定配置文件的方法、系统、电子设备及存储介质 | |
CN111949272A (zh) | 寄宿应用的编译优化方法、装置、电子设备及可读存储介质 | |
CN111111201B (zh) | 一种基于游戏的技能创建方法、装置、服务器及介质 | |
US20160253157A1 (en) | Software refactoring | |
CN111563253B (zh) | 智能合约运行方法、装置、设备及存储介质 | |
CN112214416A (zh) | 调试小程序的方法、装置、电子设备和存储介质 | |
CN115080113A (zh) | 项目代码检测方法和装置、可读存储介质、电子设备 | |
CN111459924A (zh) | 数据采集方法、系统、电子设备和介质 | |
CN113220561A (zh) | 一种测试用例管理方法、装置、设备及介质 | |
CN111274127A (zh) | 代码评审中的代码跳转方法、装置、设备和介质 | |
CN114661274A (zh) | 用于生成智能合约的方法和装置 | |
US9389838B2 (en) | Method for creating a computer software compiler for client server computing | |
CN111831317A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |