CN110764776A - 依赖组件管控方法和装置 - Google Patents

依赖组件管控方法和装置 Download PDF

Info

Publication number
CN110764776A
CN110764776A CN201910906064.0A CN201910906064A CN110764776A CN 110764776 A CN110764776 A CN 110764776A CN 201910906064 A CN201910906064 A CN 201910906064A CN 110764776 A CN110764776 A CN 110764776A
Authority
CN
China
Prior art keywords
management
dependent
dependent component
control
dependency
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
CN201910906064.0A
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.)
CITIC Aibank Corp Ltd
Original Assignee
CITIC Aibank Corp 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 CITIC Aibank Corp Ltd filed Critical CITIC Aibank Corp Ltd
Priority to CN201910906064.0A priority Critical patent/CN110764776A/zh
Publication of CN110764776A publication Critical patent/CN110764776A/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

Landscapes

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

Abstract

本发明公开了一种依赖组件管控方法,主要包括:依赖组件管控子系统接收至少一个依赖组件信息;所述依赖组件管控子系统根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果;若所述判断结果为需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将管控指令和所述影响范围发送至依赖扫描插件。本发明提供的依赖管控方案,能够实现对依赖组件合法性的检测,同时实现在问题依赖组件的准确影响范围内对其进行管控。

Description

