CN112860312A - 项目依赖关系变化的检测方法及装置 - Google Patents

项目依赖关系变化的检测方法及装置 Download PDF

Info

Publication number
CN112860312A
CN112860312A CN202110189174.7A CN202110189174A CN112860312A CN 112860312 A CN112860312 A CN 112860312A CN 202110189174 A CN202110189174 A CN 202110189174A CN 112860312 A CN112860312 A CN 112860312A
Authority
CN
China
Prior art keywords
dependency relationship
party code
relationship list
target
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
CN202110189174.7A
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.)
Bigo Technology Pte Ltd
Original Assignee
Bigo Technology Pte 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 Bigo Technology Pte Ltd filed Critical Bigo Technology Pte Ltd
Priority to CN202110189174.7A priority Critical patent/CN112860312A/zh
Publication of CN112860312A publication Critical patent/CN112860312A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

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)构建体系是基于Gradle(一种自动化构建开源工具)的构建***,通过Gradle可以实现将外部二进制的第三方代码库作为依赖项添加到安卓的编译构建中,实现某一安卓项目所使用的第三方代码库之间依赖关系的配置。
目前,Gradle提供了多种依赖关系的分析工具,如依赖项(dependencies)工具、依赖项洞察(dependencyInsight)工具、浏览(scan)工具等,通过这些分析工具,能够输出某一安卓项目的依赖树分析结果,从而对该安卓项目所使用的第三方代码库之间的依赖关系进行感知,同时分析结果中的一些分析内容也可对依赖关系的感知理解起到辅助作用。
但是,在实际应用中,会经常对某一安卓项目所使用的第三方代码库之间依赖关系进行调整,当依赖关系中某一节点被调整后,会导致整个依赖关系发生巨大变化,目前方案无法清楚直观的感知这种巨大变化,导致调整后对依赖关系的检查工作繁琐复杂。
发明内容
为克服相关技术中存在的问题,本申请提供一种项目依赖关系变化的检测方法及装置。
根据本申请实施例的第一方面,提供一种项目依赖关系变化的检测方法,包括:
获取目标软件项目的第一依赖关系列表,所述第一依赖关系列表包括所述目标软件项目所使用的所有第三方代码库之间的树状关联关系;
在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表;
对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
根据本申请实施例的第二方面,提供一种项目依赖关系变化的检测装置,包括:
获取模块,用于获取目标软件项目的第一依赖关系列表,所述第一依赖关系列表包括所述目标软件项目所使用的所有第三方代码库之间的树状关联关系;
修改模块,用于在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表;
比较模块,用于对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
根据本申请实施例的第三方面,本申请实施例提供了一种检测装置,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的项目依赖关系变化的检测方法的步骤。
根据本申请实施例的第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的项目依赖关系变化的检测方法的步骤。
本申请的实施例提供的技术方案至少带来以下有益效果:
通过对修正前后的第一依赖关系列表和第二依赖关系列表执行差异比较处理,得到用于反映第二依赖关系列表与第一依赖关系列表的不同差异比较结果,可以达到对项目依赖关系变化的精确检测的目的,通过对差异比较结果进行分析,可以清楚感知到对目标软件项目所使用的所有第三方代码库之间的树状关联关系修正所带来的变化,这有助于对依赖关系修改操作的效果进行分析和总结,降低了对依赖关系的检查工作的复杂程度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是根据一示例性实施例示出的一种项目依赖关系变化的检测方法的流程示意图;
图2是根据一示例性实施例示出的一种依赖关系的示意图;
图3是根据一示例性实施例示出的一种项目依赖关系变化的检测方法的具体流程示意图;
图4是根据一示例性实施例示出的一种项目依赖关系变化的检测装置的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种项目依赖关系变化的检测方法的流程图,如图1所示,包括以下步骤:
步骤101、获取目标软件项目的第一依赖关系列表,所述第一依赖关系列表包括所述目标软件项目所使用的所有第三方代码库之间的树状关联关系。
在本申请实施例中,可以在安卓架构下,进行对项目依赖关系变化的检测方法的描述,其中,目标软件项目可以为软件应用(APP,Application),也可以为软件开发工具包(SDK,Software Development Kit),在安卓架构下构建目标软件项目时,目标软件项目可以使用处于本地或远端(如远程代码库)中的二进制的第三方代码库来实现一些功能,从而达到降低目标软件项目的逻辑复杂度和开发难度的目的。
具体的,可以使用Gradle工具实现将第三方代码库作为依赖项添加至目标软件项目的编译构建中,根据实现软件功能通常需要使用多个第三方代码库,由于实现软件功能的逻辑复杂性和连续性,分别对应不同逻辑的多个第三方代码库之间存在关联关系,这种关联关系可以作为所有第三方代码库之间的依赖关系,且依赖关系为树状结构,通过总结依赖关系,可以得到依赖关系列表。在一个第三方代码库作为依赖项时,其声明的所有传递依赖项也会自动包含在内。
例如,参照图2,其示出了一种依赖关系的示意图,其中,包括根节点的第三方代码库A,依赖于第三方代码库A的子节点第三方代码库B和C(B和C处于同一层级),依赖于第三方代码库B和C的第三方代码库D,以及依赖于第三方代码库D的第三方代码库E和F(E和F处于同一层级)。
在本申请实施例中,在对目标软件项目的依赖关系进行修改之前,可以先获取目标软件项目的文本格式的第一依赖关系列表,具体的,可以在目标软件项目的跟目录的build.gradle中添加用于实现项目依赖关系变化的检测方法插件的类路径(class path),并应用此插件即可完成插件的集成。之后可以进行依赖变化的分析了。在对目标软件项目的依赖关系进行修改之前,可以执行depOriginal任务:gradlew depOriginalRelease--no-parallel–q。
该任务会可以生成dependencies-original.txt文件,该文件包括了目标软件项目的第一依赖关系列表,其中,参数Release为目标软件项目中的Flavor参数和Build Type参数(Flavor参数和Build Type参数用于反映目标软件项目的名称),执行任务之前,若不清楚目标软件项目的Flavor参数和Build Type参数,可以执行gradlew tasks--groupdep–q进行查看。
步骤102、在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表。
在实际应用中,根据实际需求的变化,可以对目标软件项目所使用的第三方代码库之间的树状关联关系进行修改,并在修改后,获取所述目标软件项目的第二依赖关系列表,从而使得修改后的树状关联关系可以满足新的需求。
具体的,修改方式可以包括:在所述目标软件项目中,新增第三方代码库/替换第三方代码库/删除第三方代码库等。
步骤103、对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
在该步骤中,可以通过对第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,来得到进行修改处理前后,第一依赖关系列表和第二依赖关系列表之间的差异比较结果,通过差异比较结果可以直接反映出第二依赖关系列表与第一依赖关系列表的不同。
具体的,差异比较处理可以包括执行diff(差分)命令,diff命令是Unix***的一个很重要的工具程序,用来比较两个文本文件的差异,其执行方式为:$diff<第一依赖关系列表><第二依赖关系列表>,执行后,可以得到文本格式的差异比较结果,其中,差异比较结果包括了在对目标软件项目所使用的第三方代码库进行修改处理的过程中新增的第三方代码库、删除的第三方代码库和替换的第三方代码库的信息。
开发人员通过对差异比较结果进行分析,可以清楚感知到对目标软件项目所使用的所有第三方代码库之间的树状关联关系修正所带来的变化,这有助于开发人员对依赖关系修改操作的效果进行分析和总结,防止在依赖关系中引入存在问题的第三方代码库,降低了因对依赖关系进行修改操作而产生故障的问题发生的几率,达到了对项目依赖关系变化的精确检测的目的,提高了目标软件项目的运行稳定性。
综上所述,本申请实施例提供的一种项目依赖关系变化的检测方法,通过对修正前后的第一依赖关系列表和第二依赖关系列表执行差异比较处理,得到用于反映第二依赖关系列表与第一依赖关系列表的不同差异比较结果,可以达到对项目依赖关系变化的精确检测的目的,通过对差异比较结果进行分析,可以清楚感知到对目标软件项目所使用的所有第三方代码库之间的树状关联关系修正所带来的变化,这有助于对依赖关系修改操作的效果进行分析和总结,降低了对依赖关系的检查工作的复杂程度。
图3是根据一示例性实施例示出的一种项目依赖关系变化的检测方法的具体步骤流程图,如图3所示,包括以下步骤:
步骤201、确定所述目标软件项目包括的所有功能模块,所述功能模块包括基本类型的功能模块和动态类型的功能模块。
针对大型的目标软件项目,其架构通常是模块化的,即目标软件项目可以包括多个功能模块,每个功能模块用于实现最终功能的一个子功能。
具体的,在该步骤中,可以获取标软件项目包括的基本类型的功能模块和动态类型的功能模块,每个功能模块可以使用第三方代码库来实现其对应的子功能,这就使得每个功能模块都具有所使用的所有第三方代码库之间的树状关联关系。
其中,动态模块供了动态加载程序模块的机制,因为也独立于内核编译,其使用方式比较灵活。从实现上讲,这是一种将内核和动态模块分开的机制,通过这种机制,内核和动态模块可以分开编译,并在运行时通过内核中的模块加载器将编译好的动态模块加载到内核中运行。
步骤202、按照串行的执行方式,获取每个所述功能模块的依赖关系列表。
在该步骤中,可以按照串行的执行方式,依次获取每个功能模块的依赖关系列表,之所以按照串行的执行方式获取每个功能模块的依赖关系列表,是因为若采用同时并行的执行方式获取功能模块的依赖关系列表,会导致并行执行时产生写文件的时序问题。具体的,可以在用于实现项目依赖关系变化的检测方法的插件中添加no-parallel参数,来防止动态模块并行执行获取依赖关系列表的任务。
可选的,步骤202具体可以通过通过查找模块依赖项命令,获取每个所述功能模块的依赖关系列表的方式进行实现。
具体的,可以通过查找模块依赖项命令(getCompileConfiguration<功能模块>),获取每个功能模块的依赖关系列表。
步骤203、将所有所述功能模块的依赖关系列表进行去重合并后,得到所述第一依赖关系列表。
在该步骤中,可能存在某些功能模块的依赖关系列表之间存在部分或全部相同的问题,在一个第三方关系库被多个功能模块使用时,对该第三方关系库进行修改,会导致所有功能模块使用的该第三方关系库都会被对应修改,因此,在获得每个功能模块的依赖关系列表后,可以将这些依赖关系列表进行去重操作,去除其中冗余相同的部分,之后在进行合并操作,将这些去重后的依赖关系列表合并为一张第一依赖关系列表。
步骤204、在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表。
该步骤具体可以参照上述步骤102,此处不再赘述。
可选的,所述修改处理具有对应的修改类型,在所述修改类型为新增第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中增加的第三方代码库的标识信息。
在所述修改类型为删减第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中删减的第三方代码库的标识信息。
在所述修改类型为替换第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中替换前的第三方代码库的标识信息以及替换后的第三方代码库的标识信息。
步骤205、对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
该步骤具体可以参照上述步骤103,此处不再赘述。
可选的,所述差异比较结果包括:所述修改处理的修改类型与执行了所述修改处理的目标第三方代码库的标识信息之间的对应关系,以及所述目标第三方代码库的数量。
可选的,所述修改处理具有对应的修改类型,在所述修改类型为新增第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中增加的第三方代码库的标识信息。
在所述修改类型为删减第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中删减的第三方代码库的标识信息。
在所述修改类型为替换第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中替换前的第三方代码库的标识信息以及替换后的第三方代码库的标识信息。
具体的,差异比较处理可以包括执行diff命令,其执行方式为:$diff<第一依赖关系列表><第二依赖关系列表>,执行后,可以得到文本格式的差异比较结果,即得到一个diff-detail.txt文件,该文件里是有变化的依赖的引用依赖树详细信息,便于分析和定位问题,一个示例中,该文件可以如下所示:
2dependencies were changed//修改后有2个依赖项(第三方代码库)发生变化;
Dependencies-20200826.txt vs dependencies-20200827.txt//第一依赖关系列表VS第二依赖关系列表;
==>Added artifacts://一个修改处理的修改类型为新增一个依赖项;
com.android.support:support-core-ui:27.0.2//新增依赖项的名称;
==>Modified artifacts://另一个修改处理的修改类型为替换一个依赖项;
com.***.code.gson:gson:2.8.5(original:2.8.4-->now:2.8.5)//替换前后两个依赖项各自的名称。
可选的,所述方法还可以包括:
步骤206、获取与所述目标第三方代码库所关联的关联依赖关系列表,所述关联依赖关系列表包括以所述目标第三方代码库为根节点的树状关联关系。
步骤207、将所述关联依赖关系列表包含的依赖关系添加进所述差异比较结果中。
在本申请实施例中,在对目标软件项目所使用的所有第三方代码库之间的树状关联关系进行修改操作后,执行了修改操作的目标第三方代码库发生了变化(增加/删除/替换),由于目标第三方代码库发生了变化,会使得目标第三方代码库所引用的引用依赖树也发生变化,目标第三方代码库所引用的引用依赖树也即为目标第三方代码库所关联的关联依赖关系列表,具体为以所述目标第三方代码库为根节点的树状关联关系。
例如,在修改方式为新增一个目标第三方代码库1,而目标第三方代码库1本身具有以目标第三方代码库1为根节点,以第三方代码库2和第三方代码库3(2和3为同一层级)为目标第三方代码库1的子节点的引用依赖关系,则本申请需要获取这个引用依赖关系;
在修改方式为删除一个目标第三方代码库1,而目标第三方代码库1本身具有以目标第三方代码库1为根节点,以第三方代码库2和第三方代码库3(2和3为同一层级)为目标第三方代码库1的子节点的引用依赖关系,则本申请需要获取这个引用依赖关系;
在修改方式为将目标第三方代码库1替换为目标第三方代码库4,而目标第三方代码库4本身具有以目标第三方代码库4为根节点,以第三方代码库5为目标第三方代码库4的子节点的引用依赖关系,则本申请需要获取这个引用依赖关系;
在本申请获取该引用依赖关系后,可以对应添加引用依赖关系至差异比较结果中,以使得用户对变化的依赖项的引用依赖树进行感知。
另一个示例中,该添加了关联依赖关系列表包含的依赖关系的差异比较结果可以如下所示:
2dependencies were changed//修改后有2个依赖项(第三方代码库)发生变化;
Dependencies-20200826.txt vs dependencies-20200827.txt//第一依赖关系列表VS第二依赖关系列表;
==>Added artifacts://一个修改处理的修改类型为新增一个依赖项;
com.android.support:support-core-ui:27.0.2//新增依赖项的名称;
+---com.android.support:animated-vector-drawable:27.0.2//新增依赖项的一个子节点a;
\---com.android.support:appcompat-v7:27.0.2//子节点a的子节点
\---sg.bigo.mobile.android:setting-manager:1.0.0//新增依赖项的另一个同层级子节点b;
\---com.android.support:fragment:v7:27.0.2//子节点b的子节点
==>Modified artifacts://另一个修改处理的修改类型为替换一个依赖项;
com.***.code.gson:gson:2.8.5(original:2.8.4-->now:2.8.5)//替换前后两个依赖项各自的名称。
可选的,步骤207具体可以通过从所述目标第三方代码库的项目对象模型文件中,获取与所述目标第三方代码库所关联的关联依赖关系列表的方式进行实现。
在本申请实施例中,可以通过下载目标第三方代码库,并从目标第三方代码库的项目对象模型文件(pom,Project Object Model)中,获取与目标第三方代码库所关联的关联依赖关系列表
综上所述,本申请实施例提供的一种项目依赖关系变化的检测方法,通过对修正前后的第一依赖关系列表和第二依赖关系列表执行差异比较处理,得到用于反映第二依赖关系列表与第一依赖关系列表的不同差异比较结果,可以达到对项目依赖关系变化的精确检测的目的,通过对差异比较结果进行分析,可以清楚感知到对目标软件项目所使用的所有第三方代码库之间的树状关联关系修正所带来的变化,这有助于对依赖关系修改操作的效果进行分析和总结,降低了对依赖关系的检查工作的复杂程度。
图4是根据一示例性实施例示出的一种项目依赖关系变化的检测装置的结构框图,如图4所示,包括以下模块:
获取模块301,用于获取目标软件项目的第一依赖关系列表,所述第一依赖关系列表包括所述目标软件项目所使用的所有第三方代码库之间的树状关联关系;
可选的,所述获取模块301,包括:
确定子模块,用于确定所述目标软件项目包括的所有功能模块,所述功能模块包括基本类型的功能模块和动态类型的功能模块;
串行子模块,用于按照串行的执行方式,获取每个所述功能模块的依赖关系列表;
可选的,串行子模块可以包括:
命令单元,用于通过查找模块依赖项命令,获取每个所述功能模块的依赖关系列表。
去重合并子模块,用于将所有所述功能模块的依赖关系列表进行去重合并后,得到所述第一依赖关系列表。
修改模块302,用于在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表;
比较模块303,用于对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
可选的,所述差异比较结果包括:
所述修改处理的修改类型与执行了所述修改处理的目标第三方代码库的标识信息之间的对应关系,以及所述目标第三方代码库的数量。
可选的,所述修改处理具有对应的修改类型,在所述修改类型为新增第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中增加的第三方代码库的标识信息;
在所述修改类型为删减第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中删减的第三方代码库的标识信息;
在所述修改类型为替换第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中替换前的第三方代码库的标识信息以及替换后的第三方代码库的标识信息。
可选的,所述装置还可以包括:
关联模块,用于获取与所述目标第三方代码库所关联的关联依赖关系列表,所述关联依赖关系列表包括以所述目标第三方代码库为根节点的树状关联关系;
可选的,所述关联模块,包括:
关联子模块,用于从所述目标第三方代码库的项目对象模型文件中,获取与所述目标第三方代码库所关联的关联依赖关系列表。
添加模块,用于将所述关联依赖关系列表包含的依赖关系添加进所述差异比较结果中。
综上所述,本申请实施例提供的一种项目依赖关系变化的检测装置,通过对修正前后的第一依赖关系列表和第二依赖关系列表执行差异比较处理,得到用于反映第二依赖关系列表与第一依赖关系列表的不同差异比较结果,可以达到对项目依赖关系变化的精确检测的目的,通过对差异比较结果进行分析,可以清楚感知到对目标软件项目所使用的所有第三方代码库之间的树状关联关系修正所带来的变化,这有助于对依赖关系修改操作的效果进行分析和总结,降低了对依赖关系的检查工作的复杂程度。
本申请实施例所提供的一种项目依赖关系变化的检测装置可执行本申请任意实施例所提供的项目依赖关系变化的检测方法,具备执行项目依赖关系变化的检测方法相应的功能模块和有益效果。
可选的,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述项目依赖关系变化的检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(RandomAccess Memory,简称RAM)、磁碟或者光盘等。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (10)

