CN114138281A - 软件工程的编译方法、装置、设备及介质 - Google Patents

软件工程的编译方法、装置、设备及介质 Download PDF

Info

Publication number
CN114138281A
CN114138281A CN202111493903.4A CN202111493903A CN114138281A CN 114138281 A CN114138281 A CN 114138281A CN 202111493903 A CN202111493903 A CN 202111493903A CN 114138281 A CN114138281 A CN 114138281A
Authority
CN
China
Prior art keywords
dependency
source code
configuration file
compiling
type
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.)
Pending
Application number
CN202111493903.4A
Other languages
English (en)
Inventor
高阔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202111493903.4A priority Critical patent/CN114138281A/zh
Publication of CN114138281A publication Critical patent/CN114138281A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种软件工程的编译方法、装置、设备及介质。该方法在接收到编译命令时加载预先生成的自定义配置文件,以加载自定义配置文件中的源码类型的依赖对应的依赖信息,进而在已加载的编译脚本的配置文件中,查找依赖标识与当前的源码类型的依赖标识相同的依赖,将查找到的依赖信息替换为该当前的源码类型的依赖信息,并基于更新后的编译脚本的配置文件执行软件工程的编译操作,实现了软件工程编译过程中依赖信息的自动替换,从而实现了二进制至源码的自动切换;无需开发人员手动修改配置文件,只需执行编译命令即可完成二进制至源码的切换,提高了软件工程的编译效率,解决了整体工程源码被侵入的技术问题。

Description