依赖组件管控方法和装置
技术领域
本发明涉及电数字数据处理技术领域,特别是涉及一种依赖组件管控方法和装置。
背景技术
在软件开发中,为了更好的复用,通常会将不同功能的代码以独立组件的方式对外提供。其他软件通过复用这些独立的组件,大大提高了软件开发的效率。随着Maven、Gradle等依赖管理系统的逐渐成熟,像Spring、mybatis、log4j等开源可复用组件如雨后春笋般不断涌现。除此之外,企业内部也会以可复用作为软件开发的基本原则。
DevOps的目标是在保证软件质量的基础上不断缩短软件交付的周期。那么,在构建方式多样性,依赖第三方组件多样性的情况下,如何保证软件本身的质量就是一个非常关键的问题。当发现某个组件存在问题时,如何清楚的知道该组件的影响范围,又该如何阻止该组件在软件中使用也是一个亟待解决的问题。
目前业界都是通过制定管理制度和人工检查的方式进行管控,暂未有通过计算机方法和系统解决依赖管控的问题的相关资料。通过订立管理制度进行人工检查的方式不仅管控效果不好,而且检查效率低效,并没有达到全局性管控的目的。
发明内容
为实现高效、准确地对依赖组件进行计算机管控的目的,本发明提出一种依赖组件管控方法和装置。
为实现上述目的,本申请的技术解决方案为:
一方面提供一种依赖管控方法,主要包括:
依赖组件管控子系统接收至少一个依赖组件信息;
所述依赖组件管控子系统根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果;
若所述判断结果为需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将管控指令和所述影响范围发送至依赖扫描插件。
另一方面又提供一种依赖管控方法,主要包括:
在软件编译过程中,依赖扫描插件收集至少一个依赖组件信息,上传至依赖组件管控子系统;
所述依赖扫描插件接收所述依赖组件管控子系统对所述依赖组件信息的校验结果;
所述依赖扫描插件根据所述校验结果对所述编译过程进行管控。
再一方面提供一种依赖管控装置,主要包括:
依赖组件管控子系统,用于接收至少一个依赖组件信息,并根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果,如需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将所述判断结果和所述影响范围发送至依赖扫描插件。
再一方面又提供一种依赖管控装置,主要包括:
依赖扫描插件,用于在软件编译过程中,扫描依赖组件信息,并将所述依赖组件信息上传至依赖组件管控子系统。
综上所述,本申请提供的依赖管控方案,在编译阶实现对依赖组件合法性的检测;及时、有效的阻止不合法依赖组件继续使用,迅速了解影响范围,实现最小影响范围内的编译管控。同时本方案中包括的反馈机制能够有效地推动开发人员对依赖组件进行持续改进。本方案能够保证软件高可用性和快速开发的目的,最终达到控制软件开发成本,提高软件开发效率,确保软件质量。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的管控方法的流程示意图;
图2为本申请另一实施例提供的管控方法的流程示意图;
图3为本申请另一实施例提供的管控方法的流程示意图;
图4为本申请一实施例提供的管控装置的结构示意图;
图5为本申请另一实施例提供的管控装置的结构示意图;
具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
实施例1
图1为本申请一实施例提供的一种依赖管控方法的流程示意图,该依赖管控方法可由具有数据处理能力的服务器执行,例如平板、笔记本电脑、掌上电脑、台式电脑等任何具有数据处理能力的服务器。如图1所示,该方法包括:
001:依赖组件管控子系统接收至少一个依赖组件信息;
可选地,依赖组件信息包括:所述依赖组件信息使用的系统名称、代码库名称、分支名称、commit命令名称和所述依赖组件的唯一标识。
002:所述依赖组件管控子系统根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果;
003:若所述判断结果为需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将管控指令和所述影响范围发送至依赖扫描插件。
可选地,该方法还包括:
所述依赖组件管控子系统通过所述依赖组件信息生成依赖树;
所述依赖管控子系统任选包括一个或多个问题组件名单,对于所述名单内的依赖组件,设定特定管控策略和管控范围。
例如,上述问题组件名单可包括:黑名单和白名单。
依赖管理中维护依赖组件黑名单,用于记录有问题的组件信息、管控策略和管控范围。编译时,获取黑名单列表并判断依赖组件中是否包含黑名单中的组件,并根据管控策略和管控范围进行处理。若依赖组件管控子系统检测到依赖组件在所述黑名单内,则编译过程会被警告或阻止。当管控策略为警告时,会在编译日志中给予警告提示;当管控策略为阻止时,会导致编译失败,并在编译日志中给予失败原因。当管控范围为代码库级别时,只有指定的代码库会被处理;当管控范围为系统时,只有指定系统下的代码库会被处理;当管控范围为全局时,所有系统下的所有代码库都会被处理。
依赖管理中维护依赖组件白名单,用于记录有问题但可过滤的组件信息、影响范围。编译时,若依赖组件管控子系统检测到依赖组件在所述白名单内,则根据依赖组件的影响范围,对相应代码库进行过滤。例如如果检测到依赖组件有pom文件问题(依赖组件如果没有pom.xml,Maven私服上传时会默认生成一个空的pom.xml文件,但可能会导致依赖缺失问题),如果该依赖组件并未导致依赖缺失,则需要添加到白名单。未包含在白名单列表中的问题组件,会导致编译失败。
依赖组件白名单的影响范围为代码库时,只有指定的代码库会被过滤;当影响范围为系统时,只有指定系统下的代码库会被过滤;当影响范围为全局时,所有系统下的所有代码库都会被过滤。
上述依赖树记录依赖组件间的父子关系,例如:父依赖组件依赖了子依赖组件1和子依赖组件2两个组件,则当依赖组件1被检测出问题时,其影响范围涉及父依赖组件,因此如无其他设定,管控范围将包括父依赖组件影响的范围。
可选地,该方法还包括:
当所述依赖组件需要管控时,所述依赖组件管控子系统通过所述依赖树查询所述依赖组件的影响范围。
实施例2
图2为本申请另一实施例提供的依赖管控方法,如图2所示,该方法包括:
101:在软件编译过程中,依赖扫描插件收集至少一个依赖组件信息,上传至依赖组件管控子系统;
优选地,所述在软件编译过程中,每次代码提交都会触发所述依赖扫描插件扫描,所述依赖扫描插件将每次发布版本的依赖组件信息上传至所述依赖组件管控子系统。
102:所述依赖扫描插件接收所述依赖组件管控子系统对所述依赖组件信息的校验结果;
103:所述依赖扫描插件根据所述校验结果对所述编译过程进行管控。
优选地,若编译过程需要管控,所述依赖扫描插件将相应信息发送给维护人员。
图3为本申请一实施例提供的管控方法的流程示意图,如图3所示,
在代码托管平台301(如Git)上提交代码后,代码托管平台301将信息发送至消息中间件302;编译机303编译机监听消息中间件302消息,当接收到消息后触发编译,在编译时,通过依赖扫描插件313进行扫描,并将扫描到的依赖组件信息上传至依赖组件管控子系统304。
实施例3
图4为本申请一实施例提供的依赖管控装置,如图4所示,该装置包括:
依赖组件管控子系统201,用于接收至少一个依赖组件信息,并根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果,如需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将所述判断结果和所述影响范围发送至依赖扫描插件。
优选地,该依赖管控子系统201包括:
依赖查看模块211,用于查看所述工程的依赖层次关系;
依赖管理模块221,用于判断所述依赖组件是否为问题依赖组件,并根据判断结果对所述问题依赖组件进行相应管控范围内的处理;
反向依赖模块231,用于查询有问题的依赖组件的影响范围。
实施例4
图5为本申请一实施例提供的依赖管控装置,如图5所示,该装置包括:
依赖扫描插件202,用于在软件编译203过程中,扫描依赖组件信息,并将所述依赖组件信息上传至依赖组件管控子系统201。
优选地,该依赖扫描插件202包括:
收集模块212,用于在编译阶段收集每个软件系统的所述依赖组件信息;
校验模块222,用于校验所述依赖组件的合法性;
管控模块232,用于对不合法的依赖组件进行管控;
反馈模块242,用于将问题组件需要管控的通知发送给用户。