1.一种项目依赖关系变化的检测方法,其特征在于,所述方法包括:
获取目标软件项目的第一依赖关系列表,所述第一依赖关系列表包括所述目标软件项目所使用的所有第三方代码库之间的树状关联关系;
在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表;
对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
2.根据权利要求1所述的方法,其特征在于,所述差异比较结果包括:
所述修改处理的修改类型与执行了所述修改处理的目标第三方代码库的标识信息之间的对应关系,以及所述目标第三方代码库的数量。
3.根据权利要求2所述的方法,其特征在于,所述修改处理具有对应的修改类型,在所述修改类型为新增第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中增加的第三方代码库的标识信息;
在所述修改类型为删减第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中删减的第三方代码库的标识信息;
在所述修改类型为替换第三方代码库类型的情况下,所述目标第三方代码库的标识信息包括:在所述目标软件项目中替换前的第三方代码库的标识信息以及替换后的第三方代码库的标识信息。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取与所述目标第三方代码库所关联的关联依赖关系列表,所述关联依赖关系列表包括以所述目标第三方代码库为根节点的树状关联关系;
将所述关联依赖关系列表包含的依赖关系添加进所述差异比较结果中。
5.根据权利要求4所述的方法,其特征在于,所述获取与所述目标第三方代码库所关联的关联依赖关系列表,包括:
从所述目标第三方代码库的项目对象模型文件中,获取与所述目标第三方代码库所关联的关联依赖关系列表。
6.根据权利要求1所述的方法,其特征在于,所述获取目标软件项目的第一依赖关系列表,包括:
确定所述目标软件项目包括的所有功能模块,所述功能模块包括基本类型的功能模块和动态类型的功能模块;
按照串行的执行方式,获取每个所述功能模块的依赖关系列表;
将所有所述功能模块的依赖关系列表进行去重合并后,得到所述第一依赖关系列表。
7.根据权利要求1所述的方法,其特征在于,所述获取每个所述功能模块的依赖关系列表包括:
通过查找模块依赖项命令,获取每个所述功能模块的依赖关系列表。
8.一种项目依赖关系变化的检测装置,其特征在于,所述装置包括:
获取模块,用于获取目标软件项目的第一依赖关系列表,所述第一依赖关系列表包括所述目标软件项目所使用的所有第三方代码库之间的树状关联关系;
修改模块,用于在对所述目标软件项目所使用的第三方代码库进行修改处理后,获取所述目标软件项目的第二依赖关系列表;
比较模块,用于对所述第一依赖关系列表和所述第二依赖关系列表执行差异比较处理,得到差异比较结果,所述差异比较结果用于反映所述第二依赖关系列表与所述第一依赖关系列表的不同。
9.一种检测装置,其特征在于,
包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的项目依赖关系变化的检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一所述的项目依赖关系变化的检测方法。
CN202110189174.7A 2021-02-19 2021-02-19 项目依赖关系变化的检测方法及装置 Pending CN112860312A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110189174.7A CN112860312A (zh) 2021-02-19 2021-02-19 项目依赖关系变化的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110189174.7A CN112860312A (zh) 2021-02-19 2021-02-19 项目依赖关系变化的检测方法及装置