软件工程的编译方法、装置、设备及介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种软件工程的编译方法、装置、设备及介质。
背景技术
随着安卓(Android)项目工程代码量越来越多,业界均采用组件化的开发方式,所有业务模块均独立为一个仓库,各业务模块之间相互解耦,打包时采用二进制依赖的方式,通过maven工具直接依赖模块编译后的aar库文件。
在实现本发明的过程中,发现现有技术中至少存在以下问题:
在所有业务和基础模块全面二进制化后,引入了新的问题:在现有模式下,如果开发人员需要调试某个模块的代码,则需要在编译前将该模块中依赖的类型在编译工具(比如gradle工具)的编译脚本配置文件中修改为源码类型,并需要由开发人员主动下载依赖的源代码,并在编译脚本配置文件中写入该源代码的本地存储路径,然后使用修改后的编译脚本配置文件执行编译操作。上述编译流程需要修改编译脚本配置文件,会对整体工程源码造成侵入,并且需要人工多次操作,编译效率低下。
发明内容
本发明实施例提供了一种软件工程的编译方法、装置、设备及介质,以提高软件工程的编译效率,解决整体工程源码被侵入的技术问题。
第一方面,本发明实施例提供了一种软件工程的编译方法,包括:
在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
基于更新后的编译脚本的配置文件,执行软件工程编译操作。
第二方面,本发明实施例还提供了一种软件工程的编译装置,所述装置包括:
配置文件加载模块,用于在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
依赖信息替换模块,用于对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
编译操作执行模块,用于基于更新后的编译脚本的配置文件,执行软件工程编译操作。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例提供的软件工程的编译方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例提供的软件工程的编译方法。
上述发明中的实施例具有如下优点或有益效果:
在接收到编译命令时加载预先生成的自定义配置文件,以加载自定义配置文件中的源码类型的依赖对应的依赖信息,进而在已加载的编译脚本的配置文件中,查找依赖标识与当前的源码类型的依赖标识相同的依赖,将查找到的依赖信息替换为该当前的源码类型的依赖信息,并基于更新后的编译脚本的配置文件执行软件工程的编译操作,实现了软件工程编译过程中依赖信息的自动替换,从而实现了二进制至源码的自动切换;无需开发人员手动修改配置文件,只需执行编译命令即可完成二进制至源码的切换,提高了软件工程的编译效率;并且,该方法无需修改编译脚本配置文件,仅修改内存数据即可完成二进制至源码的切换,解决了整体工程源码被侵入的技术问题。
附图说明
为了更加清楚地说明本发明示例性实施例的技术方案,下面对描述实施例中所需要用到的附图做一简单介绍。显然,所介绍的附图只是本发明所要描述的一部分实施例的附图,而不是全部的附图,对于本领域普通技术人员,在不付出创造性劳动的前提下,还可以根据这些附图得到其他的附图。
图1为本发明实施例一所提供的一种软件工程的编译方法的流程示意图;
图2A为本发明实施例二所提供的一种软件工程的编译方法的流程示意图;
图2B为本发明实施例二所提供的一种自定义配置文件的生成方法的流程示意图;
图3A为本发明实施例三所提供的一种软件工程的编译方法的流程示意图;
图3B为本发明实施例三所提供的一种原始配置文件生成方法的流程示意图;
图4为本发明实施例四所提供的一种软件工程的编译装置的结构示意图;
图5为本发明实施例五所提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种软件工程的编译方法的流程示意图,本实施例可适用于在软件工程的编译过程中,自动进行二进制至源码的切换的情况,该方法可以由软件工程的编译装置来执行,该装置可以由硬件和/或软件来实现,该方法具体包括如下步骤:
S110、在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径。
在本实施例中,编译命令可以是根据用户手动触发生成的,如,若检测到用户触发编译控件,则生成编译命令;或者,编译命令还可以是由编译服务器自动触发生成的。
具体的,本实施例在接收到编译命令时,可以加载预先生成的自定义配置文件,将自定义配置文件中的信息读取到内存中,以获取自定义配置文件中各依赖对应的依赖信息。其中,自定义配置文件可以包含至少一个源码类型的依赖分别对应的依赖信息。需要说明的是,自定义配置文件中源码类型的依赖是由二进制类型的依赖经过类型转换后得到的,其在已加载的编译脚本的配置文件中仍为二进制类型的依赖。因此,需要进一步对该源码类型的依赖在编译脚本的配置文件中的依赖信息进行替换。即,针对自定义配置文件中源码类型的依赖,需要进一步将其在编译脚本的配置文件中的依赖信息进行替换。
当然,自定义配置文件还可以包含至少一个二进制类型的依赖分别对应的依赖信息。其中,自定义配置文件中二进制类型的依赖可以是无需进行二进制至源码的切换的二进制依赖。示例性的,源码类型的依赖可以是source依赖,二进制类型的依赖可以是bin依赖。
具体的,自定义配置文件中各源码类型的依赖信息(即各源码类型的依赖对应的依赖信息)包括依赖标识、依赖类型以及源代码的本地存储路径。其中,源代码的本地存储路径可以是二进制类型的依赖类型(即二进制类型的依赖的依赖类型)更改至源码类型后下载的源代码在本地的存储信息;基于源代码的本地存储路径可以获取到源代码。
S120、对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息。
即,对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖的依赖标识相同的依赖,并将查找到的依赖的依赖信息替换为当前源码类型的依赖信息。
在本实施例中,针对自定义配置文件中各个源码类型的依赖,可以根据当前源码类型的依赖标识(即当前源码类型的依赖的依赖标识),在已加载的编译脚本的配置文件中查找与其依赖标识相同的依赖。其中,已加载的编译脚本的配置文件可以包含软件工程的所有依赖的依赖信息。即,已加载的编译脚本的配置文件中所有依赖的依赖信息已被读取到编译工具的内存中。
示例性的,依赖标识可以是依赖的项目组织标识符(groupID)或者依赖的项目标识符(artifactID),或者,依赖标识也可以是groupID和artifactID的组合,本实施例对此不进行限制。
进一步的,在查找到依赖标识与当前源码类型的依赖标识相同的依赖后,可以在编译工具的内存中将查找到的依赖信息替换为当前源码类型的依赖信息,以实现软件工程的依赖的修改。也就是说,查找出依赖标识与当前源码类型的依赖的依赖标识相同的依赖后,可以在编译工具的内存中将该依赖的依赖信息替换为当前源码类型的依赖的依赖信息。
S130、基于更新后的编译脚本的配置文件,执行软件工程编译操作。
具体的,本实施例根据内存中更新后的编译脚本的配置文件,执行软件工程编译操作。
在一种可选的实施方式中,本实施例提供的软件工程的编译方法由编译工具的插件模块执行。在另一种可选的实施方式中,在接收到编译命令时,加载预先生成的自定义配置文件的操作,以及,对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识(即当前源码类型的依赖的依赖标识)相同的依赖,并将查找到的依赖对应的依赖信息替换为当前源码类型的依赖对应的依赖信息的操作,可以由编译工具的插件模块执行;基于更新后的编译脚本的配置文件,执行软件工程编译操作的操作,可以由编译工具的编译模块执行。
即,通过编译工具的插件模块,加载预先生成的自定义配置文件,以及对于各源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识(即当前源码类型的依赖的依赖标识)相同的依赖,并将查找到的依赖信息(即查找到的依赖的依赖信息)替换为当前源码类型的依赖信息(即当前源码类型的依赖的依赖信息)的操作;通过编译工具的编译模块,基于更新后的编译脚本的配置文件,执行软件工程编译操作。示例性的,所述编译工具为Gradle工具。
需要说明的是,在现有技术中,在修改某个库的方法或者类时,由于二进制代码的不可见性,若开发人员疏忽,没有把所有调用函数全部修改,极有可能会产生运行时异常(如:ClassNotFoundException、MethodNotFoundException),即,在软件发布或运行后暴露问题;本实施例的技术方案,在编译前切换工程为源码模式编译,如果出现调用函数未全部修改的问题,则编译不通过,进而将问题暴露在编译期,便于开发人员及时对问题进行修改。并且,现有技术中二进制类型的依赖无法进行调试,通常需要研发人员手动修改编译脚本的配置文件,把二进制类型的依赖修改为源码类型的依赖,使得多模块的整体调试复杂,而本申请的技术方案,可以自动对编译脚本的配置文件进行修改,便于进行多模块的整体调试。
考虑到软件工程编译时存在本地不具备自定义配置文件的情形,可选的,本实施例在S110中加载预先生成的自定义配置文件之前,还包括:判断本地是否包含自定义配置文件,若是,则执行加载自定义配置文件的操作。可选的,若本地不包含自定义配置文件,则可以直接基于已加载的编译脚本的配置文件执行软件工程编译操作。
本实施例的技术方案,在接收到编译命令时加载预先生成的自定义配置文件,以加载自定义配置文件中的源码类型的依赖对应的依赖信息,进而在已加载的编译脚本的配置文件中,查找依赖标识与当前的源码类型的依赖标识相同的依赖,将查找到的依赖信息替换为该当前的源码类型的依赖信息,并基于更新后的编译脚本的配置文件执行软件工程的编译操作,实现了软件工程编译过程中依赖信息的自动替换,从而实现了二进制至源码的自动切换,提高了软件工程的编译效率;并且,该方法无需修改编译脚本配置文件,仅修改内存数据即可完成二进制至源码的切换,解决了整体工程源码被侵入的技术问题。
实施例二
图2A为本发明实施例二提供的一种软件工程的编译方法的流程示意图,本实施例在上述实施例的基础上,可选的,在接收到编译命令之前,所述方法还包括:在接收到切换命令时,加载预先生成的原始配置文件;其中,所述原始配置文件中包含软件工程中各二进制类型的依赖分别对应的依赖信息;根据所述切换命令将所述原始配置文件中的部分或全部依赖的依赖类型,修改为源码类型;对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖信息,添加到所述原始配置文件中;将当前的原始配置文件作为自定义配置文件进行保存。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2A,本实施例提供的软件工程的编译方法包括以下步骤:
S210、在接收到切换命令时,加载预先生成的原始配置文件;其中,所述原始配置文件中包含软件工程中各二进制类型的依赖分别对应的依赖信息。
其中,切换命令可以是用户通过触发切换控件时生成的,也可以是编译服务器自动触发生成的。在本实施例中,切换命令中可以包括需要进行依赖类型切换的依赖标识,即可以包括需要切换依赖类型的依赖对应的依赖标识。
可选的,所述切换命令中包含:软件工程中待调试的模块对应的二进制类型的依赖标识,或者,软件工程中的全部二进制类型的依赖标识。具体的,若对软件工程中的一个或多个模块进行调试,则切换命令中可以包含待调试的模块分别对应的二进制类型的依赖标识(即二进制类型的依赖的依赖标识);若对软件工程中进行整体调试,则切换命令中可以包含全部二进制类型的依赖标识(即全部二进制类型的依赖的依赖标识)。该可选的实施方式分别对应模块编译调试场景以及软件工程总包编译调试场景。
具体的,本实施例在接收到切换命令时,可以加载预先生成的原始配置文件,将原始配置文件中的信息读取到内存中,以获取原始配置文件中各二进制类型的依赖对应的依赖信息。其中,原始配置文件包含软件工程中各个二进制类型的依赖对应的依赖信息。
S220、根据所述切换命令将所述原始配置文件中的部分或全部依赖的依赖类型,修改为源码类型。
在本实施例中,可以根据切换命令中携带的依赖标识,确定出原始配置文件中需要进行依赖类型切换的部分或全部依赖,进一步的,将该部分或全部依赖的依赖类型修改为源码类型。
示例性的,切换命令包括依赖标识“abcdf”,则将其修改为源码类型可以是:gradle yolanda install id=“abcdf”dependent_type=“source”。具体的,修改二进制类型的依赖的依赖类型的目的在于:便于进行调试,以及,打release包时规避运行时异常。
S230、对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖信息,添加到所述原始配置文件中。
即,对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖的依赖信息,添加到所述原始配置文件中。在本实施例中,针对修改为源码类型的各个依赖,需获取该依赖的源代码的本地存储路径。其中,本地存储路径可以是下载得到的二进制类型的依赖的源码的存储位置。
在一种具体的实施方式中,获取当前修改为源码类型的依赖的源代码的本地存储路径,包括:在本地磁盘中查找当前修改为源码类型的依赖的源代码;若查找到,则将查找到的源代码在本地磁盘的存储路径确定为当前修改为源码类型的依赖的源代码的本地存储路径;若未查找到,则根据当前修改为源码类型的依赖对应的依赖信息中的源代码地址下载源代码,将下载的所述源代码存储在本地磁盘中,并将所述源代码在本地磁盘的存储路径确定为当前修改为源码类型的依赖的源代码的本地存储路径。
其中,二进制类型的依赖对应的依赖信息包括源代码地址;在本地磁盘中不具备当前修改为源码类型的依赖的代码源时,可以根据该源代码地址请求源代码并进行下载,将下载的源代码存储至本地磁盘。
进一步的,在获取到当前修改为源码类型的依赖的源代码的本地存储路径后,可以将本地存储路径作为当前修改为源码类型的依赖信息(即当前修改为源码类型的依赖的依赖信息),添加到所述原始配置文件中。
S240、将当前的原始配置文件作为自定义配置文件进行保存,在接收到编译命令时,加载预先生成的自定义配置文件。
具体的,本实施例可以将添加过修改为源码类型的依赖的源代码的本地存储路径的原始配置文件,作为自定义配置文件。所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径。
S250、对于自定义配置文件中各源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息。
也就是说,对于自定义配置文件中各源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖的依赖标识相同的依赖,并将查找到的依赖的依赖信息替换为当前源码类型的依赖信息。
S260、基于更新后的编译脚本的配置文件,执行软件工程编译操作。
如图2B所示,展示了一种自定义配置文件的生成方法的流程示意图,该方法包括:加载编译工具的插件;加载预先生成的原始配置文件,根据切换命令中的依赖标识将原始配置文件中的部分或全部依赖的依赖类型更改为源码类型;判断本地磁盘是否存在更改为源码类型的依赖的源代码;若否,则对源代码进行下载;然后将源代码的本地存储路径作为对应依赖的依赖信息添加到原始配置文件,得到自定义配置文件。
本实施例的技术方案,在接收到切换命令时,加载预先生成的原始配置文件,以获取软件工程中全部二进制类型的依赖对应的依赖信息,进而根据切换命令将原始配置文件中的部分或全部依赖的依赖类型修改为源码类型,针对修改为源码类型的各依赖,将其源代码的本地存储路径添加至原始配置文件中,得到自定义配置文件,实现了自定义配置文件的自动生成,进而实现了软件工程编译过程中依赖信息的自动替换,提高了软件工程的编译效率;并且,该方法无需修改编译脚本配置文件,仅修改内存数据即可完成二进制至源码的切换,解决了整体工程源码被侵入的技术问题。
实施例三
图3A为本发明实施例三提供的一种软件工程的编译方法的流程示意图,本实施例在上述实施例的基础上,可选的,在接收到切换命令之前,所述方法还包括:在接收到分析命令时,基于加载的编译脚本的配置文件获取软件工程中的各依赖分别对应的依赖类型和依赖信息存储路径;对于各二进制类型的依赖,基于当前二进制类型的依赖信息存储路径,远程查询当前二进制类型的依赖对应的依赖信息,并将所述依赖信息存储在所述原始配置文件中。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图3A,本实施例提供的软件工程的编译方法包括以下步骤:
S310、在接收到分析命令时,基于加载的编译脚本的配置文件获取软件工程中的各依赖分别对应的依赖类型和依赖信息存储路径。
其中,分析命令可以是用户通过触发分析控件生成,也可以是编译服务器自动触发生成。本实施例中,编译脚本的配置文件包含软件工程的全部依赖的依赖信息;通过加载编译脚本的配置信息,将编译脚本的配置信息所包含的全部依赖的依赖信息加载至内存,进一步的,读取内存中全部依赖分别对应的依赖类型和依赖信息存储路径。
可选的,编译脚本的配置文件中包括软件工程的编译版本、软件工程的构建工具的版本、软件工程的包名、软件工程最低兼容版本、版本号、版本名称、签名配置、是否混淆以及全部依赖的依赖类型和依赖信息存储路径等。例如,编译脚本的配置文件中包括:compileSdkVersion(软件工程的编译版本,即用于指定项目的编译版本),buildToolsVersion(软件工程的构建工具的版本,即用于指定项目的构建工具的版本),applicationId(软件工程的包名,即用于指定项目的包名),minSdkVersion(软件工程最低兼容版本,即项目最低的兼容版本),versionCode(版本号),versionName(版本名称),signingConfig(签名配置),minifyEnabled(是否混淆),dependencies(包含全部依赖的依赖类型和依赖信息存储路径,即项目所有依赖的依赖类型和依赖信息存储路径)。具体的,插件可以通过加载编译工具的配置文件获取软件工程中的全部依赖的依赖类型和依赖信息存储路径。示例性的,可以通过加载编译工具的配置文件生成工程依赖树,进而基于工程依赖树获取软件工程中的全部依赖的依赖类型和依赖信息存储路径。其中,工程依赖树可以是内存中的二进制数据,各依赖可以包括三个字段,分别为scope(依赖范围,如compile、compileOnle),path(依赖信息存储路径,可以是本地工程路径或者库文件(arr或jar文件)在服务器的存储路径),type(依赖类型)。
在本实施例中,依赖类型包括二进制类型和源码类型。其中,二进制类型的依赖信息存储路径(即二进制类型的依赖的依赖信息存储路径)可以是库文件在远程服务器的存储路径;源码类型的依赖对应的依赖信息存储路径可以是本地工程路径或本地库文件路径。
S320、对于各二进制类型的依赖,基于当前二进制类型的依赖信息存储路径,远程查询当前二进制类型的依赖对应的依赖信息,并将所述依赖信息存储在原始配置文件中。
即,对于各二进制类型的依赖,基于当前二进制类型的依赖的依赖信息存储路径,远程查询当前二进制类型的依赖对应的依赖信息。在本实施例中,针对获取到的各个依赖中的二进制类型的依赖,需根据依赖信息存储路径查询其对应的依赖信息。具体的,二进制类型的依赖的库文件(如arr、jar)在发布的时候,会将依赖信息通过接口上传至服务器,在对二进制类型的依赖信息(即二进制类型的依赖的依赖信息)进行查询时,可以基于依赖信息存储路径查询服务器以获取对应的依赖信息。
进一步的,在查询到当前二进制类型的依赖对应的依赖信息后,可以将该依赖的依赖信息存储至原始配置文件中。需要说明的是,本实施例可以通过上述方式,将软件工程中的全部二进制类型的依赖信息分别存储至原始配置文件,即将全部二进制类型的依赖的依赖信息存储至原始配置文件。
示例性的,所述当前二进制类型的依赖对应的依赖信息包括:依赖的范围、依赖信息存储路径、依赖标识、依赖类型以及源代码地址。即,原始配置文件中二进制类型的依赖对应的依赖信息可以包括依赖的范围、依赖信息存储路径、依赖标识、依赖类型以及源代码地址。如,原始配置文件如下:
"scope":"compile",//依赖范围
"path":"com.jd.stock.bm:jdstock:3.5.0_210727-20210727.154709-SNAPSHOT",//依赖信息存储路径,具体的,依赖信息存储路径的构成包括:groupID:artifactID:Version,
"id":"com.jd.stock.bm:jdstock",//依赖标识,使用groupID:artifactID可以组成依赖标识
"pathType":"bin",//依赖类型(bin:二进制类型source:源码类型)
"localPath":"xxxxx",//本地存储路径(如果源代码未下载过,此字段为空)
"source":{"git_path":"https://jcode.jdfmgt.com/git/JDStockSDK_v2_Android.git","git_tag":"jrpaas_3.5.0_210727"}//依赖类型为二进制类型时,二进制类型的依赖的源代码地址。
示例性的,如图3B所示,展示了一种原始配置文件生成方法的流程示意图。该方法包括:加载编译工具的插件;基于插件分析软件工程的全部依赖;生成软件工程的原始依赖结构数据;基于原始依赖结构数据获取各二进制类型的依赖信息;基于各二进制类型的依赖信息生成原始配置文件。其中,基于原始依赖结构数据获取二进制类型的依赖信息(即二进制类型的依赖的依赖信息),可以是:根据原始依赖结构数据中各二进制类型的依赖信息存储路径(即各二进制类型的依赖的依赖信息存储路径),从mPaas服务器中获取依赖的依赖信息。
需要说明的是,在本实施例中,可选的,原始配置文件只包含可以查询到源代码的二进制类型的依赖信息。具体的,由于maven上的二进制库文件可以是第三方开发的,因此,针对第三方开发的二进制库文件,其不具备对应的源代码,无法查询到对应的源代码。本实施例中的原始配置文件可以保存至本地磁盘(本地工程目录)中。
S330、在接收到切换命令时,加载预先生成的原始配置文件,根据所述切换命令将所述原始配置文件中的部分或全部依赖的依赖类型,修改为源码类型。
S340、对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖信息,添加到所述原始配置文件中。
即,对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖的依赖信息,添加到所述原始配置文件中。示例性的,沿用上例,在获取到当前修改为源码类型的依赖的源代码的本地存储路径后,可以将原始配置文件中的localPath字段替换为本地存储路径。
S350、将当前的原始配置文件作为自定义配置文件进行保存,在接收到编译命令时,加载预先生成的自定义配置文件。
S360、对于自定义配置文件的各源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息。
即,对于自定义配置文件的各源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖的依赖标识相同的依赖,并将查找到的依赖的依赖信息替换为当前源码类型的依赖信息。
S370、基于更新后的编译脚本的配置文件,执行软件工程编译操作。
示例性的,本实施例提供的软件工程的编译方法的步骤如下:
步骤1:在接收到分析命令后,编译工具的编译模块加载编译脚本的配置文件,并加载编译工具的插件模块,编译工具的插件模块基于加载的编译脚本的配置文件获取当前软件工程包含的各依赖分别对应的依赖类型和依赖信息存储路径;
步骤2:编译工具的插件模块基于各二进制类型的依赖信息存储路径,远程查询各二进制类型的依赖分别对应的依赖信息,将所述依赖信息存储在原始配置文件中;
即在该步骤中,编译工具的插件模块可以根据各二进制类型的依赖的依赖信息存储路径,远程查询各二进制类型的依赖分别对应的依赖信息;
步骤3:在接收到切换命令后,编译工具的编译模块加载编译脚本的配置文件,并加载编译工具的插件模块,编译工具的插件模块加载所述原始配置文件,并在所述原始配置文件中将所述切换命令指定的依赖信息中的依赖类型修改为源码类型;
在该步骤中,编译工具的插件模块可以在原始配置文件中将切换命令指定的依赖的依赖信息中的依赖类型修改为源码类型;
步骤4:对于所述原始配置文件中当前源码类型的依赖,编译工具的插件模块根据该依赖对应的依赖信息中的源代码地址下载该依赖的源代码,并将该源代码的本地存储路径作为该依赖对应的依赖信息添加到所述原始配置文件中,生成自定义配置文件;其中,依赖的源代码也可被预先下载至本地,若在本地未查询到该依赖的源代码,则可以基于源代码地址下载该依赖的源代码;
步骤5:在接收到编译命令后,编译工具的编译模块加载编译脚本的配置文件,并加载编译工具的插件模块,编译工具的插件模块加载所述自定义配置文件,对于所述自定义配置文件中的各依赖,编译工具的插件模块将已从所述编译脚本的配置文件加载到内存中的该依赖的依赖信息替换为该依赖在所述自定义配置文件中的依赖信息;
步骤6:编译工具的编译模块基于当前内存中各依赖的依赖信息执行工程编译操作。
本实施例的技术方案,在接收到分析命令时,可以通过加载的编译脚本的配置文件得到软件工程中全部依赖对应的依赖类型和依赖信息存储路径,针对各个二进制类型的依赖,根据依赖信息存储路径查询其对应的依赖信息,并将依赖信息存储至原始配置文件中,实现了原始配置文件的生成,进而实现了软件工程编译过程中依赖信息的自动替换,可由二进制自动切换至源码,无需开发人员手动修改配置文件,只需执行编译命令即可完成二进制至源码的切换,提高了软件工程的编译效率;并且,该方法无需修改编译脚本配置文件,仅修改内存数据即可完成二进制至源码的切换,解决了整体工程源码被侵入的技术问题。
实施例四
图4为本发明实施例四提供的一种软件工程的编译装置的结构示意图,本实施例可适用于在软件工程的编译过程中,自动进行二进制至源码的切换的情况,该装置具体包括:配置文件加载模块410、依赖信息替换模块420以及编译操作执行模块430。
配置文件加载模块410,用于在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
依赖信息替换模块420,用于对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
编译操作执行模块430,用于基于更新后的编译脚本的配置文件,执行软件工程编译操作。
可选的,所述装置还包括自定义保存模块,用于在接收到编译命令之前,在接收到切换命令时,加载预先生成的原始配置文件;其中,所述原始配置文件中包含软件工程中各二进制类型的依赖分别对应的依赖信息;根据所述切换命令将所述原始配置文件中的部分或全部依赖的依赖类型,修改为源码类型;对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖信息,添加到所述原始配置文件中;将当前的原始配置文件作为自定义配置文件进行保存。
可选的,所述自定义保存模块包括本地路径获取单元,用于在本地磁盘中查找当前修改为源码类型的依赖的源代码;若查找到,则将查找到的源代码在本地磁盘的存储路径确定为当前修改为源码类型的依赖的源代码的本地存储路径;若未查找到,则根据当前修改为源码类型的依赖对应的依赖信息中的源代码地址下载源代码,将下载的所述源代码存储在本地磁盘中,并将所述源代码在本地磁盘的存储路径确定为当前修改为源码类型的依赖的源代码的本地存储路径。
可选的,所述切换命令中包含:软件工程中待调试的模块对应的二进制类型的依赖标识,或者,软件工程中全部二进制类型的依赖标识。
可选的,所述装置还包括原始文件生成模块,用于在接收到切换命令之前,在接收到分析命令时,基于加载的编译脚本的配置文件获取软件工程中的各依赖分别对应的依赖类型和依赖信息存储路径;对于各二进制类型的依赖,基于当前二进制类型的依赖信息存储路径,远程查询当前二进制类型的依赖对应的依赖信息,并将所述依赖信息存储在所述原始配置文件中。
可选的,所述当前二进制类型的依赖对应的依赖信息包括:依赖的范围、依赖信息存储路径、依赖标识、依赖类型以及源代码地址。
可选的,配置文件加载模块410和依赖信息替换模块420属于编译工具的插件模块,编译操作执行模块430属于所述编译工具的编译模块。
可选的,所述编译工具为Gradle工具。
在本实施例中,通过配置文件加载模块,在接收到编译命令时加载预先生成的自定义配置文件,以加载自定义配置文件中的源码类型的依赖对应的依赖信息,进而通过依赖信息替换模块,在已加载的编译脚本的配置文件中,查找依赖标识与当前的源码类型的依赖标识相同的依赖,将查找到的依赖信息替换为该当前的源码类型的依赖信息,并通过编译操作执行模块基于更新后的编译脚本的配置文件执行软件工程的编译操作,实现了软件工程编译过程中依赖信息的自动替换,从而实现了二进制至源码的自动切换;无需开发人员手动修改配置文件,只需执行编译命令即可完成二进制至源码的切换,提高了软件工程的编译效率;并且,该方法无需修改编译脚本配置文件,仅修改内存数据即可完成二进制至源码的切换,解决了整体工程源码被侵入的技术问题。
本发明实施例所提供的软件工程的编译装置可执行本发明任意实施例所提供的软件工程的编译方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述系统所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
实施例五
图5是本发明实施例五提供的一种电子设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性电子设备12的框图。图5显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担确定软件工程的编译功能的电子设备。
如图5所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储器28,连接不同组件(包括存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
电子设备12典型地包括多种计算机可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机装置可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机存储介质。仅作为举例,存储装置34可以用于读写不可移动的、非易失性磁介质(不可移动的、非易失性磁介质在图5中未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-ReadOnly Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品40,该程序产品40具有一组程序模块42,这些程序模块被配置以执行本发明各实施例的功能。程序产品40,可以存储在例如存储器28中,这样的程序模块42包括但不限于一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、鼠标、摄像头等和显示器)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网WideArea Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)装置、磁带驱动器以及数据备份存储装置等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的软件工程的编译方法,包括:
在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
基于更新后的编译脚本的配置文件,执行软件工程编译操作。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的软件工程的编译方法的技术方案。
实施例六
本发明实施例六还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的软件工程的编译方法步骤,该方法包括:
在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
基于更新后的编译脚本的配置文件,执行软件工程编译操作。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (11)

