CN110134399B - 编译方法及装置 - Google Patents

编译方法及装置 Download PDF

Info

Publication number
CN110134399B
CN110134399B CN201910197983.5A CN201910197983A CN110134399B CN 110134399 B CN110134399 B CN 110134399B CN 201910197983 A CN201910197983 A CN 201910197983A CN 110134399 B CN110134399 B CN 110134399B
Authority
CN
China
Prior art keywords
dependency
code
compiling
preset
library
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
Application number
CN201910197983.5A
Other languages
English (en)
Other versions
CN110134399A (zh
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.)
Beijing CHJ Automobile Technology Co Ltd
Original Assignee
Beijing CHJ Automobile Technology 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 Beijing CHJ Automobile Technology Co Ltd filed Critical Beijing CHJ Automobile Technology Co Ltd
Priority to CN201910197983.5A priority Critical patent/CN110134399B/zh
Publication of CN110134399A publication Critical patent/CN110134399A/zh
Application granted granted Critical
Publication of CN110134399B publication Critical patent/CN110134399B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal 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集成开发环境(AndroidStudio,AS)中的依赖的代码或者资源丰富,为追求开发效率,很多应用软件都是在AS下进行编译的,然而,AS下编译得到的软件存在安全性较低的问题。
发明内容
本发明实施例提供一种编译方法及装置,以解决目前在集成开发环境中编译得到的软件存在安全性较低的问题。
本发明实施例为解决上述问题提供一种编译方法,包括:
接收第一客户端向软件项目管理工具提交的待发布代码;
修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;
对修改后的所述待发布代码进行编译。
可选的,在所述修改所述待发布代码中的目标依赖路径的步骤之前,还包括:
接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;
将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,在所述修改所述待发布代码中的目标依赖路径的步骤之前,还包括:
接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;
若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;
将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,所述预设依赖库中的依赖包与系统依赖库中的依赖包一致。
可选的,所述方法还包括:
若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
可选的,所述方法还包括:
将所述预设依赖库中的依赖包同步上传至系统依赖库中;
所述若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包的步骤,包括:
若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
可选的,在所述对修改后的所述待发布代码进行编译的步骤之后,还包括:
若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败消息包括目标代码段的位置标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。
本发明实施例还提供一种编译装置,包括:
第一接收模块,用于接收第一客户端向软件项目管理工具提交的待发布代码;
修改模块,用于修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,其中,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;
编译模块,用于对修改后的所述待发布代码进行编译。
可选的,所述编译装置还包括:
第一生成模块,用于接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;
第一上传模块,用于将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,所述编译装置还包括:
第二接收模块,用于接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;
第二生成模块,用于若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;
第二上传模块,用于将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,所述预设依赖库中的依赖包与系统依赖库中的依赖包一致。
可选的,所述编译装置还包括:
反馈模块,用于若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
可选的,所述编译装置还包括:
同步模块,用于将所述预设依赖库中的依赖包同步上传至系统依赖库中;
所述反馈模块,具体用于若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
可选的,所述编译装置还包括:
第二反馈模块,用于若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败消息包括目标代码段的位置标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的编译方法的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机序被处理器执行时实现如上所述的编译方法的步骤。
本发明实施例中,通过接收第一客户端向软件项目管理工具提交的待发布代码;修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;对修改后的所述待发布代码进行编译。这样,能够确保编译所依赖的依赖包均属于预设依赖库中已通过安全评审的依赖包,编译后得到的软件的安全性高。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的编译方法的流程图;
图2为本发明另一实施例提供的编译方法的流程图;
图3为本发明一实施例提供的编译装置的结构示意图;
图4为本发明另一实施例提供的编译装置的结构示意图;
图5为本发明另一实施例提供的编译装置的结构示意图;
图6为本发明另一实施例提供的编译装置的结构示意图;
图7为本发明另一实施例提供的编译装置的结构示意图;
图8为实现本发明各个实施例的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明一实施例提供的编译方法的流程图。如图1所示,包括以下步骤:
步骤101:接收第一客户端向软件项目管理工具提交的待发布代码;
第一客户端为开发工程师所用的客户端,开发工程师通过第一客户端提交待发布代码,待发布代码编译成功后得到软件。通过各种脚本设置使第一客户端访问的只能是本地的软件项目管理工具私服。
本发明实施例提供的编译方法可以应用于多种操作系统,例如:Android操作系统、Windows操作系统、iOS操作系统等等,在一种操作系统中还可以适用于不同的编程语言,例如:C语言、C++语言、Java语言等等。软件项目管理工具依据操作系统和编程语言的不同而不同,例如:在操作系统为Android操作系统、编程语言为Java语言的情况下,通过开源工具gradle访问软件项目管理工具时,软件项目管理工具可以是Maven。
步骤102:修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;
预设依赖库中的全部依赖包均为已通过安全评审的依赖包,通过依赖预设依赖库中的依赖包能够保证编译后得到的软件的安全性。而预设依赖库之外的依赖库(即非预设依赖库)中的依赖包未经过安全评审,通过依赖非预设依赖库中的依赖包编译后得到的软件的安全性得不到保障,存在较大的安全隐患。
待发布代码中包括有指向编译过程中需要利用的依赖包的依赖路径,通过对待发布代码的依赖路径进行识别,筛选出目标依赖路径,再对目标依赖路径修改为指向预设依赖库,从而确保待发布代码在编译过程中利用的依赖包均为已通过安全评审的依赖包。
步骤103:对修改后的所述待发布代码进行编译。
通过对目标依赖路径均修改后的待发布代码进行编译,即在编译过程中全部利用预设依赖库中已通过安全评审的依赖包进行编译。
若编译成功,则得到的软件能够具有安全性的保障。
若编译失败,则向第一客户端反馈编译失败消息,待第一客户端重新上传待发布代码。
本发明实施例中,通过接收第一客户端向软件项目管理工具提交的待发布代码;修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;对修改后的所述待发布代码进行编译。这样,能够确保编译所依赖的依赖包均属于预设依赖库中已通过安全评审的依赖包,编译后得到的软件的安全性高。
请参阅图2,图2为本发明另一实施例提供的编译方法的流程图。图2所示实施例中,
步骤201:接收第一客户端向软件项目管理工具提交的待发布代码;
步骤202:修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;
步骤203:对修改后的所述待发布代码进行编译。
步骤201-203的实现过程和有益效果可以对应参阅步骤101-103中的描述,此处不再赘述。
可选的,在步骤203之后,还可以包括:若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败消息包括目标代码段的位置标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。
目标代码段即待发布代码中预设依赖库不能满足其依赖的代码段,此时存在两种可能,一、目标代码编写错误导致为能够成功依赖预设依赖库中存在的依赖包;二、预设依赖库中不存在能够满足目标代码段依赖的依赖包。
通过编译失败消息中向用户反馈目标代码段的位置标识信息,能够提示用户编译失败的问题的原因,便于用户检查问题,避免用户不清楚原因而通篇检查浪费时间的问题,节约了处理问题的时间。
需要说明的是,若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败消息包括目标代码段的位置标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。同样也适用于图1所示的实施例中,且具有相同的有益效果。
其中,预设依赖库中并非编译所需的全部依赖包都有,因此在编译之前,开发工程师能够自行制作并上传依赖包。
在一可选的实施方式中,在步骤201之前,图2所示实施例可以包括:
接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;
将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
本实施方式中,本地客户端为与软件项目管理工具同处于本地的客户端,用于编写代码的源代码是安全的。在工程师撰写的第一待编译代码,经过各种安全检查评审验证后,通过本地客户端提交到软件项目管理工具上,编译工具通过对第一待编译代码进行打包,生成包括第一待编译代码的第一依赖包后,将第一依赖包上传至软件项目管理工具上的预设依赖库中。
另外,在每上传一次第一依赖包后,可以相应的添加版本标签记录,在新版本编译出现异常时能够通过标签先返回旧版本,再查找异常原因,保证编译工作的顺利。
这样,在待发布代码编译过程中需要依赖第一依赖包,而之前预设依赖库中没有第一依赖包的情况下,用于能够通过本地客户端自行创建依赖,生成包括第一待编译代码的第一依赖包,并上传至预设依赖库中。既保证了编译的安全性,同时还能够扩展预设依赖库的丰富性,保证编译的顺利进行。
需要说明的是,接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。只是可选的一种实施方式,且同样适用于图1所示的实施例中。
在另一可选的实施方式中,在步骤201之前,图2所示实施例可以包括:
接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;
若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;
将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中。
本实施方式中,网络客户端为与软件项目管理工具不处于本地的客户端,用于编写代码的源代码安全性未知。网络客户端撰写的第二待编译代码的源代码存在安全隐患,因此,网络客户端在提交第二待编译代码的同时还需要提交第二待编译代码的源代码。通过对第二待编译代码的源代码进行预设评审,即可判断第二待编译代码是否安全,其中,预设评审可以包括通过Gerrit评审、通过coverity进行静态代码检查、通过license工具对许可证进行检查、通过代码风格检查工具对代码风格检查、以及资深的代码专家对代码评审中的至少一项。
通过预设评审则认为第二待编译代码为安全代码,从而将第二待编译代码进行打包,生成包括第二待编译代码的第二依赖包后,将第二依赖包上传至软件项目管理工具上的预设依赖库中。
另外,在每上传一次第二依赖包后,可以相应的添加版本标签记录,在新版本编译出现异常时能够通过标签先返回旧版本,再查找异常原因,保证编译工作的顺利。
这样,在待发布代码编译过程中需要依赖第二依赖包,而之前预设依赖库中没有第二依赖包,网络上有第二依赖包的情况下,能够通过网络客户端提交网络上对应第二依赖包的第二待编译代码及其源代码,并在源代码通过预设评审后,重新生成包括第二待编译代码的第二依赖包,并上传至预设依赖库中。既保证了编译的安全性,同时还能够扩展预设依赖库的丰富性,保证编译的顺利进行。
需要说明的是,接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中。只是可选的一种实施方式,且同样适用于图1所示的实施例中。
另外,预设依赖库中的依赖包可以与系统依赖库中的依赖包一致。即在系统依赖库或预设依赖库每次补充新的依赖包后,双方同步进行补充,从而保持预设依赖库中的依赖包与系统依赖库中的依赖包一致。预设依赖库中的依赖包与系统依赖库中的依赖包一致,可以使在依赖于预设依赖库的编译和依赖于系统依赖库的编译均保持安全性和开发的同步性。
例如:操作系统为Android系统为例,Android系统依赖库官方更新后,可以在预设依赖库中同步进行更新。
需要说明的是,预设依赖库中的依赖包可以与系统依赖库中的依赖包一致也同样适用于图1所示实施例,且具有相同的有益效果。
步骤204:若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
第二客户端为编写的待发布代码不在本地环境中编译的开发工程师(例如:云端开发工程师、传统Android开发工程师)所用的客户端。在其他环境中编译需要用到预设依赖库中的依赖包,则需要第二客户端发送获取请求。通过接收到的获取请求,确定与该获取请求对应的目标依赖包,将该目标依赖包反馈回第二客户端。
具体的,在一可选的实施方式中,编译方法还包括:
将所述预设依赖库中的依赖包同步上传至系统依赖库中;
步骤204具体包括:
若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
在本实施方式中,第二客户端仅能够直接与系统依赖库通信,不能直接与软件项目管理工具通信。通过将预设依赖库中的依赖包同步上传至系统依赖库中,能够使第二客户端在不能与软件项目管理工具直接通信的情况下也能够获得软件项目管理工具上的预设依赖库中的依赖包。
其中,预设依赖库中的依赖包同步上传至系统依赖库中的动作可以是每间隔预设周期完成的;也可以是在每次上传有新的依赖包后,将预设依赖库中全部的依赖包同步上传至系统依赖库中,或者仅将新的依赖包上传至系统依赖库中来完成的,对此不做限定。
以操作系统为Android系统、第二客户端为Androidos开发工程师所用的客户端为例,可以通过接收到第二客户端发送的包括Android.mk或Android.bp文件的获取请求,从同步后的系统依赖库中确定对应的目标依赖包,将该目标依赖包反馈回第二客户端。
本实施方式,通过将预设依赖库中的依赖包同步上传至系统依赖库中,能够使无法直接从预设依赖库中获取依赖包的第二客户端直接从系统依赖库中获取,避免用于多项开发的多重编译环境之间额外的设置,提升系统整体的开发效率。
由于不同编译环境之间的依赖库并不互通,图2所示实施例中,在第二客户端提交的待发布代码需要依赖的目标依赖包在编译环境没有而预设依赖库中有的时候,可以通过第二客户端从预设依赖库中获取对应的依赖包,从而使得第二依赖客户端的编译环境中得到目标依赖包,顺利完成第二客户端提交的待发布代码的顺利编译,增加了系统中不同编译环境之间依赖包的获取路径,提升系统的编译效率。
请参阅图3,图3为本发明一实施例提供的编译装置的结构图。如图3所示,编译装置300包括第一接收模块301、修改模块302和编译模块303;
第一接收模块301,用于接收第一客户端向软件项目管理工具提交的待发布代码;
修改模块302,用于修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,其中,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;
编译模块303,用于对修改后的所述待发布代码进行编译。
可选的,请参阅图4,编译装置300还包括:
第一生成模块304,用于接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;
第一上传模块305,用于将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,请参阅图5,编译装置300还包括:
第二接收模块306,用于接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;
第二生成模块307,用于若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;
第二上传模块308,用于将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,预设依赖库中的依赖包与系统依赖库中的依赖包一致。
可选的,如图6所示,编译装置300还包括:
第一反馈模块309,用于若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
可选的,如图7所示,编译装置300还包括:
同步模块310,用于将所述预设依赖库中的依赖包同步上传至系统依赖库中;
所述第一反馈模块309,具体用于若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
可选的,编译装置300还包括:
第二反馈模块(图未示),用于若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败信息包括所述目标代码段的标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。
编译装置300能够实现图1和图2的方法实施例中编译装置实现的各个过程,为避免重复,这里不再赘述。
本发明实施例的编译装置300,能够确保编译所依赖的依赖包均属于预设依赖库中已通过安全评审的依赖包,编译后得到的软件的安全性高。
本发明实施例还提供一种电子设备,包括该电子设备800包括但不限于:射频单元801、网络模块802、用户输入单元803、接口单元804、存储器805、处理器806、以及电源807等部件。本领域技术人员可以理解,图8中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器806,用于接收第一客户端向软件项目管理工具提交的待发布代码;修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;对修改后的所述待发布代码进行编译。
可选的,处理器806还用于:接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,处理器806还用于:收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中。
可选的,预设依赖库中的依赖包与系统依赖库中的依赖包一致。
可选的,处理器806还用于:若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
可选的,处理器806还用于:将所述预设依赖库中的依赖包同步上传至系统依赖库中;若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包的步骤中,具体用于:若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
电子设备800能够实现前述实施例中编译方法实现的各个过程,为避免重复,这里不再赘述。
本发明实施例的电子设备800,通过接收第一客户端向软件项目管理工具提交的待发布代码;修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;对修改后的所述待发布代码进行编译。这样,能够确保编译所依赖的依赖包均属于预设依赖库中已通过安全评审的依赖包,编译后得到的软件的安全性高。
应理解的是,本发明实施例中,射频单元801可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器810处理;另外,将上行的数据发送给基站。通常,射频单元801包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元801还可以通过无线通信系统与网络和其他设备通信。
电子设备通过网络模块802为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
用户输入单元803可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元803包括触控面板8031以及其他输入设备8032。触控面板8031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板8031上或在触控面板8031附近的操作)。触控面板8031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器806,接收处理器806发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板8031。除了触控面板8031,用户输入单元803还可以包括其他输入设备8032。具体地,其他输入设备8032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
接口单元804为外部装置与电子设备800连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元804可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备800内的一个或多个元件或者可以用于在电子设备800和外部装置之间传输数据。
存储器805可用于存储软件程序以及各种数据。存储器805可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器805可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器806是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器805内的软件程序和/或模块,以及调用存储在存储器805内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器806可包括一个或多个处理单元;优选的,处理器806可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器806中。
电子设备800还可以包括给各个部件供电的电源807(比如电池),优选的,电源807可以通过电源管理系统与处理器806逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,电子设备800包括一些未示出的功能模块,在此不再赘述。
优选的,本发明实施例还提供一种电子设备,包括处理器806,存储器805,存储在存储器805上并可在所述处理器806上运行的计算机程序,该计算机程序被处理器806执行时实现上述编译方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述编译方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