Publications (1)

Publication Number Publication Date
CN112860312A true CN112860312A (zh) 2021-05-28

Family

ID=75989634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110189174.7A Pending CN112860312A (zh) 2021-02-19 2021-02-19 项目依赖关系变化的检测方法及装置

Country Status (1)

Country Link
CN (1) CN112860312A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543410A (zh) * 2022-11-29 2022-12-30 深圳开源互联网安全技术有限公司 组件依赖关系分析方法、装置与介质
WO2023015669A1 (zh) * 2021-08-12 2023-02-16 广东艾檬电子科技有限公司 项目依赖关系展示方法、装置、终端设备和存储介质
TWI821033B (zh) * 2022-10-26 2023-11-01 大陸商鼎捷軟件股份有限公司 關聯資料自動處理系統以及關聯資料自動處理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180136930A1 (en) * 2016-11-11 2018-05-17 Sap Se Automated identification of code dependency
CN110162477A (zh) * 2019-05-28 2019-08-23 山东财经大学 一种第三方库版本升级的异常自动调试***及方法
CN110704062A (zh) * 2019-09-27 2020-01-17 天津五八到家科技有限公司 依赖管理方法、数据获取方法、装置及设备
CN110990023A (zh) * 2019-12-16 2020-04-10 上海钧正网络科技有限公司 aar文件的依赖关系上传方法、装置、存储介质及电子设备
CN111158741A (zh) * 2019-12-23 2020-05-15 北京五八信息技术有限公司 监控业务模块对第三方类库依赖关系变化的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180136930A1 (en) * 2016-11-11 2018-05-17 Sap Se Automated identification of code dependency
CN110162477A (zh) * 2019-05-28 2019-08-23 山东财经大学 一种第三方库版本升级的异常自动调试***及方法
CN110704062A (zh) * 2019-09-27 2020-01-17 天津五八到家科技有限公司 依赖管理方法、数据获取方法、装置及设备
CN110990023A (zh) * 2019-12-16 2020-04-10 上海钧正网络科技有限公司 aar文件的依赖关系上传方法、装置、存储介质及电子设备
CN111158741A (zh) * 2019-12-23 2020-05-15 北京五八信息技术有限公司 监控业务模块对第三方类库依赖关系变化的方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023015669A1 (zh) * 2021-08-12 2023-02-16 广东艾檬电子科技有限公司 项目依赖关系展示方法、装置、终端设备和存储介质
TWI821033B (zh) * 2022-10-26 2023-11-01 大陸商鼎捷軟件股份有限公司 關聯資料自動處理系統以及關聯資料自動處理方法
CN115543410A (zh) * 2022-11-29 2022-12-30 深圳开源互联网安全技术有限公司 组件依赖关系分析方法、装置与介质