1.一种软件工程的编译方法,其特征在于,包括:
在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
基于更新后的编译脚本的配置文件,执行软件工程编译操作。
2.根据权利要求1所述的方法,其特征在于,在接收到编译命令之前,所述方法还包括:
在接收到切换命令时,加载预先生成的原始配置文件;其中,所述原始配置文件中包含软件工程中各二进制类型的依赖分别对应的依赖信息;
根据所述切换命令将所述原始配置文件中的部分或全部依赖的依赖类型,修改为源码类型;
对于修改为源码类型的各依赖,获取当前修改为源码类型的依赖的源代码的本地存储路径,将所述本地存储路径作为当前修改为源码类型的依赖信息,添加到所述原始配置文件中;
将当前的原始配置文件作为自定义配置文件进行保存。
3.根据权利要求2所述的方法,其特征在于,获取当前修改为源码类型的依赖的源代码的本地存储路径,包括:
在本地磁盘中查找当前修改为源码类型的依赖的源代码;
若查找到,则将查找到的源代码在本地磁盘的存储路径确定为当前修改为源码类型的依赖的源代码的本地存储路径;
若未查找到,则根据当前修改为源码类型的依赖对应的依赖信息中的源代码地址下载源代码,将下载的所述源代码存储在本地磁盘中,并将所述源代码在本地磁盘的存储路径确定为当前修改为源码类型的依赖的源代码的本地存储路径。
4.根据权利要求2所述的方法,其特征在于,所述切换命令中包含:软件工程中待调试的模块对应的二进制类型的依赖标识,或者,软件工程中全部二进制类型的依赖标识。
5.根据权利要求2所述的方法,其特征在于,在接收到切换命令之前,所述方法还包括:
在接收到分析命令时,基于加载的编译脚本的配置文件获取软件工程中的各依赖分别对应的依赖类型和依赖信息存储路径;
对于各二进制类型的依赖,基于当前二进制类型的依赖信息存储路径,远程查询当前二进制类型的依赖对应的依赖信息,并将所述依赖信息存储在所述原始配置文件中。
6.根据权利要求5所述的方法,其特征在于,所述当前二进制类型的依赖对应的依赖信息包括:
依赖的范围、依赖信息存储路径、依赖标识、依赖类型以及源代码地址。
7.根据权利要求1-6中任一项所述的方法,其特征在于,通过编译工具的插件模块,加载预先生成的自定义配置文件,以及对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
通过所述编译工具的编译模块,基于更新后的编译脚本的配置文件,执行软件工程编译操作。
8.根据权利要求7所述的方法,其特征在于,所述编译工具为Gradle工具。
9.一种软件工程的编译装置,其特征在于,所述装置包括:
配置文件加载模块,用于在接收到编译命令时,加载预先生成的自定义配置文件;其中,所述自定义配置文件中包含至少一个源码类型的依赖分别对应的依赖信息,各所述依赖信息包括对应依赖的依赖标识、依赖类型和源代码的本地存储路径;
依赖信息替换模块,用于对于各所述源码类型的依赖,在已加载的编译脚本的配置文件中,查找依赖标识与当前源码类型的依赖标识相同的依赖,并将查找到的依赖信息替换为当前源码类型的依赖信息;
编译操作执行模块,用于基于更新后的编译脚本的配置文件,执行软件工程编译操作。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的软件工程的编译方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的软件工程的编译方法。
CN202111493903.4A 2021-12-08 2021-12-08 软件工程的编译方法、装置、设备及介质 Pending CN114138281A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111493903.4A CN114138281A (zh) 2021-12-08 2021-12-08 软件工程的编译方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111493903.4A CN114138281A (zh) 2021-12-08 2021-12-08 软件工程的编译方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN114138281A true CN114138281A (zh) 2022-03-04