Claims (14)

1.一种编译方法,其特征在于,包括:
接收第一客户端向软件项目管理工具提交的待发布代码;
接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;
若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;
将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中;
待发布代码中包括有指向编译过程中需要利用的依赖包的依赖路径,通过对所述依赖包的依赖路径进行识别,筛选出目标依赖路径,将所述目标依赖路径修改为指向预设依赖库,以使待发布代码在编译过程中利用的依赖包均为已通过安全评审的依赖包,其中,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;
对修改后的所述待发布代码进行编译。
2.根据权利要求1所述的方法,其特征在于,在所述修改所述待发布代码中的目标依赖路径的步骤之前,还包括:
接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;
将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
3.根据权利要求1所述的方法,其特征在于,所述预设依赖库中的依赖包与系统依赖库中的依赖包一致。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将所述预设依赖库中的依赖包同步上传至系统依赖库中;
所述若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包的步骤,包括:
若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
6.根据权利要求1所述的方法,其特征在于,在所述对修改后的所述待发布代码进行编译的步骤之后,还包括:
若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败消息包括目标代码段的位置标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。
7.一种编译装置,其特征在于,包括:
第一接收模块,用于接收第一客户端向软件项目管理工具提交的待发布代码;
第二接收模块,用于接收网络客户端向所述软件项目管理工具提交的第二待编译代码和所述第二待编译代码的源代码;
第二生成模块,用于若所述第二待编译代码的源代码通过预设评审,则生成包括所述第二待编译代码的第二依赖包;
第二上传模块,用于将所述第二依赖包上传至所述软件项目管理工具上的预设依赖库中;
修改模块,用于修改所述待发布代码中的目标依赖路径,所述目标依赖路径为用于依赖除预设依赖库之外的依赖库的依赖路径,其中,所述预设依赖库为在所述软件项目管理工具上建立的本地依赖库;其中,待发布代码中包括有指向编译过程中需要利用的依赖包的依赖路径,通过对所述依赖包的依赖路径进行识别,筛选出目标依赖路径,将所述目标依赖路径修改为指向预设依赖库,以使待发布代码在编译过程中利用的依赖包均为已通过安全评审的依赖包;
编译模块,用于对修改后的所述待发布代码进行编译。
8.根据权利要求7所述的编译装置,其特征在于,所述编译装置还包括:
第一生成模块,用于接收本地客户端向所述软件项目管理工具提交的第一待编译代码,并生成包括所述第一待编译代码的第一依赖包;
第一上传模块,用于将所述第一依赖包上传至所述软件项目管理工具上的预设依赖库中。
9.根据权利要求7所述的编译装置,其特征在于,所述预设依赖库中的依赖包与系统依赖库中的依赖包一致。
10.根据权利要求7所述的编译装置,其特征在于,所述编译装置还包括:
第一反馈模块,用于若接收到第二客户端发送的获取请求,则向所述第二客户端反馈与所述获取请求对应的依赖包。
11.根据权利要求10所述的编译装置,其特征在于,所述编译装置还包括:
同步模块,用于将所述预设依赖库中的依赖包同步上传至系统依赖库中;
所述第一反馈模块,具体用于若接收到第二客户端发送的包括预设格式文件的获取请求,则向所述第二客户端反馈所述系统依赖库中与所述获取请求对应的依赖包。
12.根据权利要求7所述的编译装置,其特征在于,所述编译装置还包括:
第二反馈模块,用于若编译失败,则向所述第一客户端反馈编译失败消息,所述编译失败消息包括目标代码段的位置标识信息,所述目标代码段为所述待发布代码中所述预设依赖库未满足的依赖路径对应的代码段。
13.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的编译方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机序被处理器执行时实现如权利要求1至6中任一项所述的编译方法的步骤。
CN201910197983.5A 2019-03-15 2019-03-15 编译方法及装置 Active CN110134399B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910197983.5A CN110134399B (zh) 2019-03-15 2019-03-15 编译方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910197983.5A CN110134399B (zh) 2019-03-15 2019-03-15 编译方法及装置

