CN115543410A - 组件依赖关系分析方法、装置与介质 - Google Patents
组件依赖关系分析方法、装置与介质 Download PDFInfo
- Publication number
- CN115543410A CN115543410A CN202211504162.XA CN202211504162A CN115543410A CN 115543410 A CN115543410 A CN 115543410A CN 202211504162 A CN202211504162 A CN 202211504162A CN 115543410 A CN115543410 A CN 115543410A
- Authority
- CN
- China
- Prior art keywords
- component
- dependent
- party
- gradlew
- detection engine
- 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
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 114
- 230000001419 dependent effect Effects 0.000 claims abstract description 158
- 238000001514 detection method Methods 0.000 claims abstract description 83
- 238000004806 packaging method and process Methods 0.000 claims abstract description 16
- 238000001914 filtration Methods 0.000 claims description 18
- 230000008520 organization Effects 0.000 claims description 10
- 230000007246 mechanism Effects 0.000 claims description 9
- 238000012856 packing Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 20
- 241000535040 Gill-associated virus genotype 2 Species 0.000 description 13
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种组件依赖关系分析方法、装置与介质。本发明通过调用检测引擎,并在检测引擎确定第三方组件为架构项目时,通过检测引擎中的包装机GradleW命令引擎对架构项目中依赖的第三方组件进行分析;在检测到包装机GradleW命令引擎解析失败时,调用深度解析器对架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息;根据定位信息获取依赖组件数据,并对依赖组件数据进行汇总,生成依赖组件列表。通过基于GradleW命令对Gradle项目中依赖的第三方组件进行分析,从而提高组件依赖分析识别率、准确率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种组件依赖关系分析方法、装置与介质。
背景技术
组件依赖是指能够完成某种功能并且向外暴露一个或多个接口的代码集。组件依赖可以分为第三方开源组件库和自有组件库两种。
现如今的应用开发,无论是后端服务器应用还是前端应用开发,都需借助开发框架和各种组件库进行快速开发。据统计,现在一个应用有将近80%的代码其实是来自于第三方组件的依赖库,而应用自身编写的程序代码其实只有20%左右。目前市场上存在的技术和产品一般通过数据和执行命令来分析组件依赖,然而,现有的相关技术和产品在进行基于GradleW(Gradle Wrapper,包装机)分析Java组件依赖时,还存在组件识别率低、准确率低的问题。
发明内容
本发明的主要目的在于提出一种组件依赖关系分析方法、装置与介质,旨在提高组件依赖分析识别率、准确率。
为实现上述目的,本发明提供一种组件依赖关系分析方法,所述组件依赖关系分析方法包括如下步骤:
调用检测引擎,并在所述检测引擎确定第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析;
在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息;
根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表。
优选地,所述包装机GradleW命令引擎包括GradleW dependencies命令,所述架构项目包括Gradle项目,所述调用检测引擎,并在所述检测引擎确定当前第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行解析的步骤包括:
调用检测引擎,并通过所述检测引擎判断第三方组件是否为Gradle项目;
若所述第三方组件为Gradle项目,则通过所述检测引擎中的GradleWdependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息。
优选地,所述调用检测引擎,并通过所述检测引擎判断第三方组件是否为架构应用的步骤之后,还包括:
若所述第三方组件不为Gradle项目,则确定所述第三方组件解析失败,并退出组件依赖关系分析。
优选地,所述调用检测引擎,并在所述检测引擎确定第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行解析的步骤之前,还包括:
收集第三方组件的pom文件,并根据所述pom文件构建本地资源库,以及将所述pom文件存储至本地仓库。
优选地,所述在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息的步骤包括:
在检测到所述包装机GradleW命令引擎解析失败时,进入深度解析模式,调用深度解析器读取所述架构项目中依赖的第三方组件中build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容;
基于所述dependencies内容,通过预设正则表达式匹配组件依赖以获取定位信息,其中,所述定位信息包括第三方组件依赖组织名称、第三方组件依赖组件名称以及第三方组件依赖版本号。
优选地,所述根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表,以及展示所述依赖组件列表的步骤包括:
根据所述定位信息对所述深度解析器的解析结果进行收集,获得对应的依赖组件数据;
基于预设过滤机制对所述依赖组件数据进行过滤,得到对应的目标依赖组件数据,并根据所述组件目标依赖组件数据生成依赖组件列表,以及展示所述依赖组件列表。
优选地,所述依赖组件列表包括依赖组件的漏洞类型、许可信息、风险等级、黑边名单中的一种或几种的组合。
优选地,所述通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析的步骤之后,还包括:
在检测到所述包装机GradleW命令引擎解析成功时,获得对应的依赖组件数据,并生成依赖组件列表,以及展示所述依赖组件列表。
此外,为实现上述目的,本发明还提供一种组件依赖关系分析装置,所述组件依赖关系分析装置包括:
调用模块,用于调用检测引擎,并在所述检测引擎确定当前第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析;
解析模块,用于在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目进行组件依赖解析以获得定位信息;
展示模块,用于根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表。
此外,为实现上述目的,本发明还提供一种组件依赖关系分析系统,所述组件依赖关系分析系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的组件依赖关系分析程序,所述组件依赖关系分析程序被所述处理器执行时实现如上所述的组件依赖关系分析方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有组件依赖关系分析程序,所述组件依赖关系分析程序被处理器执行时实现如上所述的组件依赖关系分析方法的步骤。
本发明提出的组件依赖关系分析方法、装置与介质;本发明首先通过调用检测引擎,并在检测引擎确定第三方组件为架构项目时,通过检测引擎中的包装机GradleW命令引擎对架构项目中依赖的第三方组件进行分析;在检测到GradleW命令引擎解析失败时,调用深度解析器对架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息;根据定位信息获取依赖组件数据,并对依赖组件数据进行汇总,生成依赖组件列表。通过基于GradleW命令对Gradle项目中依赖的第三方组件进行分析,从而提高组件依赖分析识别率、准确率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明组件依赖关系分析方法第一实施例的流程示意图;
图3为本发明组件依赖关系分析方法组件依赖关系分析的流程示意图;
图4为本发明组件依赖关系分析方法Gradle项目构建流程示意图;
图5为本发明组件依赖关系分析方法第二实施例的流程示意图;
图6为本发明组件依赖关系分析方法第三实施例的流程示意图;
图7为本发明组件依赖关系分析方法第四实施例的流程示意图;
图8为本发明组件依赖关系分析装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例设备可以是移动终端或服务器设备。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及组件依赖关系分析程序。
其中,操作系统是管理和控制设备与软件资源的程序,支持网络通信模块、用户接口模块、组件依赖关系分析程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1002;用户接口模块用于管理和控制用户接口1003。
在图1所示的设备中,所述设备通过处理器1001调用存储器1005中存储的组件依赖关系分析程序,并执行下述组件依赖关系分析方法各个实施例中的操作。
基于上述硬件结构,提出本发明组件依赖关系分析方法实施例。
参照图2,图2为本发明组件依赖关系分析方法第一实施例的流程示意图,所述组件依赖关系分析方法包括:
步骤S10,调用检测引擎,并在所述检测引擎确定第三方组件架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析;
步骤S20,在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息;
步骤S30,根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表。
本实施例通过调用检测引擎,并在检测引擎确定第三方组件为架构项目时,通过检测引擎中的包装机GradleW命令引擎对架构项目中依赖的第三方组件进行分析;在检测到包装机GradleW命令引擎解析失败时,调用深度解析器对架构项目中依赖的第三方组件进行解析组件依赖以获得定位信息;根据定位信息获取依赖组件数据,并对依赖组件数据进行汇总,生成依赖组件列表,以及展示依赖组件列表。通过基于GradleW命令对Gradle项目中依赖的第三方组件进行分析,从而提高组件依赖分析识别率、准确率。
以下将对各个步骤进行详细说明:
步骤S10,调用检测引擎,并在所述检测引擎确定第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析。
在本实施例中,本发明组件依赖关系分析方法是通过使用检测引擎对Gradle项目中依赖的第三方组件进行分析,只需要识别出第三方组件依赖的groupId(组织名称)、artifactId(组件名称)、version(版本号)信息即可定位该组件依赖。其中,GAV信息也即定位信息。
其中,Gradle 构建配置存储在名为 build.gradle 的文件中,该文件基于领域特定语言 (DSL)。这是一种结合了声明式和命令式结构的专用脚本语言。该配置文件位于项目的根文件夹中,定义了一个项目、其任务、依赖项以及其他与项目相关的项。Gradle 支持多项目构建,其中每个项目在项目根文件夹中都有自己的 build.gradle 文件。
一个build.gradle文件中,定义了dependencies(依赖)的Task(任务),用来管理第三方组件依赖。 dependencies中定义一个第三方组件依赖的group、name以及version这几个元素;其中,group为第三方组件依赖的groupId(组织名称)、name为第三方组件依赖的artifactId(组件名称)、version为第三方组件依赖的(版本号)这三项可以简称为GAV信息,通过GAV可以唯一确定一个第三方组件依赖的标识。
参照图3,图3为组件依赖关系分析的流程示意图,调用检测引擎,并通过检测引擎检测第三方组件是否为Gradle项目。
参照图4,图4为Gradle项目构建流程示意图,Gradle项目构建流程包括:初始化阶段,创建Project对象;配置阶段,创建Task,进行编译;以及执行阶段,执行Task任务;这些阶段构成了Gradle项目的构建生命周期。
在检测到第三方组件为Gradle项目的情况下,通过检测引擎中的GradleW命令引擎对Gradle项目中依赖的第三方组件进行分析,以识别出第三方组件依赖的定位信息;通过使用检测引擎中的GradleW命令引擎分析Gradle项目的组件依赖,无需人工配置Gradle包管理器。其中,架构项目也即为Gradle项目;包装机GradleW命令引擎也即为GradleW命令引擎。
其中,定位信息也即GAV信息。
其中,本质上GradleW(Gradle Wrapper,包装机)它是一个脚本,调用了已经声明的Gradle版本。使用GradleW就不需要开发者手动去安装Gradle的安装包,只需要运行项目中的GradleW命令,就可以按照配置,自动下载申明的Gradle版本,之后使用GradleW命令执行命令,分析Gradle项目的第三方依赖。
具体步骤:按照在gradle-wrapper.properties中定义的版本去下载gradle,将下载的gradle放入到wrapper/dists目录下,并解压;使用Gradle Wrapper申明的gradle版本,即下载的gradle版本去执行GradleW命令。
同时,Gradle支持多种组件依赖引入方式,build.gradle 文件引入了多个第三方组件依赖库;通过使用GradleW命令对dependencies插件对build.gradle配置文件分析,能够分析出当前的应用引入了哪些第三方依赖,并对其分析依赖关系。
进一步地,在一实施例中,步骤S10之前,所述组件依赖关系分析方法还包括:收集开源组件的pom文件,并根据所述pom文件构建本地资源库,以及将所述pom文件存储至本地仓库。
在本实施例中,在调用检测引擎之前,还需要对第三方组件依赖GAV进行收集;下载对应开源组件的pom文件,并根据已下载的pom文件构建本地资源库,以及将pom文件存储至本地仓库,以供后续的Gradle解析中作为本地仓库使用;从而减少不必要的下载。
进一步地,在一实施例中,步骤S10之后,所述组件依赖关系分析方法还包括:在检测到所述包装机GradleW命令引擎解析成功时,获得对应的依赖组件数据,并生成依赖组件列表,以及展示所述依赖组件列表。
在本实施例中,在检测到执行GradleW命令引擎解析成功的情况下,也即通过GradleW命令引擎对Gradle项目中依赖的第三方组件进行分析获取到第三方组件依赖的GAV信息;然后通过第三方组件依赖的GAV信息从本地仓库中获取对应的依赖组件数据,并根据该依赖组件数据对应的依赖组件列表以及组件依赖树,以及展示该依赖组件列表和组件依赖树;其中,依赖组件列表中展示出依赖组件的漏洞、许可信息;从而通过基于GradleW命令对Gradle项目中依赖的第三方组件进行分析,提高组件依赖分析效率。
步骤S20,在检测到所述GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息。
在本实施例中,在检测到执行GradleW命令引擎解析失败的情况下,也即通过GradleW命令引擎对Gradle项目中依赖的第三方组件进行分析后,没有解析出第三方组件依赖的GAV信息。
在检测到执行GradleW命令引擎解析失败时,将进入深度解析模式;通过调用深度解析器对Gradle项目中依赖的第三方组件进行解析组件依赖,以获取第三方组件依赖的GAV信息,也即定位信息;其中,定位信息包括第三方组件依赖的groupId(组织名称)、artifactId(组件名称)、version(版本号);通过该定位信息即可定位该第三方组件依赖。
步骤S30,根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表,以及展示所述依赖组件列表。
在本实施例中,根据上述的定位信息(GAV信息)可从本地仓库中获取到对应的依赖组件数据。在获取到依赖组件数据后,对依赖组件数据进行过滤汇总处理,生成对应的依赖组件列表以及组件依赖树,并展示该依赖组件列表和组件依赖树;其中,依赖组件列表中展示出依赖组件的漏洞、许可信息;从而通过基于GradleW命令对Gradle项目中依赖的第三方组件进行分析,提高组件依赖分析识别率、准确率。
本实施例通过调用检测引擎,并在检测引擎确定第三方组件为架构项目时,通过检测引擎中的包装机GradleW命令引擎对架构项目中依赖的第三方组件进行分析;在检测到包装机GradleW命令引擎解析失败时,调用深度解析器对架构项目中依赖的第三方组件进行解析组件依赖以获得定位信息;根据定位信息获取依赖组件数据,并对依赖组件数据进行汇总,生成依赖组件列表,以及展示依赖组件列表。通过基于GradleW命令对Gradle项目中依赖的第三方组件进行分析,从而提高组件依赖分析识别率、准确率。
进一步地,基于本发明组件依赖关系分析方法第一实施例,提出本发明组件依赖关系分析方法第二实施例。
组件依赖关系分析方法的第二实施例与组件依赖关系分析方法的第一实施例的区别在于本实施例是对步骤S10,调用检测引擎,并在所述检测引擎确定当前第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述包装机Gradle项目中依赖的第三方组件进行解析的细化,参照图5,该步骤具体包括:
步骤S11,调用检测引擎,并通过所述检测引擎判断第三方组件是否为Gradle项目;
步骤S12,若所述第三方组件为Gradle项目,则通过所述检测引擎中的GradleWdependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息。
在本实施例中,通过调用检测引擎,并通过检测引擎判断第三方组件是否为Gradle项目;若第三方组件为Gradle项目,则通过检测引擎中的GradleW dependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息;从而通过检测引擎中的GradleW命令引擎分析Gradle项目的组件依赖,无需人工配置Gradle包管理器,提高解析效率。
以下将对各个步骤进行详细说明:
步骤S11,调用检测引擎,并通过所述检测引擎判断第三方组件是否为Gradle项目。
在本实施例中,本发明组件依赖关系分析方法主要是基于使用检测引擎对Gradle项目中依赖的第三方组件进行分析,只需要识别出第三方组件依赖的GAV(groupId(组织名称)、artifactId(组件名称)、version(版本号))信息即可定位该组件依赖。
在进行第三方组件依赖关系分析时,通过调用检测引擎,并通过该检测引擎判断第三方组件是否为Gradle项目。其中,所述包装机GradleW命令引擎也即GradleW命令引擎,GradleW命令引擎包括GradleW dependencies命令;所述架构项目也即Gradle项目。
在确定第三方组件为Gradle项目的情况下,才对Gradle项目中依赖的第三方组件进行分析;
在确定第三方组件不为Gradle项目的情况下,将该第三方组件退出组件依赖关系分析。
进一步地,在一实施例中,步骤S11之后,还包括:若所述第三方组件不为Gradle项目,则确定所述第三方组件解析失败,并退出组件依赖关系分析。
在本实施例中,在通过检测引擎中的GradleW命令引擎分析后确定第三方组件不为Gradle项目的情况下,确定第三方组件解析失败,并退出组件依赖关系分析;从而提高组件依赖关系分析的效率,减少不必要的资源消耗。
步骤S12,若所述第三方组件为Gradle项目,则通过所述检测引擎中的GradleWdependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息。
在本实施例中,在确定第三方组件为Gradle应用的情况下,才对Gradle项目中依赖的第三方组件进行分析;通过检测引擎中的GradleW dependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息;其中,定位信息包括第三方组件依赖的groupId(组织名称)、name为第三方组件依赖的artifactId(组件名称)、version为第三方组件依赖的(版本号);这三项可以简称为GAV信息;通过该定位信息即可定位该第三方组件依赖。
在本实施例中,通过调用检测引擎,并通过检测引擎判断第三方组件是否为Gradle项目;若第三方组件为Gradle应用,则通过检测引擎中的GradleW dependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息;从而通过检测引擎中的GradleW命令引擎分析Gradle项目的组件依赖,无需人工配置Gradle包管理器,提高解析效率。
进一步地,基于本发明组件依赖关系分析方法第一、二实施例,提出本发明组件依赖关系分析方法第三实施例。
组件依赖关系分析方法的第三实施例与组件依赖关系分析方法的第一、二实施例的区别在于本实施例是对步骤S20,在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息的细化,参照图6,该步骤具体包括:
步骤S21,在检测到所述包装机GradleW命令解析失败时,进入深度解析模式,调用深度解析器读取所述架构项目中依赖的第三方组件中build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容;
步骤S22,基于所述dependencies内容,通过预设正则表达式匹配组件依赖以获取定位信息,其中,所述定位信息包括第三方组件依赖组织名称、第三方组件依赖组件名称以及第三方组件依赖版本号。
在本实施例中,在检测到GradleW命令引擎解析失败时,进入深度解析模式,调用深度解析器读取build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容;根据dependencies内容,通过预设正则表达式匹配组件依赖以获取定位信息;从而通过深度解析器对Gradle项目进行解析组件依赖,提高组件依赖分析识别率、准确率。
以下将对各个步骤进行详细说明:
步骤S21,在检测到所述包装机GradleW命令引擎解析失败时,进入深度解析模式,调用深度解析器读取所述架构项目中依赖的第三方组件中build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容。
在本实施例中,在检测到GradleW命令引擎解析失败的情况下,Gradle项目中依赖的第三方组件将会进入深度解析模式;调用深度解析器读取Gradle项目中依赖的第三方组件中的读取build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容。
其中,预设正则表达式用于表征预先构建的在build.gradle文件内容中查找出第三方组件依赖的表达式。
其中,dependencies内容用于表征在build.gradle文件内容中查找出的组件依赖的内容。
步骤S22,基于所述dependencies内容,通过预设正则表达式匹配组件依赖以获取定位信息,其中,所述定位信息包括第三方组件依赖组织名称、第三方组件依赖组件名称以及第三方组件依赖版本号。
在本实施例中,根据上述的dependencies内容,再次使用预设正则表达式对dependencies内容匹配组件依赖以获取定位信息;从而通过深度解析器对Gradle项目进行解析组件依赖,提高组件依赖分析识别率、准确率。
其中,定位信息包括第三方组件依赖的groupId(组织名称)、name为第三方组件依赖的artifactId(组件名称)、version为第三方组件依赖的(版本号);这三项可以简称为GAV信息;通过该定位信息即可定位该第三方组件依赖。
在本实施例中,在检测到GradleW命令引擎解析失败时,进入深度解析模式,调用深度解析器读取build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容;根据dependencies内容,通过预设正则表达式匹配组件依赖以获取定位信息;从而通过深度解析器对Gradle项目进行解析组件依赖,提高组件依赖分析识别率、准确率。
进一步地,基于本发明组件依赖关系分析方法第一、二、三实施例,提出本发明组件依赖关系分析方法第四实施例。
组件依赖关系分析方法的第四实施例与组件依赖关系分析方法的第一、二、三实施例的区别在于本实施例是对步骤S30,根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表的细化,参照图7,该步骤具体包括:
步骤S31,根据所述定位信息对所述深度解析器的解析结果进行收集,获得对应的依赖组件数据;
步骤S32,基于预设过滤机制对所述依赖组件数据进行过滤,得到对应的目标依赖组件数据,并根据所述组件目标依赖组件数据生成依赖组件列表,以及展示所述依赖组件列表。
在本实施例中,通过根据定位信息对深度解析器的解析结果进行收集,获得对应的依赖组件数据;基于预设过滤机制对依赖组件数据进行过滤,得到对应的目标依赖组件数据,并根据组件目标依赖组件数据生成依赖组件列表,以及展示依赖组件列表。通过对深度解析器收集到的结果进行优化过滤,从而提高组件依赖分析的准确率。
以下将对各个步骤进行详细说明:
步骤S31,根据所述定位信息对所述深度解析器的解析结果进行收集,获得对应的依赖组件数据。
在本实施例中,根据上述的定位信息,对深度解析器的解析结果进行收集,以获取到通过深度解析器对Gradle项目进行解析组件依赖的所有的解析结果,也即获得对应的依赖组件数据。
步骤S32,基于预设过滤机制对所述依赖组件数据进行过滤,得到对应的目标依赖组件数据,并根据所述目标依赖组件数据生成依赖组件列表,以及展示所述依赖组件列表。
在本实施例中,在获取到依赖组件数据后,通过预设过滤机制对该依赖组件数据进行筛选过滤,过滤掉重复的组件,而后获得对应的目标依赖组件数据。其中,预设过滤机制用于表征预先构建的用于过滤依赖组件数据中重复组件的机制。
根据该目标依赖组件数据生成对应的依赖组件列表和组件依赖树,并展示该依赖组件列表。
进一步地,所述依赖组件列表包括依赖组件的漏洞类型、许可信息、风险等级、黑边名单中的一种或几种的组合。
在本实施例中,通过根据定位信息对深度解析器的解析结果进行收集,获得对应的依赖组件数据;基于预设过滤机制对依赖组件数据进行过滤,得到对应的目标依赖组件数据,并根据组件目标依赖组件数据生成依赖组件列表,以及展示依赖组件列表。通过对深度解析器收集到的结果进行优化过滤,从而提高组件依赖分析的准确率。
本发明还提供一种组件依赖关系分析装置。参照图8,本发明组件依赖关系分析装置包括:
调用模块10,用于调用检测引擎,并在所述检测引擎确定当前第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析;
解析模块20,用于在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目进行组件依赖解析以获得定位信息;
展示模块30,用于根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表。
此外,本发明还提供一种介质,所述介质为计算机可读存储介质,其上存储有组件依赖关系分析程序,组件依赖关系分析程序被处理器执行时实现如上所述的组件依赖关系分析方法的步骤。
其中,在所述处理器上运行的组件依赖关系分析程序被执行时所实现的方法可参照本发明组件依赖关系分析方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书与附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种组件依赖关系分析方法,其特征在于,所述组件依赖关系分析方法包括如下步骤:
调用检测引擎,并在所述检测引擎确定第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析;
在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息;
根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表。
2.如权利要求1所述的组件依赖关系分析方法,其特征在于,所述包装机GradleW命令引擎包括GradleW dependencies命令,所述架构项目包括Gradle项目,所述调用检测引擎,并在所述检测引擎确定当前第三方组件为架构项目时,通过所述检测引擎中的GradleW命令引擎对所述Gradle项目中依赖的第三方组件进行解析的步骤包括:
调用检测引擎,并通过所述检测引擎判断第三方组件是否为Gradle项目;
若所述第三方组件为Gradle项目,则通过所述检测引擎中的GradleW dependencies命令解析运行时使用的第三方组件,以获得第三方组件依赖的定位信息。
3.如权利要求2所述的组件依赖关系分析方法,其特征在于,所述调用检测引擎,并通过所述检测引擎判断第三方组件是否为架构应用的步骤之后,还包括:
若所述第三方组件不为Gradle项目,则确定所述第三方组件解析失败,并退出组件依赖关系分析。
4.如权利要求1所述的组件依赖关系分析方法,其特征在于,所述调用检测引擎,并在所述检测引擎确定第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行解析的步骤之前,还包括:
收集第三方组件的pom文件,并根据所述pom文件构建本地资源库,以及将所述pom文件存储至本地仓库。
5.如权利要求1所述的组件依赖关系分析方法,其特征在于,所述在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目中依赖的第三方组件进行组件依赖解析以获得定位信息的步骤包括:
在检测到所述包装机GradleW命令引擎解析失败时,进入深度解析模式,调用深度解析器读取所述架构项目中依赖的第三方组件中build.gradle文件内容,并通过预设正则表达式匹配获取dependencies内容;
基于所述dependencies内容,通过预设正则表达式匹配组件依赖以获取定位信息,其中,所述定位信息包括第三方组件依赖组织名称、第三方组件依赖组件名称以及第三方组件依赖版本号。
6.如权利要求1所述的组件依赖关系分析方法,其特征在于,所述根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表的步骤包括:
根据所述定位信息对所述深度解析器的解析结果进行收集,获得对应的依赖组件数据;
基于预设过滤机制对所述依赖组件数据进行过滤,得到对应的目标依赖组件数据,并根据所述目标依赖组件数据生成依赖组件列表,以及展示所述依赖组件列表。
7.如权利要求6所述的组件依赖关系分析方法,其特征在于,所述依赖组件列表包括依赖组件的漏洞类型、许可信息、风险等级、黑边名单中的一种或几种的组合。
8.如权利要求1所述的组件依赖关系分析方法,其特征在于,所述通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析的步骤之后,还包括:
在检测到所述包装机GradleW命令引擎解析成功时,获得对应的依赖组件数据,并生成依赖组件列表,以及展示所述依赖组件列表。
9.一种组件依赖关系分析装置,其特征在于,所述组件依赖关系分析装置包括:
调用模块,用于调用检测引擎,并在所述检测引擎确定当前第三方组件为架构项目时,通过所述检测引擎中的包装机GradleW命令引擎对所述架构项目中依赖的第三方组件进行分析;
解析模块,用于在检测到所述包装机GradleW命令引擎解析失败时,调用深度解析器对所述架构项目进行组件依赖解析以获得定位信息;
展示模块,用于根据所述定位信息获取依赖组件数据,并对所述依赖组件数据进行汇总,生成依赖组件列表。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有组件依赖关系分析程序,所述组件依赖关系分析程序被处理器执行时实现如权利要求1至8中任一项所述的组件依赖关系分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211504162.XA CN115543410A (zh) | 2022-11-29 | 2022-11-29 | 组件依赖关系分析方法、装置与介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211504162.XA CN115543410A (zh) | 2022-11-29 | 2022-11-29 | 组件依赖关系分析方法、装置与介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115543410A true CN115543410A (zh) | 2022-12-30 |
Family
ID=84721940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211504162.XA Pending CN115543410A (zh) | 2022-11-29 | 2022-11-29 | 组件依赖关系分析方法、装置与介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543410A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158741A (zh) * | 2019-12-23 | 2020-05-15 | 北京五八信息技术有限公司 | 监控业务模块对第三方类库依赖关系变化的方法及装置 |
CN112711438A (zh) * | 2021-01-13 | 2021-04-27 | 苏州棱镜七彩信息科技有限公司 | 依赖组件信息提取方法、设备及计算机可读存储介质 |
CN112860312A (zh) * | 2021-02-19 | 2021-05-28 | 百果园技术(新加坡)有限公司 | 项目依赖关系变化的检测方法及装置 |
CN112883342A (zh) * | 2021-03-26 | 2021-06-01 | 中国工商银行股份有限公司 | 一种组件管控方法、装置及设备 |
CN114816415A (zh) * | 2022-03-31 | 2022-07-29 | 深圳开源互联网安全技术有限公司 | 基于maven架构的包管理器解析第三方依赖的方法及系统 |
CN115016832A (zh) * | 2022-08-08 | 2022-09-06 | 北京安普诺信息技术有限公司 | 一种深度分析软件组件依赖关系的方法及相关装置、平台 |
CN115016831A (zh) * | 2022-08-08 | 2022-09-06 | 北京安普诺信息技术有限公司 | 一种依赖组件信息获取方法、装置及存储介质 |
US20220300262A1 (en) * | 2021-03-18 | 2022-09-22 | Boe Technology Group Co., Ltd. | Method for constructing, running and implementing cross-platform application, terminal, server and system |
CN115268991A (zh) * | 2022-08-05 | 2022-11-01 | 中国平安财产保险股份有限公司 | 依赖分析的优化方法、装置、设备和存储介质 |
CN115291942A (zh) * | 2022-08-18 | 2022-11-04 | 中国工商银行股份有限公司 | 应用程序的处理方法、装置及计算机可读存储介质 |
-
2022
- 2022-11-29 CN CN202211504162.XA patent/CN115543410A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158741A (zh) * | 2019-12-23 | 2020-05-15 | 北京五八信息技术有限公司 | 监控业务模块对第三方类库依赖关系变化的方法及装置 |
CN112711438A (zh) * | 2021-01-13 | 2021-04-27 | 苏州棱镜七彩信息科技有限公司 | 依赖组件信息提取方法、设备及计算机可读存储介质 |
CN112860312A (zh) * | 2021-02-19 | 2021-05-28 | 百果园技术(新加坡)有限公司 | 项目依赖关系变化的检测方法及装置 |
US20220300262A1 (en) * | 2021-03-18 | 2022-09-22 | Boe Technology Group Co., Ltd. | Method for constructing, running and implementing cross-platform application, terminal, server and system |
CN112883342A (zh) * | 2021-03-26 | 2021-06-01 | 中国工商银行股份有限公司 | 一种组件管控方法、装置及设备 |
CN114816415A (zh) * | 2022-03-31 | 2022-07-29 | 深圳开源互联网安全技术有限公司 | 基于maven架构的包管理器解析第三方依赖的方法及系统 |
CN115268991A (zh) * | 2022-08-05 | 2022-11-01 | 中国平安财产保险股份有限公司 | 依赖分析的优化方法、装置、设备和存储介质 |
CN115016832A (zh) * | 2022-08-08 | 2022-09-06 | 北京安普诺信息技术有限公司 | 一种深度分析软件组件依赖关系的方法及相关装置、平台 |
CN115016831A (zh) * | 2022-08-08 | 2022-09-06 | 北京安普诺信息技术有限公司 | 一种依赖组件信息获取方法、装置及存储介质 |
CN115291942A (zh) * | 2022-08-18 | 2022-11-04 | 中国工商银行股份有限公司 | 应用程序的处理方法、装置及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
汪文君: "GraalVM与Java静态编译原理与应用", vol. 1, 机械工业出版社, pages: 346 * |
苏金标: "AS如何查看第三方库依赖树呢", 《网址:HTTPS://BLOG.CSDN.NET/XUEYOUBANGBANG/ARTICLE/DETAILS/88973271》, 2 April 2019 (2019-04-02), pages 1 - 2 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105657191B (zh) | 一种基于Android系统的应用增量升级方法及系统 | |
US9015702B2 (en) | Determining compatibility of an application with different versions of an operating system | |
CN111625839A (zh) | 第三方组件漏洞检测方法、装置、设备及计算机存储介质 | |
EP3499364B1 (en) | Method and device for loading kernel module | |
US10223080B2 (en) | Method and system for automated, static instrumentation for applications designed for execution in environments with restricted resources | |
CN106020873B (zh) | 补丁包加载方法及装置 | |
US10606586B2 (en) | Application architecture generation | |
US11175897B1 (en) | Language interoperability to automate code analysis | |
CN113885849B (zh) | 基于工业互联网平台的应用开发方法、装置及终端设备 | |
CN106776266B (zh) | 测试工具的配置方法及终端设备 | |
CN112612502A (zh) | 补丁生成方法、装置、设备及存储介质 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
WO2017185883A1 (zh) | 一种动态扩展软件流程的方法和系统 | |
US20040216138A1 (en) | Method and system for processing input from a command line interface | |
CN115794214B (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
CN112052037A (zh) | 一种应用软件开发方法、装置、设备及介质 | |
CN111352631A (zh) | 一种接口兼容性检测方法及装置 | |
CN115543410A (zh) | 组件依赖关系分析方法、装置与介质 | |
CN114398102B (zh) | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 | |
CN115544518A (zh) | 漏洞扫描引擎实现方法、装置、漏洞扫描方法及电子设备 | |
CN113254040B (zh) | 前端框架更新方法、装置、设备及存储介质 | |
US20220027263A1 (en) | Disk image selection in virtualized network environments | |
CN109284097B (zh) | 实现复杂数据分析的方法、设备、系统及存储介质 | |
CN112579129A (zh) | 基于服务器的软件更新方法、装置、设备及存储介质 | |
US11886328B2 (en) | Test information extraction apparatus, test information extraction method and program |
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 |