Family

ID=80385209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111493903.4A Pending CN114138281A (zh) 2021-12-08 2021-12-08 软件工程的编译方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN114138281A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116661757A (zh) * 2023-07-26 2023-08-29 北京乐研科技股份有限公司 一种程序模块化的文件优先编译系统和方法
CN116991427A (zh) * 2023-09-26 2023-11-03 统信软件技术有限公司 一种应用编译方法、装置、计算设备及存储介质
CN117251165A (zh) * 2023-08-24 2023-12-19 上海合芯数字科技有限公司 Buildroot编译方法、装置、终端及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614701A (zh) * 2016-12-26 2018-10-02 中移(苏州)软件技术有限公司 一种Linux操作系统定制方法及装置
US20190146762A1 (en) * 2017-11-13 2019-05-16 Bank Of America Corporation Intelligent software compiler dependency fulfillment
CN110333872A (zh) * 2019-07-09 2019-10-15 广州虎牙科技有限公司 一种应用的处理方法、装置、设备和介质
CN110659031A (zh) * 2019-09-24 2020-01-07 深圳传音控股股份有限公司 应用程序的编译方法、装置、电子设备及存储介质
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614701A (zh) * 2016-12-26 2018-10-02 中移(苏州)软件技术有限公司 一种Linux操作系统定制方法及装置
US20190146762A1 (en) * 2017-11-13 2019-05-16 Bank Of America Corporation Intelligent software compiler dependency fulfillment
CN110333872A (zh) * 2019-07-09 2019-10-15 广州虎牙科技有限公司 一种应用的处理方法、装置、设备和介质
CN110659031A (zh) * 2019-09-24 2020-01-07 深圳传音控股股份有限公司 应用程序的编译方法、装置、电子设备及存储介质
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
""Generating precise dependencies for large software"", 《2013 4TH INTERNATIONAL WORKSHOP ON MANAGING TECHNICAL DEBT》, 26 September 2013 (2013-09-26) *
江梦涛: "" Linux内核中编译选项、文件以及函数之间依赖关系的解析方法"", 《计算机科学》, 15 June 2014 (2014-06-15) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116661757A (zh) * 2023-07-26 2023-08-29 北京乐研科技股份有限公司 一种程序模块化的文件优先编译系统和方法
CN116661757B (zh) * 2023-07-26 2023-10-03 北京乐研科技股份有限公司 一种程序模块化的文件优先编译系统和方法
CN117251165A (zh) * 2023-08-24 2023-12-19 上海合芯数字科技有限公司 Buildroot编译方法、装置、终端及介质
CN116991427A (zh) * 2023-09-26 2023-11-03 统信软件技术有限公司 一种应用编译方法、装置、计算设备及存储介质
CN116991427B (zh) * 2023-09-26 2023-12-29 统信软件技术有限公司 一种应用编译方法、装置、计算设备及存储介质

