一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

工程文件与库引用关系的展示方法、装置、设备及介质与流程

2022-05-18 11:19:36 来源:中国专利 TAG:


1.本公开涉及软件工程领域,具体涉及一种工程文件与库引用关系的展示方法、装置、设备及介质。


背景技术:

2.在移动开发中,技术人员需要在工程文件中导入多个不同的组件或库以实现开发,而由于实际需要导入的组件或库数量庞大,技术人员在开发过程往往没有对工程文件中引用过的组件或者库进行统计,或者不同的技术人员在面对同一个系统开发时,无法明确其他的技术人员已导入的组件或库的类型。在上述情形下,技术人员可能会出现重复添导入相同的组件或库,或无法基于已导入的组件或库继续进行开发任务。这给整个系统开发过程带来了极大的不便,容易造成不必要的损失,降低了系统的开发效率。
3.公开内容
4.本公开提供一种工程文件与库引用关系的展示方法、装置、电子设备及计算机可读存储介质,以解决技术人员无法快速获取工程文件与库引用关系的技术问题。
5.本公开提供的一种工程文件与库引用关系的展示方法,包括:
6.预先构建多个预设数组和多个类别数组,每个所述预设数组包含多个相同类型的预设库,不同预设数组包含不同类型的预设库;
7.遍历工程文件,获得所述工程文件中所有子文件的引用头文件;
8.分别识别每个引用头文件对应的目标库;
9.以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,以得到所述工程文件与所有目标库的引用关系统计结果;
10.输出并展示所述引用关系统计结果。
11.可选地,所述预先构建多个预设数组和多个类别数组,每个所述预设数组包含多个相同类型的预设库,包括:
12.构建一个第一预设数组和至少一个第二预设数组,所述第一预设数组包含多个预设基本库,所述第二预设数组包含多个预设常用库;
13.构建至少一个第一类别数组和一个第二类别数组,所述第一类别数组用于存储所述引用头文件对应的常用库,所述第二类别数组用于存储所述引用头文件对应的非常用库;
14.每个所述第二预设数组包含的预设常用库的类型与每个所述第一类别数组存储的常用库的类型一一对应。
15.可选地,所述以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,包括:
16.分别判断每个目标库与所述第一预设数组包含的预设基本库的类型否相同;
17.若被判断的目标库与所述第一预设数组包含的预设基本库的类型相同,则忽略所
述目标库;
18.若被判断的目标库与所述第一预设数组包含的预设基本库的类型不相同,则分别判断所述目标库是否与每个所述第二预设数组包含的预设常用库的类型是否相同;
19.若被判断的目标库与其中一个所述第二预设数组包含的预设常用库的类型相同,则将所述目标库存储进用于存储相同类型常用库的所述第一类别数组中;
20.若被判断的目标库与所有所述第二预设数组包含的预设常用库的类型都不相同,则将所述库存储进所述第二类别数组中。
21.可选地,所述遍历工程文件,获得所述工程文件中所有子文件的引用头文件,包括:
22.遍历工程文件,获得所述工程文件的所有子文件;
23.分别判断每一个子文件是否为有效文件;
24.若所述子文件为有效文件,获得有效的所述子文件的行内容;
25.调用line.include函数解析出所述行内容包含的引用头文件。
26.可选地,所述遍历工程文件,获得所述工程文件的所有子文件,包括:
27.查找所述工程文件目录下的所有子文件,获得包含所有所述子文件的fillarr数组;
28.遍历所述fillarr数组,获得所述工程文件的所有所述子文件。
29.可选地,所述分别判断每一个子文件是否为有效文件,包括:
30.获得每一个子文件的文件名;
31.分别判断所述文件名是否包含.h、.m或.pch;
32.若所述文件名包含.h、.m或.pch,则所述文件名对应的子文件为有效文件,获得所述子文件。
33.可选地,所述分别识别每个引用头文件对应的目标库,包括
34.调用findp函数,分别判断每个引用头文件是否包含import;
35.若所述引用头文件包含import,则识别所述引用头文件对应的目标库;
36.若所述引用头文件不包含import,则忽略所述引用头文件。
37.本公开提供一种工程文件与库引用关系的展示装置,包括:
38.构建模块,用于预先构建多个预设数组和多个类别数组,每个所述预设数组包含多个相同类型的预设库,不同预设数组包含不同类型的预设库;
39.遍历获得模块,用于遍历工程文件,获得所述工程文件中所有子文件的引用头文件;
40.识别模块,用于分别识别每个引用头文件对应的目标库;
41.分类存储模块,用于以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,以得到所述工程文件与所有目标库的引用关系统计结果;
42.输出展示模块,用于输出并展示所述引用关系统计结果。
43.本公开还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任一项所述的工程文件与库引用关系的展示方法。
44.本公开还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任一项所述的工程文件与库引用关系的展示方法。
45.基于上述技术方案可知,本公开至少具有以下有益效果:
46.本公开提供了一种工程文件与库引用关系的展示方法,包括:预先构建多个预设数组和多个类别数组,所述预设数组包含多个相同类型的预设库,不同预设数组包含不同类型的预设库;遍历工程文件,获得所述工程文件中所有子文件的引用头文件;分别识别每个引用头文件对应的目标库;以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,以得到所述工程文件与所有目标库的引用关系统计结果;将所述引用关系统计结果输出至展示平台。通过预先构建包含不同类型预设库的预设数组,实现对工程文件引用的未知库进行分类存储,输出并展示工程文件对库的引用关系统计结果,使得技术人员无需在大量的工程文件中寻找目标库,而是通过展示结果快速获得工程文件与库的引用关系,并为技术人员在后期开发过程中提供了指导依据,避免出现重复导入相同的库,或丢失必要的库的问题,从而提高系统开发的便利性和减少开发工作量。
附图说明
47.为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
48.图1示意性地示出了根据本公开实施例的工程文件与库引用关系的展示方法的流程图;
49.图2示意性地示出了根据本公开实施例的工程文件与库引用关系的展示装置的框图;以及
50.图3示意性地示出了根据本公开实施例的电子设备的硬件结构图。
具体实施方式
51.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
52.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人上所理解的通常意义。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
53.参见图1,本公开提供了一种工程文件与库引用关系的展示方法,所述方法包括:
54.步骤s101,预先构建多个预设数组和多个类别数组,每个所述预设数组包含多个相同类型的预设库,不同预设数组包含不同类型的预设库;
55.步骤s102,遍历工程文件,获得所述工程文件中所有子文件的引用头文件;
56.步骤s103,分别识别每个引用头文件对应的目标库;
57.步骤s104,以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,以得到所述工程文件与
所有目标库的引用关系统计结果;
58.步骤s105,输出并展示所述引用关系统计结果。
59.示例性地,若在服务器中执行上述步骤s101-s105的操作,则服务器可以将分析得到的引用关系统计结果发送给客户端,以使用户在客户端上直观地看到展示的工程文件与库的引用关系统计结果,明确工程文件对库的引用情况。若在客户端中执行上述步骤s101-s105的操作,则客户端直接获得并展示引用关系统计结果,无需进行对引用关系统计结果的发送操作,从而进一步提高了用户获得引用关系统计结果的效率。再者,在客户端上执行上述步骤s101的操作,在服务器执行上述步骤s102-s104操作,最终在客户端上执行步骤s105的操作,用户在客户端上直接获取引用关系统计结果。以上只是为详细说明本公开的技术方案而列举的部分实施例,并不是本公开的技术方案的全部实施例,也并非限制本公开的技术方案。
60.在本实施例中,通过预先构建多个包含不同类型预设库的预设数组,对工程文件中所有引用的未知库进行分类统计,并输出展示所述统计结果,使得技术人员在系统的开发过程中,明确所述工程文件对各类库的实际引用情况,减少在后期开发过程中,因为重复引用库和丢失必要库而造成的开发问题,提高系统开发的效率。
61.作为一种可选实施例,步骤s101,预先构建多个预设数组和多个类别数组,每个所述预设数组包含多个相同类型的预设库,不同预设数组包含不同类型的预设库,至少包括:
62.步骤s111,构建一个第一预设数组和至少一个第二预设数组,所述第一预设数组包含多个预设基本库,所述第二预设数组包含多个预设常用库;
63.步骤s112,构建至少一个第一类别数组和一个第二类别数组,所述第一类别数组用于存储所述引用头文件对应的常用库,所述第二类别数组用于存储所述引用头文件对应的非常用库;
64.其中,每个所述第二预设数组包含的预设常用库的类型与每个所述第一类别数组存储的常用库的类型一一对应。
65.在本实施例中,构建的多个预设数组主要可分为两类,一类是一个包含有多个预设基本库的第一预设数组;另一类是多个分别包含不同类型的预设常用库的第二预设数组,每个第二预设数组中包含多个相同类型的预设库,不同的第二预设数组之间包含不同类型的预设常用库。所述预设基本库的类型主要是在系统开发过程中必须使用的库,此类库一般已经被作为默认基本库全部导入在工程文件中。在实际的开发过程中,技术人员无需重新将此类基本库导入工程文件中,而是直接调用此类基本库。所述预设常用库一般为常用的系统库,例如定位库、蓝牙库、多媒体库、聊天库和通讯录库等,将所述常用的系统库按照不同的类型分类存储,形成多个包含不同类型预设常用库的第二预设数组。
66.构建的多个类别数组也可分为两类,一类是多个用于存储不同类型常用库的第一类别数组,另一类是一个用于存储非常用库的第二类别数组。所述多个第一类别数组用于存储的常用库的类型与多个第二预设数组中包含的预设库的类型一一对应。在实际开发过程中,工程文件还会引用一类既不属于基本库类型也不属于常用库类型的非常用库,此类库将被分类存储在第二预设数组中。
67.通过构建包含有不同预设库的预设数组和用于存储不同类型未知库的类别数组,使得工程文件引用的每一类型未知库都可以对应地存储在不同的类别数组中。在后期的开
发过程中,技术人员可参照展示的引用关系统计结果,根据实际的需求在存储不同类型库的数组中查找所需的库,和确认所需的库是否已经导入工程文件中,以实现节约查找时间,提高开发效率的有益效果。
68.具体地,第一预设数组可以为nonarr数组,第二预设数组可以包括sysallarr数组、datasysallarr数组、mapsysallarr数组、messagesysallarr数组等,对应的第一类别数组可以包括sysarr数组、datasysarr数组、mapsysarr数组、messagesysarr数组等,第二类别数组可以为podarr数组。本领域的技术人员可以根据实际需求,构建不同类型和不同数量的预设数组和类别数组,本公开在此不做任何限制。
69.作为一种可选实施例,步骤s102,遍历工程文件,获得所述工程文件中所有子文件的引用头文件,至少包括以下步骤:
70.步骤s121,遍历工程文件,获得所述工程文件的所有子文件;
71.步骤s122,分别判断每一个子文件是否为有效文件;
72.步骤s123,若所述子文件为有效文件,获得有效的所述子文件的行内容;
73.步骤s124,调用line.include函数解析出所述行内容包含的引用头文件。
74.具体地,步骤s121,遍历工程文件,获得所述工程文件的所有子文件,至少包括以下步骤:
75.步骤s1211,查找所述工程文件目录下的所有子文件,获得包含所有所述子文件的fillarr数组;
76.步骤s1212,遍历所述fillarr数组,获得所述工程文件的所有所述子文件。
77.具体地,步骤s122,分别判断每一个子文件是否为有效文件,至少包括以下步骤:
78.步骤s1221,获得每一个子文件的文件名;
79.步骤s1222,分别判断所述文件名是否包含.h、.m或.pch;
80.步骤s1223,若所述文件名包含.h、.m或.pch,则所述文件名对应的子文件为有效文件。
81.在本实施例中,在遍历工程文件后获得的所有子文件数量较多,其中部分子文件并不是有效的。为提高后期分析引用关系的效率,通过findvalidfile函数筛选出有效的子文件,使得系统无需解析无效子文件的对应的头文件,避免系统执行无意义的工作任务,提高系统工作效率。
82.在获得有效文件之后,具体地,调用一个openfile函数打开有效文件,遍历获得每个有效文件的每一行内容。再调用line.include函数对每一行内容进行解析,获得所述行内容包含的引用头文件。具体地,使用line.include函数依次判断每一行内容是否包含”#import《”,如果包含”#import《”,则表示当前行包含有引用头文件,如果某一行的内容包含有“interface”或者是”implement”,则表示当前文件的当前行已不存在头文件,终止对当前文件行内容的判断。
83.作为一可选实施例,步骤s103,分别识别每个引用头文件对应的目标库,至少包括以下步骤:
84.步骤s131,调用iindp函数,分别判断每个引用头文件是否包含import,若所述引用头文件包含import,执行步骤s312,否则,执行步骤s313;
85.步骤s132,识别所述引用头文件对应的目标库;
86.步骤s133,忽略所述引用头文件。
87.在本实施例中,由于并不是每一个引用头文件都具有对应的库,因此在获得引用头文件后,还需要对引用头文件对应的库进行进一步地判断,筛选出具有对应库的引用头文件并获取其对应的库,随后再对所有的库进行分类。通过对引用头文件的判断,筛选出有效的对应的库,确保后续对所有库分类的准确性,提高对工程文件与库之间引用关系的统计效率。
88.作为一可选实施例,步骤s104,以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,至少包括以下步骤:
89.步骤s141,分别判断每个目标库与所述第一预设数组包含的预设基本库的类型否相同,若被判断的目标库与所述第一预设数组包含的预设基本库的类型相同,执行步骤s142,否则,执行步骤s143;
90.步骤s142,忽略所述目标库;
91.步骤s143,分别判断所述目标库是否与每个所述第二预设数组包含的预设常用库的类型是否相同,若被判断的目标库与其中一个所述第二预设数组包含的预设常用库的类型相同,执行步骤s144,否则,执行步骤s145;
92.步骤s144,将所述目标库存储进用于存储相同类型常用库的所述第一类别数组中;
93.步骤s145,将所述目标库存储进所述第二类别数组中。
94.在本实施例中,首先分别判断获得的每一个目标库是否与第一预设数组中的预设基本库的类型是否相同,可筛选出所有库中包含的常规基本库,进一步减少待分类的目标库的数量,提高对引用关系的统计效率。例如,调用isnoimport函数判断目标库是否属于预设基本库的类型,如果是,则忽略此类型的基本库;若所述目标库为非基本类型的库,再调用issysimport函数判断所述非基本类型的目标库是否属于sysallarr数组中包含的预设常用库的类型,如果是,就将当前的目标库存储到sysarr数组中,如果不是,则进一步调用其他函数判断所述非基本类型的目标库的具体类型。若经过与所有预设库的类型对比后,所述目标库既不属于预设基本库类型,也不属于预设常用库的类型,则将所述目标库存储到podarr数组中。最后可得到并展示对所有目标库的分类的统计情况,技术人员可根据展示出的统计结果清晰地了解工程文件对每个库的引用关系,避免重复导入相同的库,或是无法根据已导入的库进行开发工作。
95.参见图2,本公开提供了一种工程文件与库引用关系的展示装置200,包括:
96.构建模块201,用于预先构建多个预设数组和多个类别数组,每个所述预设数组包含多个相同类型的预设库,不同预设数组包含不同类型的预设库;
97.遍历获得模块202,用于遍历工程文件,获得所述工程文件中所有子文件的引用头文件;
98.识别模块203,用于分别识别每个引用头文件对应的目标库;
99.分类存储模块204,用于以所有所述预设数组包含的预设库的类型为依据,分别对每个目标库进行分类,并将每个目标库分别存储进其中一个所述类别数组中,以得到所述工程文件与所有目标库的引用关系统计结果;
100.输出展示模块205,用于输出并展示所述引用关系统计结果。
101.本实施例的展示装置构建多个包含不同类型预设库的预设数组,对工程文件中所有引用的未知库进行分类存储,使得技术人员在系统的开发过程中,并输出展示所述统计结果,使得技术人员在系统的开发过程中,明确所述工程文件对各类库的实际引用情况,减少在后期开发过程中,因为重复引用库和丢失必要库而造成的开发问题,提高系统开发的效率。
102.在本实施例中,所述构建装置201至少包括:
103.第一构建模块211,用于构建一个第一预设数组和至少一个第二预设数组,所述第一预设数组包含多个预设基本库,所述第二预设数组包含多个预设常用库;
104.第二构建模块212,用于构建至少一个第一类别数组和一个第二类别数组,所述第一类别数组用于存储所述引用头文件对应的常用库,所述第二类别数组用于存储所述引用头文件对应的非常用库。
105.其中,每个所述第二预设数组包含的预设常用库的类型与每个所述第一类别数组存储的常用库的类型一一对应。
106.在本实施例中,所述遍历获得模块202至少包括:
107.第一遍历获得模块221,用于遍历工程文件,获得所述工程文件的所有子文件;
108.第一判断模块222,用于分别判断每一个子文件是否为有效文件;
109.第一获得模块223,用于获得有效的所述子文件的行内容;
110.调用解析模块224,用于调用line.include函数解析出所述行内容包含的引用头文件。
111.具体的,所述第一遍历获得模块221至少包括:
112.查找获得模块2211,用于查找所述工程文件目录下的所有子文件,获得包含所有所述子文件的fillarr数组;
113.第二遍历获得模块2212,用于遍历所述fillarr数组,获得所述工程文件的所有所述子文件。
114.所述第一判断模块222至少包括:
115.第二获得模块2221,用于获得每一个子文件的文件名;
116.第二判断模块2222,用于分别判断所述文件名是否包含.h、.m或.pch;
117.在本实施例中,所述识别模块203至少包括:
118.调用判断模块231,用于调用findp函数,分别判断每个引用头文件是否包含import;
119.第一识别模块232,用于识别包含import的所述引用头文件对应的目标库;
120.第二忽略模块233,用于忽略不包含import的所述引用头文件。
121.在本实施例中,所述分类存储模块204至少包括:
122.第三判断模块241,用于分别判断每个目标库与所述第一预设数组包含的预设基本库的类型否相同;
123.忽略模块242,用于忽略与所述第一预设数组包含的预设基本库的类型相同的所述目标库;
124.第四判断模块243,用于分别判断与所述第一预设数组包含的预设基本库的类型
不相同的所述目标库是否与每个所述第二预设数组包含的预设常用库的类型是否相同;
125.第一存储模块244,用于将与其中一个所述第二预设数组包含的预设常用库的类型相同的所述目标库存储进用于存储相同类型常用库的所述第一类别数组中;
126.第二存储模块245,用于将与所有所述第二预设数组包含的预设常用库的类型都不相同的所述目标库存储进所述第二类别数组中。
127.请参见图3,图3示出了一种电子设备的硬件结构图。
128.本实施例中所描述的电子设备300,包括:
129.存储器301、处理器302及存储在存储器301上并可在处理器302上运行的计算机程序,处理器302执行该程序时实现前述图1所示实施例中描述的工程文件与库引用关系的展示方法。
130.进一步地,该电子设备还包括:
131.至少一个输入设备303;至少一个输出设备304。
132.上述存储器301、处理器302输入设备303和输出设备304通过总线305连接。
133.其中,输入设备303具体可为摄像头、触控面板、物理按键或者鼠标等等。输出设备304具体可为显示屏。
134.存储器301可以是高速随机存取记忆体(ram,random access memory)存储器,也可为非易失的存储器(non-volatile memory),例如磁盘存储器。存储器301用于存储一组可执行程序代码,处理器302与存储器301耦合。
135.进一步地,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子设备中,该计算机可读存储介质可以是前述图3所示实施例中的电子设备。该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述图1所示实施例中描述的工程文件与库引用关系的展示方法。进一步地,该计算机可存储介质还可以是u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
136.需要说明的是,在本公开各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
137.所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。
138.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本公开所必须的。
139.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
140.以上为对本公开所提供的一种工程文件与库引用关系的展示方法、装置、电子设
备及可读存储介质的描述,对于本领域的技术人员,依据本公开实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本公开的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献