Similar Documents

Publication Publication Date Title
US8434054B2 (en) System and method for managing cross project dependencies at development time
CN112860312A (zh) 项目依赖关系变化的检测方法及装置
EP0688448B1 (en) Incremental build system
EP0664027B1 (en) Program modeling system
US20200089492A1 (en) Software dependency shading
US7765520B2 (en) System and method for managing cross project dependencies at development time
JP2016519385A (ja) ドライバをロードする方法及び組み込みデバイス
US9043757B2 (en) Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files
CN108762825B (zh) 动态库重载的实现方法及***
US9785416B2 (en) Presenting a custom view in an integrated development environment based on a variable selection
CN112799937B (zh) 基于GitHub自动化检测Maven项目中依赖冲突问题的方法
CN112099880B (zh) 场景驱动的应用程序约减方法和***
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
US20160253157A1 (en) Software refactoring
CN109284222B (zh) 软件单元、数据处理***中的项目测试方法、装置及设备
CN114138281A (zh) 软件工程的编译方法、装置、设备及介质
CN113495728A (zh) 依赖关系确定方法、装置、电子设备及介质
CN112000367B (zh) 一种二进制库文件版本兼容性识别方法和装置
CN111240987B (zh) 移植程序检测方法、装置、电子设备及计算机可读存储介质
CN111352631A (zh) 一种接口兼容性检测方法及装置
KR20080013422A (ko) 소프트웨어 프로젝트 빌드 방법
CN113515303B (zh) 一种项目转型方法、装置和设备
US11740895B2 (en) Generation of software program repair explanations
Borodin et al. Deterministic static analysis
CN114791865A (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