编译方法、芯片、电子设备及存储介质与流程

未命名 09-18 阅读:120 评论:0


1.本技术涉及计算机技术领域,尤其涉及一种编译方法、芯片、电子设备及存储介质。


背景技术:

2.代码仓库指的是包含一组文件所有历史修改信息的逻辑单位,通常用于保存一个软件产品或某一组件的所有文件信息记录。当开发人员根据某个产品需求或基于某个问题修改完代码后,可以将修改完的代码存入代码仓库中。
3.然而,在将代码存入代码仓库前,需要经过校验编译操作,该校验编译操作通过编译的方式对提交的代码进行校验,以保证该提交代码的质量;也就是说,在代码无差错的情况下,才可以将代码存入代码仓库。上述校验编译的操作可以包括编译、代码扫描和测试等步骤。
4.由于一个仓库的代码可以关联一个或多个项目,且一个项目下又可以包含一个或多个工程。也就是说,一个仓库中的代码的修改可能会影响到多个项目中的不同的工程。为了避免代码提交影响到与其关联的不同的工程,目前的编译需要预先通过人工配置的方式,将与修改代码关联的工程信息输入,当关联工程的编译都成功之后,才可将提交代码存入代码仓库。然而,这种人工的方式效率较低,且不能保证关联工程信息的准确性及完整性,由此可能出现漏编译。


技术实现要素:

