一种版本应用的分析方法、装置、电子设备及存储介质与流程

未命名 09-29 阅读:117 评论:0


1.本发明涉及数据处理技术领域,尤其涉及一种版本应用的分析方法、装置、电子设备及存储介质。


背景技术:

2.软件应用常需要引入一些外部依赖,即开源代码和第三方库。由于开源这样的软件应用中容易存在的大量缺陷、甚至是安全漏洞,为软件带来巨大的安全风险。所以需要对软件应用进行开源分析,以确定软件所使用的外部依赖信息是否规避掉风险。
3.目前,对于没有被持续集成ci/持续部署cd的软件应用,用对接版本控制工具git/svn等代码仓库的方式进行外部依赖的连接,但是此种方式并没有办法明确软件的当前发布版本应用。因此会导致后续无法得知在生产系统运行的版本应用中是否存在安全风险,无法追踪软件针对开源风险的整改过程。


技术实现要素:

4.有鉴于此,本发明实施例提供一种版本应用的分析方法、装置、电子设备及存储介质,以解决现有技术中存在的无法追踪软件针对开源风险的整改过程的问题。
5.为实现上述目的,本发明实施例提供如下技术方案:
6.本发明实施例第一方面示出了一种版本应用的分析方法,所述方法包括:
7.接收上线成功的软件应用的版本基础信息;
8.基于所述版本基础信息获取所述软件应用的基线代码文件;
9.对所述基线代码文件进行分析,得到对应的分析结果;
10.基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。
11.可选的,所述对所述基线代码文件进行分析,得到对应的分析结果,包括:
12.对所述基线代码文件进行分析,确定构建所述软件应用的初始组件;
13.从所述基线代码文件中确定每一初始组件的调用信息;
14.基于所述每一初始组件的调用信息和所述初始组件构建依赖树;
15.基于所述初始组件,确定满足预设条件的目标组件;
16.基于所述依赖树对所述目标组件进行分析,得到分析结果。
17.可选的,所述基于所述每一初始组件的调用信息和所述初始组件构建依赖树,包括:
18.基于所述每一初始组件的调用信息,从所述初始组件中确定作为依赖树的根节点的第一组件,并标记;
19.基于所述每一初始组件的调用信息,从剩余的初始组件中确定与所述第一组件连接的第二组件,并标记;
20.若确定存在未被标记的所述初始组件,基于所述每一初始组件的调用信息,从未
被标记的初始组件中确定与所述标记的初始组件连接的第三组件;
21.若确定存在均被标记的所述初始组件,基于第一组件、第二组件和/或与所述标记的初始组件连接的初始组件构建依赖树。
22.可选的,还包括:
23.在接收上线成功的软件应用的版本基础信息之前,触发上线成功的软件应用的接收任务。
24.可选的,还包括:
25.若确定所述版本应用存在历史版本的标记,将所述版本号对应的开源资产清单与所述版本应用的历史述版本号对应的开源资产清单组合生成所述软件应用的开源组件列表。
26.本发明实施例第二方面示出了一种版本应用的分析装置,所述装置包括:
27.获取单元,用于接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;
28.处理单元,用于对所述基线代码文件进行分析,得到对应的分析结果;
29.生成单元,用于基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。
30.可选的,所述处理单元,包括第一分析子单元、构建子单元、确定子单元和第二分析子单元;
31.所述第一分析子单元,用于对所述基线代码文件进行分析,确定构建所述软件应用的初始组件;
32.所述构建子单元,用于从所述基线代码文件中确定每一初始组件的调用信息;基于所述每一初始组件的调用信息和所述初始组件构建依赖树;
33.所述确定子单元,用于基于所述初始组件,确定满足预设条件的目标组件;
34.所述第二分析子单元,用于基于所述依赖树对所述目标组件进行分析,得到分析结果。
35.可选的,还包括:
36.触发单元,用于在接收上线成功的软件应用的版本基础信息之前,触发上线成功的软件应用的接收任务。
37.本发明实施例第三方面示出了一种电子设备,所述电子设备用于运行程序,其中,所述程序运行时执行如本发明实施例第一方面示出的版本应用的分析方法。
38.本发明实施例第四方面示出了一种存储介质,所述存储介质包括存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行如本发明实施例第一方面示出的版本应用的分析方法。
39.基于上述本发明实施例提供的一种版本应用的分析方法、装置、电子设备及存储介质,所述方法包括:接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。在本发明实施例中,通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以
及软件应用的版本号组成分析结果,以生成对应的开源资产清单。通过上述方式得到的开源资产清单能够追踪软件针对开源风险的整改过程。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
41.图1为本发明实施例示出的一种版本应用的分析方法的流程示意图;
42.图2为本发明实施例示出的生成分析结果的流程示意图;
43.图3为本发明实施例示出的版本应用的分析架构示意图;
44.图4为本发明实施例示出的另一种版本应用的分析方法的流程示意图;
45.图5为本发明实施例示出的一种版本应用的分析装置的结构示意图;
46.图6为本发明实施例示出的处理单元的结构示意图;
47.图7为本发明实施例示出的另一种版本应用的分析装置的结构示意图;
48.图8为本发明实施例示出的一种电子设备的结构示意图。
具体实施方式
49.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
50.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
51.需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
52.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过
程、方法、物品或者设备中还存在另外的相同要素。
53.本发明的方案适用于民航内部软件或系统的事后的开源管理,通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以及软件应用的版本号组成分析结果,以生成对应的开源资产清单。本发明是在发布版本与测试版本不防控生产系统中的潜在开源漏洞风险,尤一致的情况下,掌握更真实的开源资产清单,为后续跟踪有开源组件漏洞的软件的整改提供便利。
54.软件线上版本:软件每次迭代经测试后发布到生产系统运行的版本。
55.pom文件:java开发的使用maven进行包管理的软件,对引用的外部依赖组件进行管理的文件。
56.开源分析:一个软件会依赖一个或多个开源组件,分析出软件所依赖的组件即为开源分析。
57.het:中国航信高效需求评估系统,是完成中国航信软件需求提交、分配、评估、复合等功能的系统。
58.参见图1,为本发明实施例示出的一种版本应用的分析方法的流程示意图,所述方法包括:
59.步骤101:接收上线成功的软件应用的版本基础信息。
60.在具体实现步骤s101的过程中,服务器调用het的het接口将上线成功的软件应用的发布信息接入适配器adapter,即接收版本基础信息至服务器的数据库。
61.需要说明的是,版本基础信息包括软件名、上线时间、上线状态、及发布版本号等软件发布的相关信息。
62.可选的,还包括:
63.标记所述所述软件应用的版本。
64.在具体实现中,对需要进行分析的软件应用的版本进行标记,将其标记为“历史版本”,以防重复分析。
65.步骤s102:基于所述版本基础信息获取所述软件应用的基线代码文件。
66.在具体实现步骤s102的过程中,服务器调用代码仓库git的git接口请求与版本基础信息中版本号对应的基线代码文件接入适配器adapter,即服务器的数据库中。
67.需要说明的是,基线代码文件为pom文件。
68.可选的,在得到基线代码文件后,将其保存至数据库,并保存所述基础信息和基线代码文件的关联关系。
69.步骤s103:对所述基线代码文件进行分析,得到对应的分析结果。
70.需要说明的是,具体实现步骤s103对所述基线代码文件进行分析,得到对应的分析结果的过程,如图2所示,包括以下步骤:
71.步骤s201:对所述基线代码文件进行分析,确定构建所述软件应用的初始组件。
72.需要说明的是,初始组件的数量为多个。
73.在具体实现步骤s201的过程中,服务器遍历所述版本应用的基线代码文件,查找对应的组件id,以确定构建所述软件应用的初始组件。
74.组件id包括groupid和artifactid。
75.步骤s202:从所述基线代码文件中确定每一初始组件的调用信息。
76.在具体实现步骤s202的过程中,服务器遍历所述基线代码文件中每一初始组件所对应的代码,查找每一初始组件的调用代码,并对所述调用代码进行识别转换,输出可用文字表达的初始组件之间的调用关系,即调用信息。
77.步骤s203:基于所述每一初始组件的调用信息和所述初始组件构建依赖树。
78.具体实现步骤s203基于所述每一初始组件的调用信息和所述初始组件构建依赖树的过程中,包括以下步骤:
79.步骤s11:基于所述每一初始组件的调用信息,从所述初始组件中确定作为依赖树的根节点的第一组件,并标记。
80.需要说明的是,第一组件是指作为根节点的初始组件。
81.在具体实现步骤s11的过程中,服务器通过每一初始组件的调用信息中初始组件之间的调用关系,确定不存在被调用的初始组件,将该组件作为依赖树的根节点,并对第一组件进行标记。
82.步骤s12:基于所述每一初始组件的调用信息,从剩余的初始组件中确定与所述第一组件连接的第二组件,并标记。
83.需要说明的是,第二组件是第一组件的子节点,此时剩余的初始组件是指除去第一组件外的其他初始组件。
84.在具体实现步骤s12的过程中,服务器遍历剩余的初始组件与第一组件之间的调用关系,查找被第一组件调用的初始组件,即第二组件,将其作为第一组件的子节点。
85.并对第二组件进行标记。
86.需要说明的是,第二组件的数量至少为一个。
87.步骤s13:判断当前是否存在未被标记的所述初始组件,若存在,则执行步骤s14,若均不存在被标记的所述初始组件,则执行步骤s15。
88.在具体实现步骤s13的过程中,由于初始组件的数量大于等于2,因此需要在确定第二组件之后,服务器判定是否还存在未被标记的所述初始组件,若存在,则执行步骤s14,若均不存在被标记的所述初始组件,则执行步骤s15。
89.步骤s14:基于所述每一初始组件的调用信息,从未被标记的初始组件中确定与所述标记的初始组件连接的第三组件,并标记,并返回执行步骤s13。
90.步骤s15:基于第一组件、第二组件和/或与所述标记的初始组件连接的初始组件构建依赖树。
91.在具体实现步骤s13至步骤s15的过程中,由于初始组件的数量大于等于2,因此需要在确定第二组件之后,服务器需要判定是否还存在未被标记的所述初始组件,若确定当前还存在未被标记的所述初始组件,此时将第一组件和第二组件连接生成依赖树;若存在,遍历剩余的初始组件与第二组件之间的调用关系;针对每一第二组件,查找被第二组件调用的初始组件1,将其作为第二组件的子节点,并进行标记,也就是说,第二组件与所述初始组件1连接,此时被第二组件调用的初始组件1称为第三组件。接着返回执行步骤s13,若确定当前还存在未被标记的所述初始组件,针对每一未被标记的初始组件,从未被标记的初始组件中确定被上述初始组件1调用的初始组件,将其作为上述初始组件1的子节点,也就是说,所述初始组件1与连接,此时被上述初始组件1调用的初始组件也称为第三组件,并标
记。直至初始组件均被标记,此时将第一组件、第二组件和第三组件连接,生成依赖树。
92.需要说明的是,若第三组件的数量为多个,则第三组件之间也存在连接关系。
93.步骤s204:基于所述初始组件,确定满足预设条件的目标组件。
94.在步骤s204的过程中,服务器从初始组件中查找开源组件列表中id相同的初始组件,将其作为目标组件。
95.步骤s205:基于所述依赖树对所述目标组件进行分析,得到分析结果。
96.分析结果至少包括直接依赖信息和间接依赖信息。
97.在具体实现步骤s205的过程中,服务器利用文本识别技术解析依赖树,即依赖树中组件的信息,确定目标组件在依赖树中的位置,若存在直接连接的目标组件,生成这两个目标组件之间的直接依赖信息;若存在间接连接的目标组件,生成这两个目标组件之间的间接依赖信息;
98.直接依赖信息具体包括两个目标组件的组件信息groupid和artifactid、软件应用名称及版本号。
99.间接依赖信息具体包括两个目标组件的组件信息groupid和artifactid、及版本号。
100.步骤s104:基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。
101.在具体实现步骤s104的过程中,将所述分析结果,目标组件的名称,以及版本应用的软件名称生成与所述软件应用的版本号对应的开源资产清单。
102.相应的,基于上述本发明实施例示出的版本应用的分析方法,本发明具体实现上述步骤s101至步骤s104的具体实现过程还可通过版本应用的分析架构示意图来体现,如图3所示。
103.在本发明实施例中,接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。在本发明通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以及软件应用的版本号组成分析结果,以生成对应的开源资产清单。通过上述方式得到的开源资产清单能够追踪软件针对开源风险的整改过程。
104.基于上述本发明实施例示出的版本应用分析方法,本发明实施例还示出另一种版本应用分析方法的流程示意图,如图4所示,所述方法包括:
105.步骤s401:触发上线成功的软件应用的接收任务。
106.在具体实现步骤s401的过程中,用户触发上线成功的软件应用的接收任务,或者是技术人员预先设置启动时间,在启动时间时触发上线成功的软件应用的接收任务。
107.步骤s402:基于所述版本基础信息获取与所述软件应用相关的基线代码文件。
108.在具体实现步骤s402的过程中,从git中拉取的各软件发布版本基线中的pom文件,即基线代码文件。
109.步骤s403:对所述基线代码文件进行分析,得到对应的分析结果。
110.需要说明的是,具体实现步骤s403的过程与上述步骤s103的具体实现过程相同,
可相互参见。
111.步骤s404:基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。
112.步骤s405:确定所述版本应用是否存在历史版本的标记,若存在,则执行步骤s406,若确定所述版本应用不存在历史版本的标记,则直接输出所述版本号对应的开源资产清单。
113.在具体实现步骤s405的过程中,判断所有标记的历史版本中是否存在与所述版本号相同的版本号,若存在,确定所述版本应用存在历史版本,则执行步骤s405,若不存在,确定所述版本应用不存在历史版本,则直接输出所述版本号对应的开源资产清单。
114.步骤s406:将所述版本号对应的开源资产清单与所述版本应用的历史述版本号对应的开源资产清单组合生成所述软件应用的开源组件列表。
115.在具体实现步骤s406的过程中,将软件名称相同的所述版本号对应的开源资产清单以及历史述版本号对应的开源资产清单组合生成所述软件应用的开源组件列表,以便后续用户可根据软件名称查询应用软件各个版本所使用的开源组件的开源资产清单。
116.可选的,若确定所述版本应用存在历史版本的标记,确定存在所述软件应用的开源组件列表,则基于当前所述版本号对应的开源资产清单更新所述开源组件列表。
117.在本发明实施例中,触发上线成功的软件应用的接收任务;接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。在本发明实施例中,通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以及软件应用的版本号组成分析结果,以生成对应的开源资产清单。若确定所述版本应用存在历史版本,将所述版本号对应的开源资产清单与所述版本应用的历史述版本号对应的开源资产清单组合生成所述软件应用的开源组件列表。通过上述方式得到的开源资产清单能够追踪软件针对开源风险的整改过程。
118.基于上述本发明实施例示出的版本应用的分析方法,相应的,本发明实施例还对应公开一种版本应用的分析装置,如图5所示,所述装置包括:
119.获取单元501,用于接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;
120.处理单元502,用于对所述基线代码文件进行分析,得到对应的分析结果;
121.生成单元503,用于基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。
122.上述本发明实施例公开的版本应用的分析装置中各个单元具体的原理和执行过程,与上述本发明实施例示出的版本应用的分析方法相同,可参见上述本发明实施例示出的版本应用的分析方法中相应的部分,这里不再进行赘述。
123.在本发明实施例中,接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清
单,以便后续用户查询。在本发明通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以及软件应用的版本号组成分析结果,以生成对应的开源资产清单。通过上述方式得到的开源资产清单能够追踪软件针对开源风险的整改过程。
124.可选的,基于上述本发明实施例示出的版本应用的分析装置,所述处理单元502的具体结构如图6所示,所述处理单元502,包括第一分析子单元5021、构建子单元5022、确定子单元5023和第二分析子单元5024;
125.所述第一分析子单元5021,用于对所述基线代码文件进行分析,确定构建所述软件应用的初始组件;
126.所述构建子单元5022,用于从所述基线代码文件中确定每一初始组件的调用信息;基于所述每一初始组件的调用信息和所述初始组件构建依赖树;
127.所述确定子单元5023,用于基于所述初始组件,确定满足预设条件的目标组件;
128.所述第二分析子单元5024,用于基于所述依赖树对所述目标组件进行分析,得到分析结果。
129.在本发明实施例中,对所述基线代码文件进行分析,确定构建所述软件应用的初始组件;从所述基线代码文件中确定每一初始组件的调用信息;基于所述每一初始组件的调用信息和所述初始组件构建依赖树;基于所述初始组件,确定满足预设条件的目标组件;基于所述依赖树对所述目标组件进行分析,得到分析结果,进而生成对应的开源资产清单。通过上述方式得到的开源资产清单能够追踪软件针对开源风险的整改过程。
130.可选的,基于上述本发明实施例示出的版本应用的分析装置,所述基于所述每一初始组件的调用信息和所述初始组件构建依赖树的所述构建子单元5022,具体用于:
131.基于所述每一初始组件的调用信息,从所述初始组件中确定作为依赖树的根节点的第一组件,并标记;
132.基于所述每一初始组件的调用信息,从剩余的初始组件中确定与所述第一组件连接的第二组件,并标记;
133.若确定存在未被标记的所述初始组件,基于所述每一初始组件的调用信息,从未被标记的初始组件中确定与所述标记的初始组件连接的第三组件;
134.若确定存在均被标记的所述初始组件,基于第一组件、第二组件和/或与所述标记的初始组件连接的初始组件构建依赖树。
135.可选的,基于上述本发明实施例示出的版本应用的分析装置,结合图5,参见图7,所述版本应用的分析装置,还包括:
136.触发单元701,用于在接收上线成功的软件应用的版本基础信息之前,触发上线成功的软件应用的接收任务。
137.在本发明实施例中,接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。在本发明通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以及软件应用的版本号组成分析结果,以生成对应的开源资产清单。通过上述方式得到的
开源资产清单能够追踪软件针对开源风险的整改过程。
138.可选的,基于上述本发明实施例示出的版本应用的分析装置,所述生成单元503,还用于:若确定所述版本应用存在历史版本的标记,将所述版本号对应的开源资产清单与所述版本应用的历史述版本号对应的开源资产清单组合生成所述软件应用的开源组件列表。
139.本技术实施例还提供一种电子设备,该电子设备包括:处理器以及存储器,所述处理器以及存储器通过通信总线相连;其中,所述处理器,用于调用并执行所述存储器中存储的程序;所述存储器,用于存储程序,该程序用于实现版本应用的分析方法。
140.下面参考图8,其示出了适于用来实现本发明公开实施例的电子设备的结构示意图。本发明公开实施例中的电子设备可以包括但不限于诸如数字tv、台式计算机等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本发明公开实施例的功能和使用范围带来任何限制。
141.如图8所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(rom)802中的程序或者从存储装置808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。在ram 803中,还存储有电子设备操作所需的各种程序和数据。处理装置801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
142.通常,以下装置可以连接至i/o接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
143.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的数据存储方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从rom802被安装。在该计算机程序被处理装置801执行时,执行本发明公开实施例的版本应用的分析方法中限定的上述功能。
144.更进一步的,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行版本应用的分析方法。
145.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。
146.在本发明公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机
器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
147.需要说明的是,本发明公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
148.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
149.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种版本应用的分析方法,其特征在于,所述方法包括:接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。2.根据权利要求1所述的方法,其特征在于,所述对所述基线代码文件进行分析,得到对应的分析结果,包括:对所述基线代码文件进行分析,确定构建所述软件应用的初始组件;从所述基线代码文件中确定每一初始组件的调用信息;基于所述每一初始组件的调用信息和所述初始组件构建依赖树;基于所述初始组件,确定满足预设条件的目标组件;基于所述依赖树对所述目标组件进行分析,得到分析结果。3.根据权利要求2所述方法,其特征在于,所述基于所述每一初始组件的调用信息和所述初始组件构建依赖树,包括:基于所述每一初始组件的调用信息,从所述初始组件中确定作为依赖树的根节点的第一组件,并标记;基于所述每一初始组件的调用信息,从剩余的初始组件中确定与所述第一组件连接的第二组件,并标记;若确定存在未被标记的所述初始组件,基于所述每一初始组件的调用信息,从未被标记的初始组件中确定与所述标记的初始组件连接的第三组件;若确定存在均被标记的所述初始组件,基于第一组件、第二组件和/或与所述标记的初始组件连接的初始组件构建依赖树。4.根据权利要求1所述的方法,其特征在于,还包括:在接收上线成功的软件应用的版本基础信息之前,触发上线成功的软件应用的接收任务。5.根据权利要求1所述的方法,其特征在于,还包括:若确定所述版本应用存在历史版本的标记,将所述版本号对应的开源资产清单与所述版本应用的历史述版本号对应的开源资产清单组合生成所述软件应用的开源组件列表。6.一种版本应用的分析装置,其特征在于,所述装置包括:获取单元,用于接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;处理单元,用于对所述基线代码文件进行分析,得到对应的分析结果;生成单元,用于基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。7.根据权利要求6所述的装置,其特征在于,所述处理单元,包括第一分析子单元、构建子单元、确定子单元和第二分析子单元;所述第一分析子单元,用于对所述基线代码文件进行分析,确定构建所述软件应用的初始组件;
所述构建子单元,用于从所述基线代码文件中确定每一初始组件的调用信息;基于所述每一初始组件的调用信息和所述初始组件构建依赖树;所述确定子单元,用于基于所述初始组件,确定满足预设条件的目标组件;所述第二分析子单元,用于基于所述依赖树对所述目标组件进行分析,得到分析结果。8.根据权利要求6所述的装置,其特征在于,还包括:触发单元,用于在接收上线成功的软件应用的版本基础信息之前,触发上线成功的软件应用的接收任务。9.一种电子设备,其特征在于,所述电子设备用于运行程序,其中,所述程序运行时执行如权利要求1-5中任一所述的版本应用的分析方法。10.一种存储介质,其特征在于,所述存储介质包括存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-5中任一所述的版本应用的分析方法。

技术总结
本发明提供一种版本应用的分析方法、装置、电子设备及存储介质,所述方法包括:接收上线成功的软件应用的版本基础信息;基于所述版本基础信息获取所述软件应用的基线代码文件;对所述基线代码文件进行分析,得到对应的分析结果;基于所述分析结果、目标组件的名称、以及版本应用的软件名称生成开源资产清单,以便后续用户查询。在本发明通过对软件应用的版本号所对应的基线代码文件进行分析处理,以生成由初始组件构建的依赖树;进而确定由目标组件、目标组件之间的分析结果以及软件应用的版本号组成分析结果,以生成对应的开源资产清单。通过上述方式得到的开源资产清单能够追踪软件针对开源风险的整改过程。件针对开源风险的整改过程。件针对开源风险的整改过程。


技术研发人员:高健媛 钟智英 于达
受保护的技术使用者:中国民航信息网络股份有限公司
技术研发日:2023.01.10
技术公布日:2023/9/25
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