CN109189729A - 各组件间依赖关系的查找方法、装置、设备及存储介质 - Google Patents
各组件间依赖关系的查找方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109189729A CN109189729A CN201811022954.7A CN201811022954A CN109189729A CN 109189729 A CN109189729 A CN 109189729A CN 201811022954 A CN201811022954 A CN 201811022954A CN 109189729 A CN109189729 A CN 109189729A
- Authority
- CN
- China
- Prior art keywords
- component
- file
- filename
- dependence
- module
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 abstract description 10
- 101100409014 Rhizobium meliloti (strain 1021) ppdK gene Proteins 0.000 description 25
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 6
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 238000006116 polymerization reaction Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种各组件间依赖关系的查找方法、装置、设备及存储介质,其中方法包括:确定当前组件引用的各头文件;以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件;根据各组件的第一文本文件,确定各组件间的依赖关系。本发明通过头文件的引用来查找组件间的依赖关系,仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,过程简单,耗时较低。
Description
技术领域
本发明涉及计算机领域,特别涉及一种各组件间依赖关系的查找方法、装置、设备及存储介质。
背景技术
在APP(应用程序)开发过程当中,经常会碰到工程间依赖的情况,如上层业务调用一些第三方的组件或软件开发工具包(Software Development Kit,即SDK),通常会将这些组件或SDK放入一个独立的组件工程去供外部调用。对于一些体量比较大的APP来说,功能模块较为复杂,通常会将APP划分为多个组件工程进行管理,并且由多个开发团队进行开发和维护,由于研发人员的水平参差不齐,可能会产生一些不应该有的依赖,给后续的组件复用带来一些麻烦。若要对组件进行解耦即解除依赖关系,首先要梳理这些耦合关系,也就是找到这些组件间的依赖关系。
现有技术中为找出组件间的依赖关系可采用如下技术方案:对于每一个组件工程需要从集成工程中移出去,再进行编译,如果能编译过,则说明其它组件对它没有依赖;否则记录编译失败的工程与它的依赖关系和涉及到的头文件。循环一遍后,即能找出组件间的依赖关系。但是在上述技术方案中,每个组件工程都要从集成工程中移出去,再重新集成,过程比较繁琐,比较耗时;同时,找出的依赖关系不全,如果要找出所有的依赖关系,需要编译出错后不断往集成工程中添加移出去的文件,去查找下一个依赖他的组件,这个纯手工操作,比较耗时。
发明内容
为了解决现有技术中各组件间依赖关系的查找方法过程繁琐、耗时较长的问题,本发明实施例提供了一种各组件间依赖关系的查找方法、装置、设备及存储介质。
依据本发明实施例的一个方面,提供了一种各组件间依赖关系的查找方法,包括:
确定当前组件引用的各头文件;
以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;
当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件;
根据各组件的第一文本文件,确定各组件间的依赖关系。
可选的,在本发明实施例各组件间依赖关系的查找方法中,所述确定当前组件引用的各头文件,包括:
确定所述当前组件中原代码文件的各导入行;
对每个导入行的头文件名进行分析,遍历各导入行,得到所述当前组件引用的各头文件。
可选的,在本发明实施例各组件间依赖关系的查找方法中,所述将索引对应的文件名和命中组件具有依赖关系的信息写入所述命中组件的第一文本文件,包括:
查看所述命中组件的第一文本文件中是否已经存在所述索引对应的文件名;
当存在时,将所述命中组件写入与所述索引对应的文件名相对应的列表中;
当不存在时,则新建与所述索引对应的文件名相对应的列表,并将所述命中组件写入与所述索引对应的文件名相对应的列表中。
可选的,在本发明实施例各组件间依赖关系的查找方法中,在确定当前组件引用的各头文件之前,还包括:
确定每个组件中的各头文件,将每个组件中各头文件的文件名写入对应组件的第二文本文件。
可选的,在本发明实施例各组件间依赖关系的查找方法中,以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,包括:
以所述引用的每个头文件的文件名为索引,搜索各组件的第二文本文件。
依据本发明实施例的另一个方面,提供了一种各组件间依赖关系的查找装置,包括引用头文件确定模块、搜索模块、第一文本文件形成模块及依赖关系确定模块;
所述引用头文件确定模块,用于确定当前组件引用的各头文件;
所述搜索模块,用于以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;
所述第一文本文件形成模块,用于当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件;
所述依赖关系确定模块,用于根据各组件的第一文本文件,确定各组件间的依赖关系。
可选的,在本发明实施例所述的各组件间依赖关系的查找装置中,所述引用头文件确定模块具体用于:
确定所述当前组件中原代码文件的各导入行;
对每个导入行的头文件名进行分析,遍历各导入行,得到所述当前组件引用的各头文件。
可选的,在本发明实施例所述的各组件间依赖关系的查找装置中,所述第一文本文件形成模块具体用于:
查看所述命中组件的第一文本文件中是否已经存在所述索引对应的文件名;
当存在时,将所述命中组件写入与所述索引对应的文件名相对应的列表中;
当不存在时,则新建与所述索引对应的文件名相对应的列表,并将所述命中组件写入与所述索引对应的文件名相对应的列表中。
可选的,在本发明实施例所述的各组件间依赖关系的查找装置中,还包括第二文本文件确定模块:
所述第二文本文件确定模块,用于在确定当前组件引用的各头文件之前,确定每个组件中的各头文件,将每个组件中各头文件的文件名写入对应组件的第二文本文件。
可选的,在本发明实施例所述的各组件间依赖关系的查找装置中,所述搜索模块具体用于:
以所述引用的每个头文件的文件名为索引,搜索各组件的第二文本文件中。
依据本发明实施例的第三个方面,提供了一种各组件间依赖关系的查找设备,所述设备包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的各组件间依赖关系查找方法的步骤。
依据本发明实施例的第四个方面,提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的各组件间依赖关系查找方法的步骤。
本发明实施例的有益效果如下:
本发明实施例提供的各组件间依赖关系的查找方法、装置、设备及存储介质,当需要查找各组件间的依赖关系时,确定当前组件引用的各头文件,以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件,当所述命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件。本发明通过头文件的引用来查找组件间的依赖关系,仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,过程简单,耗时较低。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明第一实施例中各组件间依赖关系查找方法的流程示意图;
图2为本发明第二实施例中各组件间依赖关系查找方法的流程示意图;
图3为本发明第三实施例中各组件间依赖关系查找方法的流程示意图;
图4为本发明第四实施例中各组件间依赖关系查找方法的流程示意图;
图5为本发明第五实施例中各组件间依赖关系查找装置的结构示意图;
图6为本发明第六实施例中各组件间依赖关系查找设备的结构示意图;
图7为本发明实施例实例1中各组件间依赖关系查找方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于唯一限定本发明。
根据本发明的第一实施例,提供了一种各组件间依赖关系的查找方法。图1为本发明第一实施例中各组件间依赖关系查找方法的流程示意图,如图1所示,本发明第一实施例的各组件间依赖关系的查找方法,包括以下步骤:
S101:确定当前组件引用的各头文件。
在本发明实施例中,头文件指的是.h文件,组件引用的头文件可以理解为组件中引用的文件名为.h文件的文件。当前组件引用的各头文件包括当前组件引用的本组件的各头文件和/或当前组件引用的其他组件的各头文件。所有的组件工程都是源码形式存在。
S102:以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件。
在本发明实施例中,当索引对应的头文件为当前组件引用的本组件的头文件时,搜索得到的命中组件为当前组件;当索引对应的头文件为当前组件引用的其他组件的头文件时,搜索得到的命中组件为非当前组件。
S103:当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件。
在本发明实施例中,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件,也就是说,在命中组件的第一文本文件中记录索引对应的文件名和命中组件之间的依赖关系。示例的,每个组件工程为一个pod,假定工程命名按字母排序分别为podA、podB、podC、podD,...依次类推,第一文本文件为hPublicX.txt,其中X为命中组件的名称。
具体的,假如当前组件引用的头文件为x.h时,将x.h在当前组件的各头文件的文件名中进行搜索,如果搜到了,就表示不依赖外部pod,忽略;否则如在podA中各头文件的文件名中搜索到了x.h(即podA各头文件的文件名中包括x.h),则表示x.h命中了podA,podA即为命中组件,将x.h与命中组件podA具有依赖关系的信息写入podA的第一文本文件hPublicA.txt中。
S104:根据各组件的第一文本文件,确定各组件间的依赖关系。
在本发明实施例中,可以对各组件的第一文本文件中记录的索引对应的文件名和命中组件之间的依赖关系进行归纳总结,得到各组件间的依赖关系,其中各组件间的依赖关系包括每个组件对其他组件的依赖关系及所依赖的头文件列表。
在本发明实施例中,在根据各组件的第一文本文件确定各组件间的依赖关系之后,还包括:将各组件间的依赖关系形成一个报表并显示。
本发明第一实施例提供的各组件间依赖关系的查找方法,当需要查找各组件间的依赖关系时,确定当前组件引用的各头文件,以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件,当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件。本发明通过头文件的引用来查找组件间的依赖关系,仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,过程简单,耗时较低。
根据本发明的第二实施例,提供了一种各组件间依赖关系的查找方法。图2为本发明第二实施例中各组件间依赖关系查找方法的流程示意图,如图2所示,本发明第二实施例的各组件间依赖关系的查找方法,包括以下步骤:
S201:确定当前组件中原代码文件的各导入行,对每个导入行的头文件名进行分析,遍历各导入行,得到当前组件引用的各头文件。
在本发明实施例中,通过步骤S201来确定当前组件引用的各头文件。其中,原代码文件包括:.h、.m、.mm文件。具体的,可以通过扫描当前组件中的原代码文件,得到当前组件的各导入行(即import行),通过对导入行的文件名进行分析,如果导入行中某个文件的文件名为.h文件,则该文件即为组件引用的头文件,遍历各导入行,得到当前组件引用的各头文件。也就是说,通过对组件中原代码文件导入行的分析来确定组件引用的头文件。其实现的原理为:两个组件间如果有依赖,必然需要导入对方的头文件,通过头文件的导入情况可分析出组件间的依赖情况。
S202:以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件。
S203:当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件。
S204:根据各组件的第一文本文件,确定各组件间的依赖关系。
本发明第二实施例提供的各组件间依赖关系的查找方法,通过对当前组件导入行文件名的分析得到当前组件应用的各头文件,以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件,当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件,仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,过程简单,耗时较低。
根据本发明的第三实施例,提供了一种各组件间依赖关系的查找方法。图3为本发明第三实施例中各组件间依赖关系查找方法的流程示意图,如图3所示,本发明第三实施例的各组件间依赖关系的查找方法,包括以下步骤:
S301:确定当前组件引用的各头文件。
S302:以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件。
S303:当命中组件非当前组件时,查看命中组件的第一文本文件中是否已经存在索引对应的文件名;当存在时,将命中组件写入与索引对应的文件名相对应的列表中;当不存在时,则新建与索引对应的文件名相对应的列表,并将命中组件写入与索引对应的文件名相对应的列表中。
在本发明实施例中,索引对应的文件名和命中组件具有依赖关系的信息在命中组件的第一文本文件是以列表的形式存在的。示例的,假如当前组件引用的头文件为x.h,在podA(非当前组件)中各头文件的文件名中搜索到了x.h(即podA各头文件的文件名中包括x.h),则表示x.h命中了podA,podA即为命中组件,查看hPublicA.txt中是否已存在x.h,如果存在将当前pod名,加入到x.h后面对应的列表中,如果已经存在其中,则忽略;如果不存在当前pod,则新建x.h行,并将当前pod名加入到新建x.h行。
S304:根据各组件的第一文本文件,确定各组件间的依赖关系。
本发明第三实施例提供的各组件间依赖关系的查找方法,通过头文件的引用来查找组件间的依赖关系,并具体提供了一种当搜索得到的命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件第一文本文件的方法,最后仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,过程简单,耗时较低。
根据本发明的第四实施例,提供了一种各组件间依赖关系的查找方法。图4为本发明第四实施例中各组件间依赖关系查找方法的流程示意图,如图4所示,本发明第四实施例的各组件间依赖关系的查找方法,包括以下步骤:
S401:确定每个组件中的各头文件,并将每个组件中各头文件的文件名写入对应组件的第二文本文件。
在本发明实施例中,组件中的头文件可以理解为组件中文件名为.h文件的文件。组件中的头文件的确定方法为:判断组件中各文件的文件名,如果某个文件的文件名为.h文件,则该文件为组件中的头文件。也就是说,根据组件中文件的文件名确定组件中的头文件。
将每个组件中各头文件的文件名写入对应组件的第二文本文件,也就是说,在某组件的第二文本文件中存储有该组件的各头文件的文件名。具体的,第二文本文件为hListX.txt,其中X为组件的名称。在hListX.txt中,每个头文件占一行。
例如有组件A、组件B和组件C三个组件,将组件A中各头文件的文件名写入组件A的第二文本文件hListA.txt中,将组件B中各头文件的文件名写入组件B的第二文本文件hListB.txt中,将组件C中各头文件的文件名写入组件C的第二文本文件hListC.txt中。
S402:当需要查找各组件间的依赖关系时,确定当前组件引用的各头文件。S403:以引用的每个头文件的文件名为索引,搜索各组件的第二文本文件。
本发明实施例中,在步骤S401中,将每个组件中各头文件的文件名写入对应组件的第二文本文件,使得仅需要在各组件的第二文本文件中搜索即可得到命中组件,进一步降低了耗时。
S404:当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件。
S405:根据各组件的第一文本文件,确定各组件间的依赖关系。
本发明第四实施例将每个组件pod的头文件名列在一个文件hListX.txt中,利用确定当前组件引用的一个头文件,先遍历自身pod的hListX.txt文件,如果在自身hListX.txt中搜索到,则跳过,否则遍历其它pod的hListX.txt文件内容,直到搜索到命中组件,将索引对应的文件名和命中组件记录到命中组件的hPublicX.txt文件中,最后将每个组件的hPublicX.txt进行聚合分析,输出最终的pod依赖关系及依赖的文件。
本发明第四实施例提供的各组件间依赖关系的查找方法,根据组件中各文件的文件名来确定组件中的各头文件,并将每个组件中各头文件的文件名写入对应组件的第二文本文件,使得每次只需要在各组件的第二文本文件中进行搜索即可得到命中组件,而不需要遍历各组件的各头文件的文件名,进一步使查找简单化,降低耗时。
本发明的第五实施例,提供了一种各组件间依赖关系的查找装置。图5为本发明第五实施例中各组件间依赖关系查找装置的结构示意图,如图5所述,本发明第四实施例的文件同步装置包括引用头文件确定模块50、搜索模块52、第一文本文件形成模块54及依赖关系确定模块56,以下对各模块进行详细的说明。
所述引用头文件确定模块50,用于确定当前组件引用的各头文件。
在本发明实施例中,所述引用头文件确定模块50具体用于:确定所述当前组件中原代码文件的各导入行;对每个导入行的头文件名进行分析,遍历各导入行,得到所述当前组件引用的各头文件。
所述搜索模块52,用于以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件。
所述第一文本文件形成模块54,用于当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件。
在本发明实施例中,所述第一文本文件形成模块52具体用于:查看命中组件的第一文本文件中是否已经存在索引对应的文件名;当存在时,将命中组件写入与索引对应的文件名相对应的列表中;当不存在时,则新建与索引对应的文件名相对应的列表,并将命中组件写入与索引对应的文件名相对应的列表中。
所述依赖关系确定模块56,用于根据各组件的第一文本文件,确定各组件间的依赖关系。
进一步的,在本发明实施例中,还包括第二文本文件确定模块:所述第二文本文件确定模块,用于在确定当前组件引用的各头文件之前,确定每个组件中的各头文件,将每个组件中各头文件的文件名写入对应组件的第二文本文件
当将每个组件中各头文件的文件名写入对应组件的第二文本文件时,所述搜索模块52具体用于:以所述引用的每个头文件的文件名为索引,搜索各组件的第二文本文件。在本发明实施例中,将每个组件中各头文件的文件名写入对应组件的第二文本文件,使得仅需要在各组件的第二文本文件中搜索即可得到命中组件,进一步降低了耗时。
本发明第五实施例提供的各组件间依赖关系的查找装置,当需要查找各组件间的依赖关系时,确定当前组件引用的各头文件,以引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件,当命中组件非当前组件时,将索引对应的文件名和命中组件具有依赖关系的信息写入命中组件的第一文本文件。本发明通过头文件的引用来查找组件间的依赖关系,仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,过程简单,耗时较低。
本发明第六实施例,提供了一种各组件间依赖关系查找设备。图6为本发明第六实施例中各组件间依赖关系查找设备的结构示意图,如图6所示,各组件间依赖关系查找设备包括:存储器62、处理器64及存储在所述存储器62上并可在所述处理器64上运行的计算机程序,所述计算机程序被所述处理器执行时实现如下步骤:确定当前组件引用的各头文件;以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件;根据各组件的第一文本文件,确定各组件间的依赖关系。更加具体的实现方式如第一实施例至第四实施例所述,在此不再赘述。
本发明第六实施例还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:确定当前组件引用的各头文件;以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件;根据各组件的第一文本文件,确定各组件间的依赖关系。更加具体的实现方式如第一实施例至第四实施例所述,在此不再赘述。其中,计算机可读存储介质包括但不限于为:ROM、RAM、磁盘或光盘等。
为了更加详细的说明本发明实施例,给出实例1,图7为本发明实施例实例1中各组件间依赖关系查找方法的流程示意图,如图7所示,实例1包括以下步骤:
步骤1:分别确定组件A(即podA)、组件B(即podB)及组件C(即podC)的头文件。其中podA中的头文件包括x.h和y.h,将x.h和y.h写入podA的第二文本文件hListA.txt;podB中的头文件包括xx.h和yy.h,将xx.h和yy.h写入podA的第二文本文件hListA.txt。podC中的头文件不包括x.h和yy.h。
步骤2:当需要查找各组件间的依赖关系时,例如针对podC,通过扫描podC中的.h、.m文件,得到podC引用的头文件x.h和yy.h。
步骤3:以podC引用的头文件x.h为索引在各组件(包括podA、podB及podC)的第二文本文件中进行搜索,得到x.h的命中组件podA;以podC引用的头文件yy.h为索引在各组件(包括podA、podB及podC)的第二文本文件中进行搜索,得到yy.h的命中组件podB。
步骤4:对于podC引用的头文件x.h,由于其命中组件podA非当前组件,将索引对应的文件名(x.h)和命中组件(podA)具有依赖关系的信息写入所述命中组件(podA)的第一文本文件hPublicA.txt中;对于podC引用的头文件yy.h,由于其命中组件podB非当前组件,将索引对应的文件名(yy.h)和命中组件(podB)具有依赖关系的信息写入所述命中组件(podB)的第一文本文件hPublicB.txt中。
步骤5:对命中组件(podA)的第一文本文件进行聚合分析,得到各组件间的依赖关系,其中聚合结果表示:podC依赖于podA中的x.h头文件;podD依赖于podA中的x.h和y.h头文件;对命中组件(podB)的第一文本文件进行聚合分析,得到各组件间的依赖关系,其中聚合结果表示:podA依赖于podB中的yy.h头文件;podC依赖于podB中的yy.h头文件;podE依赖于podB中的xx.h头文件。
本发明实施例实施1提供的各组件间依赖关系的查找方法,通过头文件的引用来查找组件间的依赖关系,最后仅仅通过各组件的第一文本文件即可确定各组件间的依赖关系,其中依赖关系包括每个组件对其他组件的依赖关系及所依赖的头文件列表,过程简单,耗时较低。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种各组件间依赖关系的查找方法,其特征在于,包括:
确定当前组件引用的各头文件;
以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;
当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件;
根据各组件的第一文本文件,确定各组件间的依赖关系。
2.如权利要求1所述的方法,其特征在于,所述确定当前组件引用的各头文件,包括:
确定所述当前组件中原代码文件的各导入行;
对每个导入行的头文件名进行分析,遍历各导入行,得到所述当前组件引用的各头文件。
3.如权利要求1所述的方法,其特征在于,所述将索引对应的文件名和命中组件具有依赖关系的信息写入所述命中组件的第一文本文件,包括:
查看所述命中组件的第一文本文件中是否已经存在所述索引对应的文件名;
当存在时,将所述命中组件写入与所述索引对应的文件名相对应的列表中;
当不存在时,则新建与所述索引对应的文件名相对应的列表,并将所述命中组件写入与所述索引对应的文件名相对应的列表中。
4.如权利要求1所述的方法,其特征在于,在确定当前组件引用的各头文件之前,还包括:
确定每个组件中的各头文件,并将每个组件中各头文件的文件名写入对应组件的第二文本文件。
5.如权利要求4所述的方法,其特征在于,所述以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,包括:
以所述引用的每个头文件的文件名为索引,搜索各组件的第二文本文件。
6.一种各组件间依赖关系的查找装置,其特征在于,包括引用头文件确定模块、搜索模块、第一文本文件形成模块及依赖关系确定模块;
所述引用头文件确定模块,用于确定当前组件引用的各头文件;
所述搜索模块,用于以所述引用的每个头文件的文件名为索引,搜索各组件的各头文件的文件名,并将搜索到的文件名对应的组件作为命中组件;
所述第一文本文件形成模块,用于当所述命中组件非所述当前组件时,将索引对应的文件名和所述命中组件具有依赖关系的信息写入所述命中组件的第一文本文件;
所述依赖关系确定模块,用于根据各组件的第一文本文件,确定各组件间的依赖关系。
7.如权利要求6所述的装置,其特征在于,所述引用头文件确定模块具体用于:
确定所述当前组件中原代码文件的各导入行;
对每个导入行的头文件名进行分析,遍历各导入行,得到所述当前组件引用的各头文件。
8.如权利要求6所述的装置,其特征在于,所述第一文本文件形成模块具体用于:
查看所述命中组件的第一文本文件中是否已经存在所述索引对应的文件名;
当存在时,将所述命中组件写入与所述索引对应的文件名相对应的列表中;
当不存在时,则新建与所述索引对应的文件名相对应的列表,并将所述命中组件写入与所述索引对应的文件名相对应的列表中。
9.如权利要求6所述的装置,其特征在于,还包括第二文本文件确定模块:
所述第二文本文件确定模块,用于在确定当前组件引用的各头文件之前,确定每个组件中的各头文件,将每个组件中各头文件的文件名写入对应组件的第二文本文件。
10.如权利要求9所述的装置,其特征在于,所述搜索模块具体用于:
以所述引用的每个头文件的文件名为索引,搜索各组件的第二文本文件。
11.一种各组件间依赖关系的查找设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1~5任一项所述的各组件间依赖关系查找方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1~5中任一项所述的各组件间依赖关系查找方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811022954.7A CN109189729B (zh) | 2018-09-03 | 2018-09-03 | 各组件间依赖关系的查找方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811022954.7A CN109189729B (zh) | 2018-09-03 | 2018-09-03 | 各组件间依赖关系的查找方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189729A true CN109189729A (zh) | 2019-01-11 |
CN109189729B CN109189729B (zh) | 2024-07-19 |
Family
ID=64912156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811022954.7A Active CN109189729B (zh) | 2018-09-03 | 2018-09-03 | 各组件间依赖关系的查找方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189729B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442399A (zh) * | 2019-08-09 | 2019-11-12 | 广州小鹏汽车科技有限公司 | 应用的React Native业务执行方法、装置、存储介质及终端设备 |
CN110618931A (zh) * | 2019-08-14 | 2019-12-27 | 重庆金融资产交易所有限责任公司 | 依赖关系检测方法、装置、计算机设备及可读存储介质 |
CN110928797A (zh) * | 2019-11-29 | 2020-03-27 | 五八有限公司 | 一种代码耦合检测方法、装置、终端设备及存储介质 |
CN113127000A (zh) * | 2021-04-23 | 2021-07-16 | 北京字节跳动网络技术有限公司 | 应用程序组件的编译方法、装置、设备及存储介质 |
CN113821486A (zh) * | 2021-11-22 | 2021-12-21 | 北京金堤科技有限公司 | pod库之间依赖关系的确定方法及其装置、电子设备 |
CN114020694A (zh) * | 2021-10-19 | 2022-02-08 | 北京五八信息技术有限公司 | 一种头文件地址的获取方法、装置、电子设备及存储介质 |
CN114510511A (zh) * | 2020-11-17 | 2022-05-17 | 武汉斗鱼鱼乐网络科技有限公司 | 工程文件与库引用关系的展示方法、装置、设备及介质 |
CN114528007A (zh) * | 2021-12-31 | 2022-05-24 | 北京达佳互联信息技术有限公司 | 组件处理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000112611A (ja) * | 1998-10-02 | 2000-04-21 | Ricoh Co Ltd | ソフトウエア開発文書の表示方法および記憶媒体 |
US6681391B1 (en) * | 2000-06-21 | 2004-01-20 | Microsoft Corporation | Method and system for installing software on a computer system |
CN104951339A (zh) * | 2015-06-05 | 2015-09-30 | 烽火通信科技股份有限公司 | 一种基于Bundle依赖关系的自动搜索安装系统及方法 |
CN106202450A (zh) * | 2016-07-11 | 2016-12-07 | 南京大学 | 一种基于makefile文件依赖的源码分析方法 |
CN106469049A (zh) * | 2015-08-19 | 2017-03-01 | 腾讯科技(深圳)有限公司 | 一种文件扫描的方法及装置 |
CN107885501A (zh) * | 2017-11-03 | 2018-04-06 | 武汉斗鱼网络科技有限公司 | 获取Android中组件相互引用关系的方法及装置 |
-
2018
- 2018-09-03 CN CN201811022954.7A patent/CN109189729B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000112611A (ja) * | 1998-10-02 | 2000-04-21 | Ricoh Co Ltd | ソフトウエア開発文書の表示方法および記憶媒体 |
US6681391B1 (en) * | 2000-06-21 | 2004-01-20 | Microsoft Corporation | Method and system for installing software on a computer system |
CN104951339A (zh) * | 2015-06-05 | 2015-09-30 | 烽火通信科技股份有限公司 | 一种基于Bundle依赖关系的自动搜索安装系统及方法 |
CN106469049A (zh) * | 2015-08-19 | 2017-03-01 | 腾讯科技(深圳)有限公司 | 一种文件扫描的方法及装置 |
CN106202450A (zh) * | 2016-07-11 | 2016-12-07 | 南京大学 | 一种基于makefile文件依赖的源码分析方法 |
CN107885501A (zh) * | 2017-11-03 | 2018-04-06 | 武汉斗鱼网络科技有限公司 | 获取Android中组件相互引用关系的方法及装置 |
Non-Patent Citations (4)
Title |
---|
V. A. SHAPTSEV TYUMEN STATE UNIVERSITY; TYUMEN, RUSSIA: "Formulas for Estimating the Reliability of Dynamic Info-Communication Network with Dependent Components", 2017 IEEE DYNAMICS OF SYSTEMS, MECHANISMS AND MAСHINES (DYNAMICS) (OMSK, RUSSIA), 25 December 2017 (2017-12-25), pages 1 - 5 * |
刘然等: "基于UML的CASE平台的代码自动生成", 北京理工大学学报, vol. 22, no. 02, 30 April 2002 (2002-04-30), pages 196 - 200 * |
蔡完锡等: "Android系统非应用层软件的管理和优化", 计算机工程与设计, vol. 37, no. 05, 16 May 2016 (2016-05-16), pages 1375 - 1383 * |
韩德强等: "基于Simics 的嵌入式系统的研究与开发", 电子技术应用, vol. 41, no. 2, 6 February 2015 (2015-02-06), pages 31 - 34 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442399A (zh) * | 2019-08-09 | 2019-11-12 | 广州小鹏汽车科技有限公司 | 应用的React Native业务执行方法、装置、存储介质及终端设备 |
CN110618931A (zh) * | 2019-08-14 | 2019-12-27 | 重庆金融资产交易所有限责任公司 | 依赖关系检测方法、装置、计算机设备及可读存储介质 |
CN110618931B (zh) * | 2019-08-14 | 2024-06-07 | 重庆金融资产交易所有限责任公司 | 依赖关系检测方法、装置、计算机设备及可读存储介质 |
CN110928797A (zh) * | 2019-11-29 | 2020-03-27 | 五八有限公司 | 一种代码耦合检测方法、装置、终端设备及存储介质 |
CN110928797B (zh) * | 2019-11-29 | 2021-01-22 | 五八有限公司 | 一种代码耦合检测方法、装置、终端设备及存储介质 |
CN114510511A (zh) * | 2020-11-17 | 2022-05-17 | 武汉斗鱼鱼乐网络科技有限公司 | 工程文件与库引用关系的展示方法、装置、设备及介质 |
CN113127000A (zh) * | 2021-04-23 | 2021-07-16 | 北京字节跳动网络技术有限公司 | 应用程序组件的编译方法、装置、设备及存储介质 |
CN113127000B (zh) * | 2021-04-23 | 2024-05-28 | 北京字节跳动网络技术有限公司 | 应用程序组件的编译方法、装置、设备及存储介质 |
CN114020694A (zh) * | 2021-10-19 | 2022-02-08 | 北京五八信息技术有限公司 | 一种头文件地址的获取方法、装置、电子设备及存储介质 |
CN113821486A (zh) * | 2021-11-22 | 2021-12-21 | 北京金堤科技有限公司 | pod库之间依赖关系的确定方法及其装置、电子设备 |
CN114528007A (zh) * | 2021-12-31 | 2022-05-24 | 北京达佳互联信息技术有限公司 | 组件处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109189729B (zh) | 2024-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189729A (zh) | 各组件间依赖关系的查找方法、装置、设备及存储介质 | |
Shahbazian et al. | Recovering architectural design decisions | |
CN104252445B (zh) | 近似重复文档检测方法及装置 | |
CN109388566B (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN103440201A (zh) | 动态污点分析装置及其在文件格式逆向解析中的应用 | |
CN109144882A (zh) | 一种基于程序不变量的软件故障定位方法及装置 | |
CN111726249B (zh) | 网络设备的配置文件处理方法及装置 | |
CN105976302A (zh) | 一种可配置的数据比对方法及系统 | |
CN110110320B (zh) | 自动合同审查方法、装置、介质以及电子设备 | |
CN109446107A (zh) | 一种源代码检测方法及装置、电子设备 | |
CN109858626A (zh) | 一种知识库构建方法及装置 | |
CN104298766B (zh) | 一种清除SQLite数据库中数据的方法 | |
US20190220441A1 (en) | Method, device and computer program product for data migration | |
CN101989322B (zh) | 自动提取恶意代码内存特征的方法和系统 | |
CN104424399B (zh) | 一种基于病毒蛋白质本体的知识导航的方法、装置 | |
CN201548954U (zh) | 一种对Web页面进行自动化测试的装置 | |
CN111538495A (zh) | 识别项目中引用Python开源组件的方法及系统、设备 | |
CN110704378A (zh) | 日志记录方法及日志记录系统 | |
CN116881512A (zh) | 一种跨系统元数据血缘自动解析方法 | |
CN109240926A (zh) | 一种软件兼容性测试装置及方法 | |
CN111966655B (zh) | 日志采集过程中管理内存中文件对象的方法和装置 | |
CN107402920A (zh) | 确定关系数据库表关联复杂度的方法和装置 | |
CN112783750A (zh) | 一种代码漏洞存储方法、装置、电子设备和存储介质 | |
CN108415930A (zh) | 一种数据解析方法及装置 | |
CN109408533A (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 |