Publications (2)

Publication Number Publication Date
CN110134399A CN110134399A (zh) 2019-08-16
CN110134399B true CN110134399B (zh) 2024-01-09

Family

ID=67568723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910197983.5A Active CN110134399B (zh) 2019-03-15 2019-03-15 编译方法及装置

Country Status (1)

Country Link
CN (1) CN110134399B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659031A (zh) * 2019-09-24 2020-01-07 深圳传音控股股份有限公司 应用程序的编译方法、装置、电子设备及存储介质
CN111241823A (zh) * 2020-01-07 2020-06-05 北京字节跳动网络技术有限公司 一种依赖配置的管理方法、装置、电子设备及存储介质
CN117251165B (zh) * 2023-08-24 2024-06-25 上海合芯数字科技有限公司 Buildroot编译方法、装置、终端及介质
CN117251166B (zh) * 2023-08-25 2024-06-18 上海合芯数字科技有限公司 缩短op-build编译时间的编译方法、装置、终端及介质
CN117216770A (zh) * 2023-09-25 2023-12-12 江苏天好富兴数据技术有限公司 一种DevOps流水线超融合部署安全检测系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102200924A (zh) * 2011-05-17 2011-09-28 北京北大众志微系统科技有限责任公司 基于模调度实现循环指令调度的编译方法及装置
CN104641351A (zh) * 2012-10-25 2015-05-20 英特尔公司 部分向量化编译系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120278788A1 (en) * 2011-04-29 2012-11-01 General Electric Company Methods for code generation from semantic models and rules
CN106775730A (zh) * 2016-12-21 2017-05-31 深圳Tcl数字技术有限公司 程序发布方法及系统
CN108196843B (zh) * 2018-01-09 2021-03-26 成都睿码科技有限责任公司 可视化Docker容器自动编译部署的运维方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102200924A (zh) * 2011-05-17 2011-09-28 北京北大众志微系统科技有限责任公司 基于模调度实现循环指令调度的编译方法及装置
CN104641351A (zh) * 2012-10-25 2015-05-20 英特尔公司 部分向量化编译系统

