CN115202709A - 软件项目依赖分析方法、装置、计算机设备及存储介质 - Google Patents
软件项目依赖分析方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115202709A CN115202709A CN202210709741.1A CN202210709741A CN115202709A CN 115202709 A CN115202709 A CN 115202709A CN 202210709741 A CN202210709741 A CN 202210709741A CN 115202709 A CN115202709 A CN 115202709A
- Authority
- CN
- China
- Prior art keywords
- target
- file
- type
- project
- software
- 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
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
本发明公开了一种软件项目依赖分析方法,应用于软件开发技术领域。本发明提供的方法包括:将预先开发的扫描插件加入到预先部署的流水线中;查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址;为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程;启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,得到所述目标软件项目的项目类型;通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,得到所述目标软件项目的依赖信息。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种软件项目依赖分析方法、装置、计算机设备及存储介质。
背景技术
在目前的软件开发技术领域,对于软件项目中依赖的分析方法,都是针对单个目标类型的项目开发的用于进行依赖分析的软件工具。发明人发现在开发运维体系DevOps的流水线中,对于众多不同类型的软件项目需要使用众多不同的依赖分析工具,无法做到使用一种分析工具完成所有类型的软件项目的依赖分析。
发明内容
本发明实施例提供一种软件项目依赖分析方法、装置、计算机设备及存储介质,以解决现有技术无法使用一种工具完成所有类型的软件项目的依赖分析的问题。
一种软件项目依赖分析方法,包括:
将预先开发的扫描插件加入到预先部署的流水线中;
查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址;
为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程;
启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型;
通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,根据分析结果得到所述目标软件项目的依赖信息。
一种软件项目依赖分析装置,包括:
扫描插件模块,用于将预先开发的扫描插件加入到预先部署的流水线中;
网络地址模块,用于查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址;
线程模块,用于为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程;
类型分析模块,用于启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型;
依赖分析模块,用于通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,根据分析结果得到所述目标软件项目的依赖信息。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述软件项目依赖分析方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述软件项目依赖分析方法的步骤。
上述软件项目依赖分析方法、装置、计算机设备及存储介质,通过将预先开发的扫描插件加入到预先部署的流水线中,并且创建和启动线程,通过该线程使用所述扫描插件去扫描所述流水线中管理的所有软件项目,获取所有软件项目的类型和依赖信息,并对所有软件项目的依赖信息进行分析。仅仅采用一种分析工具完成了对流水线上的所有软件项目的依赖的分析,不再需要针对不同的项目去部署或添加不同的分析工具。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中软件项目依赖分析方法的一应用环境示意图;
图2是本发明一实施例中软件项目依赖分析方法的一流程图;
图3是本发明一实施例中软件项目依赖分析装置的结构示意图;
图4是本发明一实施例中计算机设备的一示意图;
图5是本发明一实施例中另一计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的软件项目依赖分析方法,可应用在如图1的应用环境中,其中,计算机设备可以通过网络与服务器进行通信。其中,计算机设备可以是但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
目前,在软件开发技术领域,DevOps(Development和Operations)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。DevOps通过自动化“软件交付”和“架构变更”的流程,使得软件项目的构建、软件项目的测试、软件项目的发布能够变得更加快捷、频繁和可靠。DevOps中的流水线是一组自动化流程,所述流水线包含的常见组件是构建自动化或持续集成、测试自动化和部署自动化,具体地的组件工具分类包括但不限于:源代码控制工具、构建工具、容器化工具、配置管理工具、监控工具。在无DevOps的时候,每个软件项目的依赖管理方式都是每个软件项目单独进行管理的方式,而在DevOps中加入了源代码控制工具后,可以获取流水线中每个软件项目的详细代码内容,则可以使用本申请提供的软件项目依赖分析方法,对流水线中的每个软件项目进行依赖分析。
在一实施例中,如图2所示,提供一种软件项目依赖分析方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤S101至S105:
S101、将预先开发的扫描插件加入到预先部署的流水线中。
具体地,所述扫描插件可基于任何一种用于插件开发的计算机语言进行开发,但需要满足能够在流水线中运行所述扫描插件这一必要条件,否则将无法进行本实施例中的后续方案。所述扫描插件能够满足的功能是能够执行特定编程语言的运行指令,例如能够执行Java编程语言的javac命令,或JavaScript编程语言的npx命令等,由于计算机编程语言的种类繁多在此不再赘述。同时,所述特定编程语言还需具备能够进行文件读取的语言功能,即所述特定编程语言必须具备“扫描”文件这一目标功能,否则也将无法进行本实施例中的后续方案。例如,所述特定编程语言可以是JavaScript编程语言,因为JavaScript编程语言中包含了fs模块,所述fs模块的语言功能是文件读写的功能。进一步地,在选用所述特定编程语言时,还需要充分考虑所述编程特定语言中用于实现“扫描”文件功能的目标模块的性能和易用性,即选用的所述特定编程需要能够被相关软件开发技术人员快速的掌握并运用,而且所述特定编程语言能够在消耗较少计算机系统硬件资源的情况下以较快的速度完成对所述流水线中的所有软件项目的文件的“扫描”任务。
S102、查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址。
具体地,所述流水线中集成了源代码控制工具。其中,所述源代码控制工具包括但不限于:Git、Subversion、Concurrent Versions System(CVS)、Vesta和Mercurial等。所述源代码控制工具在软件开发技术领域一般用于对软件项目的源代码进行版本管理、分支管理、合并管理等。同时,在软件开发技术领域中,常规的做法是将软件项目的源代码存放于专用于进行源代码管理的代码服务器,并向具有软件项目对应权限的相关人员授予相应的操作权限以及代码服务器的网络地址。而在DevOps软件运维体系中,已经部署的流水线因为需要管理众多的软件项目,则需要相关人员手工在所述流水线中填写软件项目的源代码的代码服务器的网络地址。进一步地,还可在所述流水线中使用特定扫描工具根据制定的扫描规则去扫描对应网段或网络空间中的各个网络地址,判断每个网络地址上是否存在软件项目。但是前述通过扫描网络发现软件项目的方法不是本申请的基础技术和关联技术,故在此对于详细的技术细节不再展开叙述。
S103、为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程。
具体地,首先,获取目标软件项目的第一总数量,根据所述第一总数量创建对应第二总数量的线程。然后,将所述第一总数量的目标软件项目与所述第二总数量的线程建立多对一的满射对应关系,即所述第二数量的线程都对应至少一个所述目标软件项目。其中,针对每个目标软件项目的依赖分析需要建立在依赖已经获取的基础上,创建对应第二总数量的线程的目的是将获取目标软件项目的依赖的任务分配至所述第二总数量的线程去执行。需要特别说明的是,所述第二数量的线程的创建,还需要遵循基本的线程创建原则和满足基本的需求,即所述第二数量的线程在创建过程中还需要根据当前时间计算机系统的硬件资源的剩余情况灵活处理,不能占用太多的计算机系统的硬件资源导致计算机系统运行的卡顿或崩溃等异常情况,而且所述第二数量应等于或小于所述第一总数量,若所述第二数量大于所述第一数量则造成计算机系统的硬件资源的浪费,若所述第二数量小于所述第一数量,则必定存在至少一个线程被分配多余一个软件项目的依赖获取任务。例如,需要对6个软件项目的依赖进行分析,若创建7个线程则会造成线程的浪费,若创建5个线程则必然存在至少一个线程被分配了多个分析任务。
S104、启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型。
其中,在一具体的实施例中,使用JavaScript编程语言开发了相应的文件扫描功能,用于对目标软件项目的所有文件进行扫描,并将前述相应的文件扫描功能封装为对应的NPM包,并将所述NPM包发布到NPM包管理仓库中。进一步地,所述启动所述线程,使用所述扫描插件根据对应所述网络地址对对应的所述目标软件项目的文件进行扫描之前还包括:通过所述扫描插件执行节点包执行器NPX的下载命令,下载预先开发的节点包管理器NPM软件包;通过所述扫描插件执行节点包执行器NPX的运行命令,运行所述节点包管理器NPM软件包,其中,所述运行命令包括所述网络地址。其中,所述扫描插件下载所述软件包是从所述NPM包管理仓库中下载默认最新版本的所述NPM包。
进一步地,所述获取表示对应所述目标软件项目类型的对应目标格式文件,得到对应所述目标软件项目的项目类型包括:首先,获取所述目标软件项目中每个文件的文件类型,将所述文件类型在预先设置的项目依赖文件类型集合中进行匹配,将匹配成功的所述文件作为所述目标格式文件添加至目标依赖文件集合中。若所述目标依赖文件集合为空集,则返回分析失败结果,接收根据预设的项目类型集合进行人工选择指定后的项目类型;若所述目标依赖文件集合中存在唯一的目标依赖文件,则对应所述目标软件项目的项目类型为所述目标依赖文件对应的类型;若所述目标依赖文件集合中存在至少两个目标依赖文件,则返回分析失败结果和所述目标依赖文件,接收根据所述目标依赖文件进行人工分析后的项目类型。其中,所述项目依赖文件类型集合中包括了所有类型的软件项目的依赖配置文件的格式,例如Android项目的.gradle格式的文件、Java项目的pom.xml和setttings.xml、Python项目的requirements.txt、iOS项目的Podfile.lock文件和HTML5项目的package.json等。需要特别说明的是,在实际的软件开发过程中,软件开发人员和/或软件开发团队会修改软件项目中的配置文件,而在部分软件项目中,该配件文件中包含了依赖信息文件的类型和名称等信息,所以前面的示例中特定类型项目中的固定文件类型和/或固定文件名称的文件,在部分软件项目中会不一样,需要根据具体的使用场景灵活进行更改。例如将在HTML5项目的项目配置文件中,将包含依赖信息的文件名由原先默认的package.json更改为x.json。
进一步地,所述接收根据预设的项目类型集合进行人工选择指定后的项目类型之前还包括:首先,使用所述扫描插件扫描对应所述目标软件项目中每个文件的文件类型,根据扫描结果得到所述目标软件项目中每种文件类型的占比数据。然后,根据所述占比数据,以及预先设定的项目类型分析规则和历史项目类型分析记录,获取对应所述目标软件项目为所述项目类型集合中每个项目类型的预测值。其中,需要特别说明的是,所述目标软件项目中每种文件类型的占比数据仅仅是作为一个参考数据,因为在部分项目中,存在一定的误差性。例如,在Android项目开发中,存在着主要使用Java编程语言进行开发、或主要使用Kotlin编程语言进行开发,或主要使用JavaScript编程语言和Html编程语言进行开发,前述的三种不同的编程语言的使用可以完全对应一个Android项目,在前述的情况下存在将Android项目识别成前端项目的可能性。其中,根据软件开发技术领域的常规现象,在一个软件项目的建立之初确定了项目类型之后,该软件项目的类型一般不会改变,除非使用另外一种开发语言将该软件项目完全重做或重构。例如,原本使用Java编程语言开发的项目,因为某些实际需求的原因,采用Go编程语言或Python编程语言将该软件项目重做,那么该软件项目的类型就由Java类型变成了Go类型或者Python类型。所以,所述历史项目类型分析记录,可以作为生成所述项目类型的预测值的方法中的一个参数。例如,在所述软件项目类型分析记录中最近的一次的分析结果,是对于分析当前所述目标软件项目的类型最有参考价值的信息。
进一步地,使用所述扫描插件获取所述目标软件项目中所有类型的文件的数量和比例之后,将所述数量和比例发送至预先设置的人工智能依赖分析模型。所述人工智能依赖分析模型是根据每个软件项目所有类型的文件的数量和比例,以及每次分析对应软件项目得到的类型结果,进行训练并完善的。所述人工智能依赖分析模型接收所述目标软件项目中所有类型的文件的数量和比例,输出所述目标软件项目为各种软件项目类型的预测值,辅助所述目标软件项目的相关人员根据所述人工智能依赖分析模型输出的所述预测值进行判断,进而指定所述目标软件项目的项目类型。
进一步地,所述返回分析失败结果和所述目标依赖文件之前还包括:依次获取每个所述目标依赖文件的文件内容,将所述文件内容与每个所述目标依赖文件的类型文本内容编码规则进行比较。若所述文件内容不符合所述类型文本内容编码规则,则将所述目标依赖文件从所述目标依赖文件集合中移除。即需要移除所述目标依赖文件集合中内容编码错误的目标依赖文件,一方面对于出现错误的目标依赖文件进行的分析是无效的,另一方面可以将所述出现错误的目标依赖文件和出现的具体错误返回至所述目标软件项目的相关技术开发人员,便于相关技术开发人员及时更正所述出现错误的目标依赖文件。
进一步地,需要说明的是,在软件开发技术领域,众多的软件开发技术存在升级更新的情况。其中,会存在所述目标软件项目进行升级更新之后,所述目标依赖文件中文本内容编码规则也对应得到了升级,即所述目标依赖文件中的文本内容采用一种全新的内容编码规则,在此情况下,如果使用旧的所述内容编码规则进行判断,则得到的结果是所述目标依赖文件中的依赖全部是错误。在此情况下,一方面可以此种情况作为单独的特殊情况处理,将依赖全部是错的所述目标依赖文件发送至所述目标软件项目的关联人员进行判断和纠正分析错误,另一方面可以将所有的内容编码规则进行汇总,并开启定时任务从所述内容编码规则对应的网络地址源获取最新的内容编码规则。另外,还需要特别说明的是,所述流水线中管理的软件项目众多,既存在使用了老版本的内容编码规则进行编码的第一依赖文件,又存在使用了新版本的内容编码规则进行编码的第二依赖文件,此时则需要同时采用多个版本的内容编码规则去匹配所述第一依赖文件中的文本内容和所述第二依赖文件中的文本内容,且所述第一依赖文件中的文本内容和第二依赖文件中的文本内容的依赖全部是错误的概率应该是极小的。
S105、通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,根据分析结果得到所述目标软件项目的依赖信息。
具体地,所述通过所述线程,使用所述扫描插件根据对应所述项目类型分析对应所述目标格式文件包括:首先,通过所述线程,使用所述扫描插件读取所述目标格式文件的各文本内容。然后,根据所述目标格式文件的编码规则分析所述文本内容。若所述目标格式文件中的一条依赖的文本内容符合所述目标格式文件的编码规则,则将所述文本内容识别为正确依赖;若所述目标格式文件中的一条依赖的文本内容不符合所述目标格式文件对应的编码规则,则将所述文本内容识别为错误依赖。
进一步地,获取前述错误依赖所在的软件项目的项目信息,所述项目信息包括但不限于:软件项目名称、软件项目类型、软件项目地址、软件项目最新版本号和软件项目最后一次代码提交时间等。然后将所述项目信息与所述错误依赖建立一对多的对应关系,即一个软件项目存在至少一个错误依赖。最后将根据所述项目信息和所述错误依赖建立的所述对应关系发送至所述软件项目的关联人员。等待所述关联人员修改所述错误依赖后,重新执行前述的项目依赖分析方法的步骤,验证所述关联人员对所述错误依赖的修改是否正确。
本实施例提出的软件项目依赖分析方法,通过将预先开发的扫描插件加入到预先部署的流水线中,并且创建和启动线程,通过该线程使用所述扫描插件去扫描所述流水线中管理的所有软件项目,获取所有软件项目的类型和依赖信息,并对所有软件项目的依赖信息进行分析。仅仅采用一种分析工具完成了对流水线上的所有软件项目的依赖的分析,不再需要针对不同的项目去部署或添加不同的分析工具。同时,还将分析建立的过程中发现的一些依赖错误及时反馈到软件项目的关联人员,便于错误的消除和软件项目的质量及时提升。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种软件项目依赖分析装置100,该软件项目依赖分析装置100与上述实施例中软件项目依赖分析方法一一对应。如图3所示,该软件项目依赖分析装置100包括扫描插件模块11、网络地址模块12、线程模块13、类型分析模块14和依赖分析模块15。各功能模块详细说明如下:
扫描插件模块11,用于将预先开发的扫描插件加入到预先部署的流水线中;
网络地址模块12,用于查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址;
线程模块13,用于为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程;
类型分析模块14,用于启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型;
依赖分析模块15,用于通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,根据分析结果得到所述目标软件项目的依赖信息。
进一步地,所述线程模块13还包括:
软件包下载子模块,用于通过所述扫描插件执行节点包执行器NPX的下载命令,下载预先开发的节点包管理器NPM软件包;
软件包运行子模块,用于通过所述扫描插件执行节点包执行器NPX的运行命令,运行所述节点包管理器NPM软件包,其中,所述运行命令包括所述网络地址。
进一步地,所述类型分析模块14还包括:
依赖文件集合子模块,用于获取所述目标软件项目中每个文件的文件类型,将所述文件类型在预先设置的项目依赖文件类型集合中进行匹配,将匹配成功的所述文件作为所述目标格式文件添加至目标依赖文件集合中;
空集处理子模块,用于若所述目标依赖文件集合为空集,则返回分析失败结果,接收根据预设的项目类型集合进行人工选择指定后的项目类型;
单一集合子模块,用于若所述目标依赖文件集合中存在唯一的目标依赖文件,则对应所述目标软件项目的项目类型为所述目标依赖文件对应的类型;
复杂集合子模块,用于若所述目标依赖文件集合中存在至少两个目标依赖文件,则返回分析失败结果和所述目标依赖文件,接收根据所述目标依赖文件进行人工分析后的项目类型。
进一步地,所述空集处理子模块还包括:
类型比例子单元,用于使用所述扫描插件扫描对应所述目标软件项目中每个文件的文件类型,根据扫描结果得到所述目标软件项目中每种文件类型的占比数据;
类型预测子单元,用于根据所述占比数据,以及预先设定的项目类型分析规则和历史项目类型分析记录,获取对应所述目标软件项目为所述项目类型集合中每个项目类型的预测值。
进一步地,所述复杂集合子模块还包括:
第一内容比较子单元,用于依次获取每个所述目标依赖文件的文件内容,将所述文件内容与每个所述目标依赖文件的类型文本内容编码规则进行比较;
集合处理子单元,用于若所述文件内容不符合所述类型文本内容编码规则,则将所述目标依赖文件从所述目标依赖文件集合中移除。
进一步地,所述项目类型模块14还包括:
结果返回子模块,用于将对应所述目标软件的项目类型的分析结果返回至所述流水线;
类型指定子模块,用于接收对所述目标软件的项目类型的确认指令或对所述目标软件项目的项目类型的人工指定结果。
进一步地,所述依赖分析模块15还包括:
内容读取子模块,用于通过所述线程,使用所述扫描插件读取所述目标格式文件的各文本内容;
第二内容比较子模块,用于根据所述目标格式文件的编码规则分析所述文本内容;
正确依赖子模块,用于若所述目标格式文件中的一条依赖的文本内容符合所述目标格式文件的编码规则,则将所述文本内容识别为正确依赖;
错误依赖子模块,用于若所述目标格式文件中的一条依赖的文本内容不符合所述目标格式文件对应的编码规则,则将所述文本内容识别为错误依赖。
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
关于软件项目依赖分析装置的具体限定可以参见上文中对于软件项目依赖分析方法的限定,在此不再赘述。上述软件项目依赖分析装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储软件项目依赖分析方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种软件项目依赖分析方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种软件项目依赖分析方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中软件项目依赖分析方法的步骤,例如图2所示的步骤S101至步骤S105及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机程序时实现上述实施例中软件项目依赖分析装置的各模块/单元的功能,例如图3所示模块11至模块15的功能。为避免重复,这里不再赘述。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中软件项目依赖分析方法的步骤,例如图2所示的步骤S101至步骤S105及该方法的其它扩展和相关步骤的延伸。或者,计算机程序被处理器执行时实现上述实施例中软件项目依赖分析装置的各模块/单元的功能,例如图3所示模块11至模块15的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种软件项目依赖分析方法,其特征在于,包括:
将预先开发的扫描插件加入到预先部署的流水线中;
查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址;
为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程;
启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型;
通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,根据分析结果得到所述目标软件项目的依赖信息。
2.根据权利要求1所述的软件项目依赖分析方法,其特征在于,所述启动所述线程,使用所述扫描插件根据对应所述网络地址对对应的所述目标软件项目的文件进行扫描之前还包括:
通过所述扫描插件执行节点包执行器NPX的下载命令,下载预先开发的节点包管理器NPM软件包;
通过所述扫描插件执行节点包执行器NPX的运行命令,运行所述节点包管理器NPM软件包,其中,所述运行命令包括所述网络地址。
3.根据权利要求1所述的软件项目依赖分析方法,其特征在于,所述获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型包括:
获取所述目标软件项目中每个文件的文件类型,将所述文件类型在预先设置的项目依赖文件类型集合中进行匹配,将匹配成功的所述文件作为所述目标格式文件添加至目标依赖文件集合中;
若所述目标依赖文件集合为空集,则返回分析失败结果,接收根据预设的项目类型集合进行人工选择指定后的项目类型;
若所述目标依赖文件集合中存在唯一的目标格式文件,则对应所述目标软件项目的项目类型为所述目标格式文件对应的类型;
若所述目标依赖文件集合中存在至少两个目标依赖文件,则返回分析失败结果和所述目标依赖文件,接收根据所述目标依赖文件进行人工分析后的项目类型。
4.根据权利要求3所述的软件项目依赖分析方法,其特征在于,所述接收根据预设的项目类型集合进行人工选择指定后的项目类型之前还包括:
使用所述扫描插件扫描对应所述目标软件项目中每个文件的文件类型,根据扫描结果得到所述目标软件项目中每种文件类型的占比数据;
根据所述占比数据,以及预先设定的项目类型分析规则和历史项目类型分析记录,获取对应所述目标软件项目为所述项目类型集合中每个项目类型的预测值。
5.根据权利要求3所述的软件项目依赖分析方法,其特征在于,所述返回分析失败结果和所述目标依赖文件之前还包括:
依次获取每个所述目标依赖文件的文件内容,将所述文件内容与每个所述目标文件的类型文本内容编码规则进行比较;
若所述文件内容不符合所述类型文本内容编码规则,则将所述目标依赖文件从所述目标依赖文件集合中移除。
6.根据权利要求1所述的软件项目依赖分析方法,其特征在于,所述获取表示对应所述目标软件项目类型的对应目标格式文件,得到对应所述目标软件项目的项目类型之后还包括:
将对应所述目标软件的项目类型的分析结果返回至所述流水线;
接收对所述目标软件的项目类型的确认指令或对所述目标软件项目的项目类型的人工指定结果。
7.根据权利要求1所述的软件项目依赖分析方法,其特征在于,所述通过所述线程,使用所述扫描插件根据对应所述项目类型分析对应所述目标格式文件包括:
通过所述线程,使用所述扫描插件读取所述目标格式文件的各文本内容;
根据所述目标格式文件的编码规则分析所述文本内容;
若所述目标格式文件中的一条依赖的文本内容符合所述目标格式文件的编码规则,则将所述文本内容识别为正确依赖;
若所述目标格式文件中的一条依赖的文本内容不符合所述目标格式文件对应的编码规则,则将所述文本内容识别为错误依赖。
8.一种软件项目依赖分析装置,其特征在于,包括:
扫描插件模块,用于将预先开发的扫描插件加入到预先部署的流水线中;
网络地址模块,用于查找至少一个待进行依赖分析的目标软件项目在所述流水线中的网络地址;
线程模块,用于为每个所述目标软件项目创建对应的线程,将所述目标软件项目的分析任务分配至对应的所述线程;
类型分析模块,用于启动所述线程,使用所述扫描插件根据对应所述网络地址对所述目标软件项目的文件进行扫描,获取用于表示所述目标软件项目类型的目标格式文件,根据获取结果得到所述目标软件项目的项目类型;
依赖分析模块,用于通过所述线程,使用所述扫描插件根据对应所述项目类型分析所述目标格式文件,根据分析结果得到所述目标软件项目的依赖信息。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述软件项目依赖分析方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述软件项目依赖分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210709741.1A CN115202709A (zh) | 2022-06-22 | 2022-06-22 | 软件项目依赖分析方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210709741.1A CN115202709A (zh) | 2022-06-22 | 2022-06-22 | 软件项目依赖分析方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115202709A true CN115202709A (zh) | 2022-10-18 |
Family
ID=83575611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210709741.1A Pending CN115202709A (zh) | 2022-06-22 | 2022-06-22 | 软件项目依赖分析方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115202709A (zh) |
-
2022
- 2022-06-22 CN CN202210709741.1A patent/CN115202709A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459962B (zh) | 代码规范性检测方法、装置、终端设备及存储介质 | |
US11389960B2 (en) | Systems and methods for robotic process automation | |
US11599654B2 (en) | Method and apparatus for authority control, computer device and storage medium | |
US11113050B2 (en) | Application architecture generation | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN112395202B (zh) | 接口自动化测试方法、装置、计算机设备和存储介质 | |
EP3447635A1 (en) | Application architecture generation | |
CN113687858A (zh) | 配置文件的检查方法、装置、电子设备及存储介质 | |
CN115617780A (zh) | 数据导入方法、装置、设备及存储介质 | |
CN114895935A (zh) | 刷写车辆ecu的方法、装置、电子设备及存储介质 | |
CN111352631A (zh) | 一种接口兼容性检测方法及装置 | |
CN115202709A (zh) | 软件项目依赖分析方法、装置、计算机设备及存储介质 | |
CN116049000A (zh) | 环境参数配置方法、装置、设备、存储介质及产品 | |
CN112685043A (zh) | 回调函数的异步转化方法、装置、设备及可读存储介质 | |
CN113821213A (zh) | 基于人工智能的前端代码检测及修复方法、装置及设备 | |
CN111651195A (zh) | 一种系统依赖包冲突检测方法及装置 | |
CN113672269B (zh) | 数据处理方法、系统、电子设备及程序产品 | |
CN115543486B (zh) | 面向无服务器计算的冷启动延迟优化方法、装置和设备 | |
CN117435510B (zh) | 自动化测试方法、终端设备及计算机可读存储介质 | |
EP4040294A1 (en) | Process scheduling method and apparatus of vision software | |
US20240201985A1 (en) | Executing a continuous integration pipeline based on a type of change to source code | |
CN114968341A (zh) | 软件项目的依赖的版本管理方法及相关设备 | |
CN116755677A (zh) | 原子服务编排方法、装置、设备及存储介质 | |
CN117950635A (zh) | 平台的应用开发方法、装置、电子设备及存储介质 | |
CN117407023A (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 |