Claims (10)

1.一种依赖管控方法,其特征在于,所述方法包括:
依赖组件管控子系统接收至少一个依赖组件信息;
所述依赖组件管控子系统根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果;
若所述判断结果为需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将管控指令和所述影响范围发送至依赖扫描插件。
2.根据权利要求1所述的依赖管控方法,其特征在于,所述方法还包括:
所述依赖组件管控子系统通过所述依赖组件信息生成依赖树;
所述依赖管控子系统任选包括一个或多个问题组件名单,对于所述名单内的依赖组件,设定特定管控策略和管控范围。
3.根据权利要求2所述的依赖管控方法,其特征在于,
所述依赖组件信息包括:所述依赖组件信息使用的系统名称、代码库名称、分支名称、commit命令名称和所述依赖组件的唯一标识。
4.根据权利要求1~3任一项所述的依赖管控方法,其特征在于,
所述方法还包括:
当所述依赖组件需要管控时,所述依赖组件管控子系统通过所述依赖树查询所述依赖组件的影响范围。
5.一种依赖管控方法,其特征在于,包括:
在软件编译过程中,依赖扫描插件收集至少一个依赖组件信息,上传至依赖组件管控子系统;
所述依赖扫描插件接收所述依赖组件管控子系统对所述依赖组件信息的校验结果;
所述依赖扫描插件根据所述校验结果对所述编译过程进行管控。
6.根据权利要求5所述的依赖管控方法,其特征在于,所述方法还包括:
所述在软件编译过程中,每次代码提交都会触发所述依赖扫描插件扫描,所述依赖扫描插件将每次发布版本的依赖组件信息上传至所述依赖组件管控子系统;
若编译过程需要管控,所述依赖扫描插件将相应信息发送给维护人员。
7.一种依赖管控装置,其特征在于,所述装置包括:
依赖组件管控子系统,用于接收至少一个依赖组件信息,并根据预设的管控策略判断所述依赖组件信息对应的依赖组件是否需要管控,生成判断结果,如需要管控,则根据所述管控策略中的依赖关系,判断所述依赖组件的影响范围,并将所述判断结果和所述影响范围发送至依赖扫描插件。
8.根据权利要求7所述的依赖管控装置,其特征在于,所述依赖管控子系统包括:
依赖查看模块,用于查看所述工程的依赖层次关系;
依赖管理模块,用于判断所述依赖组件是否为问题依赖组件,并根据判断结果对所述问题依赖组件进行相应管控范围内的处理;
反向依赖模块,用于查询有问题的依赖组件的影响范围。
9.一种依赖管控装置,其特征在于,所述装置包括:
依赖扫描插件,用于在软件编译过程中,扫描依赖组件信息,并将所述依赖组件信息上传至依赖组件管控子系统。
10.根据权利9的依赖管控装置,其特征在于,
所述依赖扫描插件包括:
收集模块,用于在编译阶段收集每个软件系统的所述依赖组件信息;
校验模块,用于校验所述依赖组件的合法性;
管控模块,用于对不合法的依赖组件进行管控;
反馈模块,用于将问题组件需要管控的通知发送给用户。
CN201910906064.0A 2019-09-24 2019-09-24 依赖组件管控方法和装置 Pending CN110764776A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910906064.0A CN110764776A (zh) 2019-09-24 2019-09-24 依赖组件管控方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910906064.0A CN110764776A (zh) 2019-09-24 2019-09-24 依赖组件管控方法和装置

Publications (1)

Publication Number Publication Date
CN110764776A true CN110764776A (zh) 2020-02-07

Family

ID=69330423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910906064.0A Pending CN110764776A (zh) 2019-09-24 2019-09-24 依赖组件管控方法和装置

Country Status (1)