Also Published As

Publication number Publication date
CN110134399A (zh) 2019-08-16

Similar Documents

Publication Publication Date Title
CN110134399B (zh) 编译方法及装置
CN106970790B (zh) 一种应用程序创建的方法、相关设备及系统
CN111176961B (zh) 一种应用程序测试方法、装置及存储介质
CN104598513B (zh) 一种基于网页框架的数据流控制方法和系统
CN108920366B (zh) 一种子应用调试方法、装置及系统
CN111142930B (zh) 安装包文件打包方法、装置、终端设备及存储介质
CN103634109A (zh) 操作权限验证方法和装置
CN103634294A (zh) 信息验证方法和装置
CN105630685A (zh) 程序接口测试方法及装置
CN106445548B (zh) 一种测试包下发方法和装置
CN105389177A (zh) 一种软件版本确认方法、装置及系统
CN108984202B (zh) 一种电子资源分享方法、装置和存储介质
CN111176794A (zh) 一种容器管理方法、装置及可读存储介质
CN111723002A (zh) 一种代码调试方法、装置、电子设备及存储介质
CN105468393A (zh) 模块版本升级方法及终端装置
CN107844318B (zh) 一种操作系统的升级方法及移动终端和服务器
CN111209031A (zh) 一种数据获取方法、装置、终端设备及存储介质
CN104391629A (zh) 定向发送消息的方法、显示消息的方法、服务器及终端
CN116383064A (zh) 一种自动化脚本造数平台及方法
CN107318100A (zh) 用于绑定手机号码的方法、装置及系统
CN105681291A (zh) 一种实现多客户端统一认证方法及系统
CN112527377B (zh) 应用程序生成处理方法、装置、计算机设备和存储介质
CN114461183A (zh) 基于用户标签的ai模型快速组合的方法、装置及存储介质
CN112418835B (zh) 一种测试网银支付流程的方法和相关装置
CN112328304A (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