5.本技术提供了一种编译方法、芯片、电子设备及存储介质,有助于提高编译的效率。
6.第一方面,本技术提供了一种编译方法,包括:响应于检测到代码的提交,获取历史工程;基于所述历史工程确定不等价工程;获取本次提交代码所属的仓库及主分支,根据本次提交代码所属的仓库及主分支在所述不等价工程中确定关联工程。
7.本技术中,通过分析历史工程,以自动识别关联工程,由此可以提高编译效率。
8.其中一种可能的实现方式中,所述基于所述历史工程确定不等价工程包括:基于所述历史工程所属的主分支及仓库对所述历史工程进行分组;对分组后的历史工程进行编译结果的比较,根据比较结果确定不等价工程。
9.其中一种可能的实现方式中,所述方法还包括:基于所述历史工程确定等价工程;在对本次提交代码进行编译时,删除所述等价工程。
10.其中一种可能的实现方式中,所述基于所述历史工程确定等价工程包括:对所属相同主分支和相同仓库的两个目标历史工程进行编译;若所述两个目标历史工程的成功编译的次数达到预设次数,且无失败次数,所述两个目标历史工程为等价工程。
11.第二方面,本技术提供了一种芯片,包括一个或多个功能模块,所述一个或多个功能模块用于执行如第一方面所述的编译方法。
12.第三方面,本技术提供了一种电子设备,包括:处理器和存储器,所述存储器用于存储计算机程序;所述处理器用于运行所述计算机程序,实现如第一方面所述的编译方法。
13.第四方面,本技术提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机实现如第一方面所述的编译方法。
14.第五方面,本技术提供了一种计算机程序,当上述计算机程序在电子设备的处理器上运行时,使得所述电子设备执行如第一方面所述的编译方法。
15.在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
附图说明
16.图1为本技术提供的编译方法一个实施例的流程示意图;
17.图2为本技术提供的芯片一个实施例的结构示意图;
18.图3为本技术实施例提供的电子设备的结构示意图。
具体实施方式
19.本技术实施例中,除非另有说明,字符“/”表示前后关联对象是一种或的关系。例如,a/b可以表示a或b。“和/或”描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
20.需要指出的是,本技术实施例中涉及的“第一”、“第二”等词汇,仅用于区分描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,也不能理解为指示或暗示顺序。
21.本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。此外,“以下至少一项(个)”或者其类似表达,是指的这些项中的任意组合,可以包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c。其中,a、b、c中的每个本身可以是元素,也可以是包含一个或多个元素的集合。
22.本技术实施例中,“示例的”、“在一些实施例中”、“在另一实施例中”等用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
23.本技术实施例中的“的(of)”、“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,所要表达的含义是一致的。本技术实施例中,通信、传输有时可以混用,应当指出的是,在不强调其区别时,其所表达的含义是一致的。例如,传输可以包括发送和/或接收,可以为名词,也可以是动词。
24.本技术实施例中涉及的等于可以与大于连用,适用于大于时所采用的技术方案,也可以与小于连用,适用于小于时所采用的技术方案。需要说明的是,当等于与大于连用时,不能与小于连用;当等于与小于连用时,不与大于连用。
25.代码仓库指的是包含一组文件所有历史修改信息的逻辑单位,通常用于保存一个软件产品或某一组件的所有文件信息记录。当开发人员根据某个产品需求或基于某个问题
修改完代码后,可以将修改完的代码存入代码仓库中。
26.然而,在将代码存入代码仓库前,需要经过校验编译操作,该校验编译操作通过编译的方式对提交的代码进行校验,以保证该提交代码的质量;也就是说,在代码无差错的情况下,才可以将代码存入代码仓库。上述校验编译的操作可以包括编译、代码扫描和测试等步骤。
27.由于一个仓库的代码可以关联一个或多个项目,且一个项目下又可以包含一个或多个工程。也就是说,一个仓库中的代码的修改可能会影响到多个项目中的不同的工程。为了避免代码提交影响到与其关联的不同的工程,目前的编译需要预先通过人工配置的方式,将与修改代码关联的工程信息输入,当关联工程的编译都成功之后,才可将提交代码存入代码仓库。然而,这种人工的方式效率较低,且不能保证关联工程信息的准确性及完整性,由此可能出现漏编译。
28.基于上述问题,本技术实施例提出了一种编译方法,有助于提高编译的效率。
29.现结合图1对本技术实施例提供的编译方法进行示例性说明。
30.图1为本技术提供的编译方法一个实施例的流程示意图,具体包括以下步骤:
31.步骤101,响应于检测到代码的提交,获取历史工程。
32.具体地,用户(例如,开发人员)在开发过程中可以建立多个项目,其中,一个项目可以包括多个工程,用户可以对任意一个项目中的任意一个工程中的代码进行修改,并可以在修改后提交。响应于检测到代码的提交,可以从数据库中获取历史工程,以便通过历史工程确定本次提交代码的关联工程。
33.其中,该数据库可以是编译数据库,或者,该数据库也可以是其他类型的数据库,本技术实施例数据库的类型不作特殊限定。
34.可以理解的是,历史工程可以是经过校验编译的工程。该数据库可以存储工程数据以及对应的编译信息,例如,编译信息可以包括主分支、仓库识别号及编译结果等信息。其中,编译信息还可以包括其他信息,在此不一一例举。主分支用于表征工程数据所属的项目,仓库识别号用于表征工程数据对应的仓库,编译结果包括成功或失败。
35.步骤102,基于主分支及仓库识别号对历史工程进行分组。
36.具体地,当获取到数据库中的历史工程后,可以对历史工程进行分组。其中,分组的方式可以是基于主分支及仓库识别号。
37.示例性的,可以将所属相同主分支及相同仓库的历史工程归为同一组。可以理解的是,任意一组历史工程中可以包括相同主分支及相同仓库的多个工程数据。其中,历史工程所属的仓库可以通过编译信息中的仓库识别号确定。
38.表1示例性的示出了分组后的历史工程。
39.[0040][0041]
参考表1,工程1和工程2同属于主分支1和仓库1,因此,将工程1和工程2归为分组1。工程3、工程4和工程5同属于主分支2和仓库2,因此,将工程3、工程4和工程5归为分组2。其他工程的分组方式可以参考上述实施例中的相关描述,在此不再赘述。
[0042]
步骤103,对分组后的历史工程进行编译结果的比较,根据比较结果确定哪些历史工程之间为不等价工程。
[0043]
具体地,当获取到分组后的历史工程后,可以对每个分组中的历史工程进行编译结果的比较,并可以根据比较结果确定哪些历史工程之间为不等价工程。其中,编译结果的比较可以是两两工程数据之间的比较。
[0044]
示例性的,以一个分组历史工程包含3个历史工程为例,分别为历史工程a、历史工程b及历史工程c,则两两工程数据之间的比较可以包括历史工程a与历史工程b之间的编译结果的比较、历史工程a与历史工程c之间的编译结果的比较、历史工程b与历史工程c之间的编译结果的比较。
[0045]
接着,在两两工程数据之间的编译结果比较中,可以根据比较结果确定这两个历史工程是否为等价工程。其中,编译结果可以包括成功或失败。
[0046]
可以理解的是,对于同一个仓库的提交代码的校验编译,如果对两个工程的编译结果总是相同,可以认为这个仓库对这两个工程的影响是一样的,这两个工程可以称为等价工程。也就是说,该仓库提交的代码修改,只需要编译这两个工程中的任意一个工程即可,如果都进行编译,则会存在冗余编译,浪费编译服务器的资源。
[0047]
如果对两个工程的编译结果不相同,可以认为这个仓库对这两个工程的影响是不一样的,这两个工程可以称为不等价工程。
[0048]
示例性的,以两两工程数据为历史工程a和历史工程b为例,可以统计历史工程a的编译成功的总数以及历史工程b的编译成功的总数。
[0049]
若历史工程a的编译成功的总数大于第一阈值,历史工程b的编译成功的总数大于第一阈值,且历史工程a和历史工程b均为编译失败过,则可以认为历史工程a和历史工程b为等价工程,否则为不等价工程。
[0050]
可以理解的是,由于一个分组历史工程中包含多个历史工程,通过上述两两工程数据之间的比较,2个或者更多的历史工程之间为等价工程。
[0051]
步骤104,获取本次提交代码所属的仓库及主分支,根据本次提交代码所属的仓库及主分支确定关联工程。
[0052]
具体地,本次提交代码所属的仓库及主分支可以在步骤101中获取,也可以在本步骤104中获取,本技术实施例对此不作特殊限定。
[0053]
在获取到本次提交代码所属的仓库及主分支后,可以根据本次提交代码所属的仓库及主分支在与其对应的分组历史工程中找到等价工程和不等价工程。
[0054]
若对应的分组历史工程中存在不等价工程,则可以将该不等价工程设置为关联工程,也就是说,该关联工程在本次提交代码时也会受到影响,需要一起编译。或者,
[0055]
若对应的分组历史工程中存在等价工程,则可以在多个等价工程之间仅保留一个历史工程,由此可以降低编译量,提高性能。
[0056]
本技术实施例中,通过分析历史工程,以自动识别关联工程,由此可以提高编译效率。
[0057]
图2为本技术芯片一个实施例的结构示意图,如图2所示,上述芯片20可以包括:获取模块21及确定模块22;其中,
[0058]
获取模块21,用于响应于检测到代码的提交,获取历史工程;
[0059]
确定模块22,用于基于所述历史工程确定不等价工程;获取本次提交代码所属的仓库及主分支,根据本次提交代码所属的仓库及主分支在所述不等价工程中确定关联工程。
[0060]
其中一种可能的实现方式中,上述确定模块22还用于基于所述历史工程所属的主分支及仓库对所述历史工程进行分组;
[0061]
对分组后的历史工程进行编译结果的比较,根据比较结果确定不等价工程。
[0062]
其中一种可能的实现方式中,上述芯片20还包括:
[0063]
删除模块,用于基于所述历史工程确定等价工程;
[0064]
在对本次提交代码进行编译时,删除所述等价工程。
[0065]
其中一种可能的实现方式中,上述确定模块22还用于对所属相同主分支和相同仓库的两个目标历史工程进行编译;
[0066]
若所述两个目标历史工程的成功编译的次数达到预设次数,且无失败次数,所述两个目标历史工程为等价工程。
[0067]
图2所示实施例提供的芯片20可用于执行本技术所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
[0068]
应理解以上芯片20的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,检测模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0069]
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit;以下简称:asic),或,一个或多个微处理器(digital signal processor;以下简称:dsp),或,一个或者多个现场可编程门阵列(field programmable gate array;以下简称:fpga)等。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip;以下简称:soc)的形式实现。
[0070]
下面结合图3进一步介绍本技术实施例中提供的示例性电子设备。图3示出了电子设备300的结构示意图。
[0071]
上述电子设备300可以包括:至少一个处理器;以及与上述处理器通信连接的至少一个存储器,其中:上述存储器存储有可被上述处理器执行的程序指令,处理器调用上述程序指令能够执行本技术图1所示实施例提供的方法。
[0072]
图3示出了适用于实现本技术实施方式的示例性电子设备300的框图。图3显示的电子设备300仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0073]
如图3所示,电子设备300以通用计算设备的形式表现。电子设备300的组件可以包括但不限于:一个或者多个处理器310,存储器320,连接不同系统组件(包括存储器320和处理器310)的通信总线340以及通信接口330。
[0074]
通信总线340表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture;以下简称:isa)总线,微通道体系结构(micro channel architecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(video electronics standards association;以下简称:vesa)局域总线以及外围组件互连(peripheral component interconnection;以下简称:pci)总线。
[0075]
电子设备300典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0076]
存储器320可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(random access memory;以下简称:ram)和/或高速缓存存储器。电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compact disc read only memory;以下简称:cd-rom)、数字多功能只读光盘(digital video disc read only memory;以下简称:dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与通信总线340相连。存储器320可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本技术各实施例的功能。
[0077]
具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器320中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本技术所描述的实施例中的功能和/或方法。
[0078]
电子设备300也可以与一个或多个外部设备(例如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过通信接口330进行。并且,电子设备300还可以通过网络适配器(图3中未示出)与一个或者多个网络(例如局域网(local area network;以下简称:lan),广域网(wide area network;以下简称:wan)和/或公共网络,例如因特网)通信,上述网络适配器可以通过通信总线340与电子设备的其它模块通信。应当明白,尽管图3中未示出,可以结合电子设备300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(redundant arrays of independent drives;以下简称:raid)系统、磁带驱动器以及数据备份存储系统等。
[0079]
处理器310通过运行存储在存储器320中的程序,从而执行各种功能应用以及数据处理,例如实现本技术实施例提供的方法。
[0080]
可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备300的结构限定。在本技术另一些实施例中,电子设备300也可以采用
上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0081]
以上各实施例中,涉及的处理器可以例如包括cpu、dsp、微控制器或数字信号处理器,还可包括gpu、嵌入式神经网络处理器(neural-network process units;以下简称:npu)和图像信号处理器(image signal processing;以下简称:isp),该处理器还可包括必要的硬件加速器或逻辑处理硬件电路,如asic,或一个或多个用于控制本技术技术方案程序执行的集成电路等。此外,处理器可以具有操作一个或多个软件程序的功能,软件程序可以存储在存储介质中。
[0082]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本技术所示实施例提供的方法。
[0083]
本技术实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行本技术所示实施例提供的方法。
[0084]
本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示单独存在a、同时存在a和b、单独存在b的情况。其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a和b,a和c,b和c或a和b和c,其中a,b,c可以是单个,也可以是多个。
[0085]
本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0086]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0087]
在本技术所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory;以下简称:rom)、随机存取存储器(random access memory;以下简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0088]
以上所述,仅为本技术的具体实施方式,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种编译方法,其特征在于,所述方法包括:响应于检测到代码的提交,获取历史工程;基于所述历史工程确定不等价工程;获取本次提交代码所属的仓库及主分支,根据本次提交代码所属的仓库及主分支在所述不等价工程中确定关联工程。2.根据权利要求1所述的方法,其特征在于,所述基于所述历史工程确定不等价工程包括:基于所述历史工程所属的主分支及仓库对所述历史工程进行分组;对分组后的历史工程进行编译结果的比较,根据比较结果确定不等价工程。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:基于所述历史工程确定等价工程;在对本次提交代码进行编译时,删除所述等价工程。4.根据权利要求3所述的方法,其特征在于,所述基于所述历史工程确定等价工程包括:对所属相同主分支和相同仓库的两个目标历史工程进行编译;若所述两个目标历史工程的成功编译的次数达到预设次数,且无失败次数,所述两个目标历史工程为等价工程。5.一种芯片,其特征在于,包括:获取模块,用于响应于检测到代码的提交,获取历史工程;确定模块,用于基于所述历史工程确定不等价工程;获取本次提交代码所属的仓库及主分支,根据本次提交代码所属的仓库及主分支在所述不等价工程中确定关联工程。6.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储计算机程序;所述处理器用于运行所述计算机程序,实现如权利要求1-4任一所述的编译方法。7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在计算机上运行时,实现如权利要求1-4任一所述的编译方法。

技术总结
本申请提供一种编译方法、芯片、电子设备及存储介质,该方法包括:响应于检测到代码的提交,获取历史工程;基于所述历史工程确定不等价工程;获取本次提交代码所属的仓库及主分支,根据本次提交代码所属的仓库及主分支在所述不等价工程中确定关联工程。本申请提供的方法,有助于提高编译的效率。有助于提高编译的效率。有助于提高编译的效率。


技术研发人员:罗昆元 李富发
受保护的技术使用者:展讯通信(上海)有限公司
技术研发日:2023.06.29
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