Similar Documents

Publication Publication Date Title
CN109976761B (zh) 软件开发工具包的生成方法、装置及终端设备
CN106796522B (zh) 用于更新源代码文件的系统和方法
CN114138281A (zh) 软件工程的编译方法、装置、设备及介质
US11481200B1 (en) Checking source code validity at time of code update
KR20110060822A (ko) 외래 정보를 분할함에 의한 가상 머신 코드의 메모리 최적화
US5960197A (en) Compiler dispatch function for object-oriented C
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
CN110673837B (zh) 代码修复方法及装置、电子设备、计算机可读存储介质
CN110058861B (zh) 源码处理方法及装置、存储介质、电子设备
CN111459499A (zh) 程序编译方法及装置、计算机存储介质、电子设备
CN111078279A (zh) 字节码文件的处理方法、装置、设备及存储介质
CN109388568B (zh) 代码测试方法和装置
US20180196669A1 (en) Reduced save and restore instructions for call-clobbered registers
CN111105289B (zh) 一种基于aop方式的客户端订单取消判断方法及装置
CN107817972B (zh) 缓存代码处理方法、装置、存储介质及电子设备
US11947966B2 (en) Identifying computer instructions enclosed by macros and conflicting macros at build time
CN110737438A (zh) 一种数据处理方法和装置
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
CN114860202A (zh) 项目运行方法、装置、服务器及存储介质
US10776255B1 (en) Automatic verification of optimization of high level constructs using test vectors
US9720660B2 (en) Binary interface instrumentation
CN113901025A (zh) 数据库管理方法、装置、设备和存储介质
CN113504904A (zh) 用户定义函数实现方法、装置、计算机设备和存储介质
CN117234466B (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