Country Link
CN (1) CN110764776A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475164A (zh) * 2020-03-02 2020-07-31 百度在线网络技术(北京)有限公司 组件依赖关系检测方法、装置以及电子设备
CN111538495A (zh) * 2020-07-13 2020-08-14 深圳开源互联网安全技术有限公司 识别项目中引用Python开源组件的方法及系统、设备
CN111783103A (zh) * 2020-07-03 2020-10-16 Oppo广东移动通信有限公司 基于Maven的依赖管理方法、装置、电子装置及存储介质
CN113343223A (zh) * 2021-06-30 2021-09-03 招商局金融科技有限公司 Jar包安全监控方法、装置、计算机设备及存储介质
CN113641516A (zh) * 2021-08-09 2021-11-12 杭州安恒信息技术股份有限公司 一种扫描引擎管控方法、系统及计算机可读存储介质
CN114327595A (zh) * 2021-12-27 2022-04-12 北京金堤科技有限公司 组件发布方法、装置、设备及存储介质
CN117216770A (zh) * 2023-09-25 2023-12-12 江苏天好富兴数据技术有限公司 一种DevOps流水线超融合部署安全检测系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
JP2015143939A (ja) * 2014-01-31 2015-08-06 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
CN107729017A (zh) * 2017-10-12 2018-02-23 北京元心科技有限公司 编译方法、装置及设备
CN108345542A (zh) * 2018-02-28 2018-07-31 腾讯科技(深圳)有限公司 一种应用程序中异常处理方法及装置
CN109101236A (zh) * 2018-07-06 2018-12-28 政采云有限公司 基于规则引擎和maven插件实现的项目依赖管理方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015143939A (ja) * 2014-01-31 2015-08-06 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
CN107729017A (zh) * 2017-10-12 2018-02-23 北京元心科技有限公司 编译方法、装置及设备
CN108345542A (zh) * 2018-02-28 2018-07-31 腾讯科技(深圳)有限公司 一种应用程序中异常处理方法及装置
CN109101236A (zh) * 2018-07-06 2018-12-28 政采云有限公司 基于规则引擎和maven插件实现的项目依赖管理方法及系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475164A (zh) * 2020-03-02 2020-07-31 百度在线网络技术(北京)有限公司 组件依赖关系检测方法、装置以及电子设备
CN111475164B (zh) * 2020-03-02 2024-04-05 百度在线网络技术(北京)有限公司 组件依赖关系检测方法、装置以及电子设备
CN111783103A (zh) * 2020-07-03 2020-10-16 Oppo广东移动通信有限公司 基于Maven的依赖管理方法、装置、电子装置及存储介质
CN111783103B (zh) * 2020-07-03 2024-06-04 Oppo广东移动通信有限公司 基于Maven的依赖管理方法、装置、电子装置及存储介质
CN111538495A (zh) * 2020-07-13 2020-08-14 深圳开源互联网安全技术有限公司 识别项目中引用Python开源组件的方法及系统、设备
CN111538495B (zh) * 2020-07-13 2020-10-23 深圳开源互联网安全技术有限公司 识别项目中引用Python开源组件的方法及系统、设备
CN113343223A (zh) * 2021-06-30 2021-09-03 招商局金融科技有限公司 Jar包安全监控方法、装置、计算机设备及存储介质
CN113641516A (zh) * 2021-08-09 2021-11-12 杭州安恒信息技术股份有限公司 一种扫描引擎管控方法、系统及计算机可读存储介质
CN114327595A (zh) * 2021-12-27 2022-04-12 北京金堤科技有限公司 组件发布方法、装置、设备及存储介质
CN117216770A (zh) * 2023-09-25 2023-12-12 江苏天好富兴数据技术有限公司 一种DevOps流水线超融合部署安全检测系统及方法

Similar Documents

Publication Publication Date Title
CN110764776A (zh) 依赖组件管控方法和装置
US20200202006A1 (en) Vulnerability analyzer for application dependencies in development pipelines
CN110719300B (zh) 一种自动化漏洞验证的方法和系统
CN109918285B (zh) 一种开源软件的安全识别方法及装置
CN112988594A (zh) 用于代码质量评估的集成检测方法及系统
CN110059007B (zh) 系统漏洞扫描方法、装置、计算机设备及存储介质
CN114115906A (zh) 交易错误码校验方法、装置及计算机设备、存储介质
CN104767876A (zh) 基于软件的安全处理方法和用户终端
CN110231921B (zh) 日志打印方法、装置、设备及计算机可读存储介质
CN116599881A (zh) 云平台租户建模测试的方法、装置、设备及存储介质
CN114189349A (zh) 一种安全监测预警平台、安全监测预警方法及存储介质
US11593461B2 (en) Systems and methods for third-party library management
US20200167463A1 (en) Out-of-Band Content Analysis
CN111444483A (zh) 一种鉴权方法、装置及设备
CN110807885A (zh) 一种基于微信的报警方法及报警设备
CN117034368B (zh) 一种数据完整性的保护方法、装置、设备及存储介质
CN116541253B (zh) 应用的检测方法、系统、终端设备和可读存储介质
CN116415244A (zh) 项目代码的测试方法和装置、存储介质及电子装置
CN117633821A (zh) 一种基于分类的项目流程权限控制方法及系统
CN117707558A (zh) 系统部署方法、装置、计算设备及机器可读存储介质
CN116776299A (zh) 代码运行方法、装置和相关设备
CN115759061A (zh) 验证位于生产现场的实体的操作文件的方法和系统
CN113342779A (zh) 项目更新方法、装置及计算机可读存储介质
CN115421775A (zh) 数据处理方法、装置及电子设备、存储介质
CN117472756A (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