CN115543406A - 一种软件的物料清单生成方法、装置及电子设备 - Google Patents
一种软件的物料清单生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115543406A CN115543406A CN202211222995.7A CN202211222995A CN115543406A CN 115543406 A CN115543406 A CN 115543406A CN 202211222995 A CN202211222995 A CN 202211222995A CN 115543406 A CN115543406 A CN 115543406A
- Authority
- CN
- China
- Prior art keywords
- information
- source code
- packet
- file
- code packet
- 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为本申请一实施例提供的软件的物料清单生成方法的流程示意图,如图1所示,本实施例的软件的物料清单生成方法,可以包括:
S101、确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息。
源码可为当前软件的源码即未被编译的代码。通过对源码包进行编译能够得到具有相应功能的模块。
本实施例的当前软件可为操作系统软件,也可为用于安装在操作系统上的应用软件。
为了便于说明,本实施例的当前软件以操作系统软件为例进行说明。操作系统软件的各源码包可包括内核源码包、应用源码包、图形显示源码包等等;对操作系统软件的各源码包进行编译,可得到相应的可执行文件和/或数据库。
在每个源码包中包括至少一个文件。
对于操作系统软件而言,在一些例子中,源码包中的文件可为arena.c、dynarray.h、crypt.c、crypt.h等等。
通过对源码包进行编译能够得到可执行文件或数据库。
对于每个源码包中的每个文件生成文件信息可以包括源文件的文件信息,也可以包括通过编译该源文件得到的编译结果如可执行文件、库文件或文件夹的信息。
文件信息包括文件名称、文件内容的MD5、文件所属版权、文件符合的协议和/或文件许可证书。其中的文件内容的MD5为一种散列函数,用于对文件内容进行完整性保护。将文件内容作为输入,使用hash算法,计算得到一固定长度的信息,该信息即为文件内容的MD5。
包信息包括包名称、包内容的MD5、包所属版权、包符合的协议和/或包许可证书。其中的包内容的MD5为一种散列函数,用于对包内容进行完整性保护。
在一些例子中,每个源码包的包信息可以包括包名称、包内容的MD5、包所属版权、包符合的协议和/或包许可证书,基于该源码包中的各文件的文件信息可以确定包内容的MD5。
可以通过各文件,确定包内容的MD5,具体地,可将各个文件作为一个大的文件作为输入,使用hash算法,计算得到一固定长度的信息,该信息即为包内容的MD5。
S102、建立每个源码包的包信息与该源码包中各文件的文件信息之间的第一隶属关系。
如源码包1中包括文件1、文件2和文件3,则建立源码包1的包信息1与文件1的文件信息1、文件2的文件信息2和文件3的文件信息3的隶属关系,即文件信息1、文件信息2和文件信息3隶属于包信息1。
其它源码包的包信息与其中的文件信息的隶属关系的确定与上述隶属关系确定过程相同。
S103、基于至少一个源码包的包信息,建立至少一上级物料的物料信息。
本实施例中的至少一上级物料的物料信息可为源码包上一级物料的物料信息,其中物料指构成软件物料清单的元素,在一些例子中,源码包上一级物料包括功能级物料、模块级物料和/或系统级物料。
物料信息可为对物料的描述信息。
S104、基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,生成软件的物料清单。
可以将各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,写入如Excel的文件中,形成物料清单。还可以将各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,制作图形用户界面,并且能将信息展开或收缩。
本实施例,通过确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息,建立每个源码包的包信息与该源码包中各文件的文件信息之间的第一隶属关系,基于至少一个源码包的包信息,建立至少一上级物料的物料信息,基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,生成软件的物料清单,这样,能够自动生成软件物料清单,有效提高软件物料清单的生成效率,避免了现有技术中手动填充软件物料清单的相关信息导致软件物料清单生成效率低的问题,此外,本实施例,从源码包中的文件到源码包再到至少一上级获取信息,逐层递进、正向生成软件的物料清单,生成的信息准确、完整、充分。
在一些例子中,当前软件包括第一源码包和第二源码包;为了节省计算资源,本实施例中的确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息(S101),包括:
S101a、基于对当前软件中的第一源码包的编译操作,遍历第一源码包的各文件,确定第一源码包的各文件的文件信息。
通过对第一源码包的编译,能够生成计算机可以识别的二进制文件。
在对第一源码包的编译操作过程中,会遍历第一源码包中的各文件,对各个文件进行编译。本实施例中,确定第一源码包的各文件的文件信息是在对第一源码包编译的过程中,遍历每个文件的过程中,确定第一源码包中各文件的文件信息,即第一源码包中各文件的文件信息的确定,是跟随对第一源码包的编译操作同时进行的,这样,能够节省计算资源。
源码编译时编译脚本及makefile会进入各源码包(工具)的根目录,然后递归进入其子目录,将最底层的每一个文件包含进来,开始编译。
在对当前软件进行编译时,使用编译脚本进入各源码包,再使用makefile文件进入源码包的根目录,从而对根目录下的各文件进行编译。一个工程、应用软件或操作系统软件包括的源文件很多,其按类型、功能、模块可以分别放在若干个目录中,而makefile文件中定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,还可以进行更复杂的功能操作。
在一些例子中,跟随第一源码包进行编译时所使用的makefile文件,进入当前软件的第一源码包的根目录,遍历第一源码包的根目录下的各文件,进一步地,可以确定第一源码包中各文件的文件信息,在一些例子中,还可以将各文件的文件信息添加到数据库中。
S101b、确定第一源码包的包信息。
在一些例子中,将包信息添加到数据库的包信息表中。
S101c、基于对当前软件中的第二源码包的编译操作,遍历第二源码包的各文件,确定第二源码包的各文件的文件信息。
在对第一源码包进行编译操作后,跟随makefile文件依次遍历其它包或工具的目录和文件,本实施例中,基于对当前软件中的第二源码包的编译操作,遍历第二源码包的各文件,确定第二源码包的各文件的文件信息的过程,与确定第一源码包的各文件的文件信息的过程相同,在此不再赘述。
在一些例子中,确定的第二源码包的各文件的文件信息与第一源码包的各文件的文件信息添加到数据库中。
S101d、确定第二源码包的包信息。
在编译完第二源码包中各个文件后,回到最底层文件的上一级目录,针对此目录生成包信息,在一些例子中,将包信息添加到数据库的包信息表中。
为了便于生成信息较为完整的软件物料清单,在一些例子中,遍历第一源码包的各文件,确定第一源码包的各文件的文件信息,包括:
A1、遍历第一源码包中的各文件,确定第一源码包中的第一文件的初始文件信息。
本实施例的第一文件可为第一源码包中的一个文件。
在一些例子中,初始文件信息可包括文件名称、文件内容的MD5、文件所属版权、文件符合的协议和/或文件许可证书。
A2、判断第一文件的初始文件信息是否缺少第一预设信息。
在一些例子中,第一预设信息可包括文件名称、文件所属版权、文件符合的协议和/或文件许可证书。
举例而言,如果第一文件的初始文件信息中包括文件名称、文件内容的MD5和文件所属版权,而要求第一文件的文件信息包括文件名称、文件内容的MD5、文件所属版权和文件符合的协议,那么则确定第一源码包中的第一文件的初始文件信息中缺少文件符合的协议。
A3、如果缺少第一预设信息,则从第一源码包中获取第一预设信息。
在第一源码包中的第一文件的初始文件信息缺少第一预设信息的情况下,则从第一源码包中获取第一预设信息,可以理解的是,在第一源码包中包括第一预设信息。
通常,在第一源码包中包括的多个文件中,有部分文件中包括了第一预设信息,而其它文件未包括第一预设信息,在第一源码包中包括了这些文件依据的第一预设信息,因此,如果文件中缺少第一预设信息,则可以从第一源码包中获取第一预设信息。
A4、将第一预设信息添加到第一文件的初始文件信息的对应位置,生成第一文件的文件信息。
在从第一源码包中获取第一预设信息之后,可将第一预设信息添加到第一文件的初始文件信息的对应位置,从而,生成第一文件的文件信息。
A5、如果不缺少第一预设信息,则将第一文件的初始文件信息确定为第一文件的文件信息。
本实施例,遍历第一源码包中的各文件,确定第一源码包中的第一文件的初始文件信息,判断第一文件的初始文件信息是否缺少第一预设信息,如果缺少所述第一预设信息,则从第一源码包中获取第一预设信息,将第一预设信息添加到第一文件的初始文件信息的对应位置,生成第一文件的文件信息,如果不缺少第一预设信息,说明所述第一文件的初始文件信息即为完整的第一文件的文件信息,这样,能够得到较为完整的第一文件的文件信息,进一步地,便于得到信息较为完整的软件物料清单。
如果不缺少第一预设信息,则将第一文件的初始文件信息确定为第一文件的文件信息。
在一些例子中,确定第一源码包的包信息(S101b),包括:
B1、基于对当前软件中的第一源码包的编译操作,确定第一源码包的包信息。
本实施例中,在编译完第一源码包中各个文件后,编译过程回到最底层文件的上一级目录,针对此目录生成第一源码包的包信息。
在一些例子中,确定第一源码包的包信息(B1),包括:
B11、从第一源码包中提取第一源码包的包信息。
从第一源码包中提取的第一源码包的包名称、包所属版权、包符合的协议和/或包许可证书等信息作为包信息。
B12、根据第一源码包中的各文件,确定第一源码包的包信息。
根据第一源码包中的各文件,确定第一源码包的MD5。
为了便于生成信息较为完整的软件物料清单,在一些例子中,在一些例子中,从第一源码包中提取第一源码包的包信息(B11),包括:
B11a、从第一源码包中提取第一源码包的初始包信息。
从第一源码包中提取第一源码包的初始包信息包括包名称、包所属版权、包符合的协议和/或包许可证书。
B11b、判断第一源码包的初始包信息是否缺少第二预设信息。
在一些例子中,第二预设信息可以包括包名称、包所属版权、包符合的协议和/或包许可证书。
举例而言,如果第一源码包的初始包信息中包括包名称和包所属版权,而要求第一源码包的包信息包括包名称、包所属版权和包符合的协议,那么则确定第一源码包的初始包信息中缺少包符合的协议。
B11c、如果缺少第二预设信息,则根据预设方式,获取第二预设信息。
本实施例中的预设方式可为从下载地址中下载第一预设信息。
在一些例子中,根据源码包与下载地址的对应关系,确定第一源码包的下载地址。
在第一源码包的初始包信息缺少第二预设信息的情况下,根据源码包与下载地址的对应关系,确定第一源码包的下载地址。其中,第一源码包的下载地址即为第一源码包从该下载地址下载得到的。
根据第一源码包的下载地址,获取第二预设信息。
B11d、将第二预设信息添加到第一源码包的初始包信息的对应位置,生成第一源码包的包信息。
在获取第二预设信息之后,可以将第二预设信息添加到第一源码包的初始包信息的对应位置,形成第一源码包的包信息。
B11e、如果不缺少第二预设信息,则将第一源码包的初始包信息确定为第一源码包的包信息。
本实施例,通过从第一源码包中提取所述第一源码包的初始包信息,判断第一源码包的初始包信息是否缺少第二预设信息,如果缺少第二预设信息,则根据预设方式,获取第二预设信息,将第二预设信息添加到第一源码包的初始包信息的对应位置,生成第一源码包的包信息,如果不缺少第二预设信息,则将第一源码包的初始包信息确定为第一源码包的包信息,这样,在第一源码包的初始包信息不完整的情况下,可根据预设方式获取所述第二预设信息,从而得到较为完整的第一源码包的包信息,如果不缺少所述第二预设信息,则说明第一源码包的初始包信息即为较为完整的信息,这样,便于得到信息较为完整的软件物料清单。
为了便于生成信息较为完整的软件物料清单,在一些例子中,当前软件包括第一源码包和第二源码包;第一源码包的包信息还包括第一源码包依赖于第二源码包的依赖关系;第一依赖关系根据如下步骤确定:
C1、基于对第一源码包的编译操作,确定第一源码包依赖于第二源码包。
在一些例子中,在当前软件中的第一源码包的编译操作时,可以确定第一源码包中包括第二源码包,即第一源码包依赖于第二源码包。
C2、建立第一源码包与第二源码包的依赖关系。
在确定第一源码包依赖于第二源码包之后,建立第一源码包与第二源码包的依赖关系。
当前软件的源文件很多可以按功能、模块和系统逐级进行划分,对于当前软件包括文件、源码包以及功能等层级建立软件的物料清单的情况下,为了使软件的物料清单信息完整,在一些例子中,基于至少一个源码包的包信息,建立至少一上级物料的物料信息,包括:
D1、确定各源码包的功能类别。
对应操作系统软件中的各源码包的功能类别可分为办公类、游戏类和网页浏览类等等类别。
对于安装于操作系统的应用软件中的各源码包,可以按照该应用软件的具体功能确定各个源码包的功能类别。
D2、基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系。
可以将属于同一类别的源码包的包信息,生成该功能类别相对一个的功能级物料的功能信息,其中功能信息可为对功能级物料的描述信息,例如功能信息中可以包括功能级物料的名称、功能级物料内容的MD5、功能级物料所属版权、功能级物料符合的协议、和/或功能级物料许可证书。
将属于同一功能类别的源码包的包信息与该功能类别的功能信息建立第二隶属关系,即同一功能类别的源码包的包信息属于该功能类别的功能信息。
本实施例中,基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,生成软件的物料清单(S104),可以包括:
S104a、基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及各功能级物料的功能信息和第二隶属关系,生成软件的物料清单。
本实施例,由于基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息和第二隶属关系,生成软件的物料清单,这样,软件的物料清单中不但包括了各文件的文件信息、各源码包的包信息、第一隶属关系,还包括各功能级物料的功能信息,以及功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系,这样,对于当前软件生成的软件物理清单信息更加完整。
对于当前软件包括文件、源码包、功能以及模块等层级建立软件的物料清单的情况下,为了使软件的物料清单信息完整,在一些例子中,基于至少一个源码包的包信息,建立至少一上级物料的物料信息,可以包括:
E1、确定各源码包的功能类别。
本步骤与上述实施例D1的技术特征相同,具体可参见D1中的论述。
E2、基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系。
本步骤与上述实施例D2的技术特征相同,具体可参见D2中的论述。
E3、将至少两个功能级物料聚合为一模块级物料。
在一些例子中,当前软件为操作系统,在操作系统下可将功能级物料按照用途将至少两个功能级物料聚合为一模块级物料。
E4、生成各模块级物料的模块信息,并建立模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系。
模块信息为对模块级物料进行描述的信息。
将一模块级物料的模块信息与属于同一模块级物料的各功能级物料的功能信息建立为第三隶属关系。
本实施例中,基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成软件的物料清单(S104),可以包括:
S104b、基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及各功能级物料的功能信息、第二隶属关系、模块级物料的模块信息和第三隶属关系,生成软件的物料清单。
本实施例,由于基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成软件的物料清单,这样,软件的物料清单中不但包括了各文件的文件信息、各源码包的包信息、第一隶属关系,还包括各功能级物料的功能信息,以及功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系、以及模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系,这样,对于当前软件生成的软件物理清单信息更加完整。
对于当前软件包括文件、源码包、功能、模块以及系统等层级建立软件的物料清单的情况下,为了使软件的物料清单信息完整,在一些例子中,基于至少一个源码包的包信息,建立至少一上级物料的物料信息,可以包括:
F1、确定各源码包的功能类别。
本步骤与上述实施例D1或E1的技术特征相同,具体可参见D1或E1中的论述。
F2、基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系。
本步骤与上述实施例D2或E2的技术特征相同,具体可参见D2或E2中的论述。
F3、将至少两个功能级物料聚合为一模块级物料。
本步骤与上述实施例E3的技术特征相同,具体可参见E3中的论述。
F4、生成各模块级物料的模块信息,并建立模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系。
本步骤与上述实施例E4的技术特征相同,具体可参见E4中的论述。
F5、将至少两个模块级物料聚合为系统级物料。
本实施例中的系统级可为当前软件架构中最高层级。
本实施例中,可将至少两个模块级物料聚合为系统级物料。
F6、生成系统级物料的系统信息,并建立系统信息与聚合为与该系统信息相对应的系统级物料的各模块级物料的模块信息之间的第四隶属关系。
系统信息可为对系统级物料进行描述的信息。
将系统级物料的系统信息与属于该系统级物料的各模块级物料的模块信息之间建立第四隶属关系。
本实施例中,基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,生成软件的物料清单(S104),可以包括:
104c、基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及各功能级物料的功能信息、第二隶属关系、模块级物料的模块信息、第三隶属关系、系统级物料的系统信息、第四隶属关系,生成软件的物料清单。
本实施例,由于基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息、所述第二隶属关系、所述模块级物料的模块信息、所述第三隶属关系、所述系统级物料的系统信息、所述第四隶属关系,生成所述软件的物料清单,这样,软件的物料清单中不但包括了各文件的文件信息、各源码包的包信息、第一隶属关系、各功能级物料的功能信息、功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系、还包括模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系,以及系统级物料的系统信息和系统信息与聚合为与该系统信息相对应的系统级物料的各模块级物料的模块信息之间的第四隶属关系,这样,对于当前软件生成的软件物理清单信息更加完整,此外,本实施例生成的软件的物料清单包括文件信息、源码包信息、功能级物料信息、模块级物料信息以及系统级信息等各层级的信息,以及各层级之间的隶属关系,生成的软件物料清单粒度更细、层次结构清晰,用户体验更好,避免了现有技术中生成的物料清单仅有文件信息、包信息以及系统级信息导致的粒度较粗用户体验差的问题。
在生成软件的物料信息之后,为了能够灵活地满足用户使用需求,提高用户体验,在一些例子中,所述软件的物料清单生成方法还可以包括:
响应于物料清单展示指令,展示软件的物料清单。
响应于物料清单展示指令,可以以不同的样式如树形结构图、柱状图等向用户展示。
生成的软件物料清单可以以不同的格式存储。
用户可以根据自身需要,对展示的物料清单进行操作,如可以选择展示某一层级的内容,也可将某一层级的内容收起。
下面以当前软件为操作系统为例,对本申请的方案进行详细说明。
操作系统可包括至少一个子系统(模块),每个子系统下包括至少一个功能,每个功能下包括至少一个源码包,每个源码包下包括至少一个文件。
源码编译时编译脚本及makefile会进入各个源码包或工具的根目录,然后递归进入其子目录,将最底层的每一个文件包含进来,开始编译。
参见图2,本实施例的软件的物理清单生成方法,可以包括:
(1)跟随makefile依次遍历源码包glibc下的所有文件,如arena.c,dynarray.h等等,对应生成文件信息表,该信息表中包括各文件的文件名称、文件内容的MD5、文件所属版权、文件符合的协议和/或文件许可证书。
(2)针对该源码包glibc生成包(Package)信息,并建立源码包中的文件与源码包的隶属关系信息,依次存入数据库的文件表、包表、关系表中。
(3)跟随makefile进入源码包gzip下的所有文件,如crypt.c、crypt.h等等,对应生成文件信息表,该信息表中包括各文件的文件名称、文件内容的MD5、文件所属版权、文件符合的协议和/或文件许可证书。
(4)针对该源码包gzip生成包(Package)信息,并建立源码包中的文件与源码包的隶属关系信息,依次存入数据库的文件表、包表、关系表中。
(5)跟随makefile依次进入其它源码包或工具的根目录,分别得到文件信息、源码包信息,以及文件信息与源码包信息的隶属关系,并存入数据库。
(6)当所有源码包完成后,根据源码包的类别,生成功能级物料的功能信息,存入功能信息表;并生成功能级物料的功能信息与源码包的隶属关系信息,存入关系表中。例如源码包glibc、源码包gzip以及其它部分源码包属于功能级CLIO,除此之外的部分源码包属于功能级GUI,其它源码包对应地归入其它功能级。
具体地,可以根据源码包与类别的对应关系,确定源码包属于哪个类别,进而属于哪个功能级。
(7)基于功能信息表,构建子系统(模块)级物料的模块级信息表,存入软件信息表。
例如功能级CLIO、功能级GUI以及其它部分功能级属于模块级PPS,除此之外的部分功能级属于模块级CCA,其它功能包对应地归入其它模块级。
在一个例子中,操作系统包括底层相关的子系统1、应用相关的子系统2和云相关的子系统3。
可根据功能级物料的信息,确定该功能级物料属于子系统1、子系统2和子系统3中的哪个子系统,确定之后,再构建该功能级物料信息与该子系统信息的隶属关系。
(8)针对子系统级物料的功能信息表,生成系统级信息表,存入数据库的清单信息表。
各个子系统(模块)隶属于系统级。
例如模块级PPS、模块级CCA以及其它模块级隶属于系统级。
(9)基于以上所有信息表生成最终的软件物料清单SBOM。
本实施例,在对源码编译时阶段,从源码包中的文件源码到目标逐层递进,自底向上地针对各文件、由文件到包、由包到功能块、功能块到子系统、由子系统到完整系统生成SBOM,完全正向的过程保证了信息完整、准确,层次结构清晰、正向生成SBOM,生成的信息准确、完整、充分,避免了现有技术中通过软件的包管理工具,对其中列出的信息进行解析,并将这些信息填充相关内容从而生成SBOM而导致的信息提取不完整,很多关键信息可能丢失的问题。
本申请一实施例提供的软件的物料清单生成装置,有效提高软件物料清单的生成效率,并且从源码包的文件到目标层级逐层正向生成物料清单,信息完整充分。
图3为本申请一实施例提供的软件的物料清单生成装置的结构示意图,如图3所示,本实施例的软件的物料清单生成装置,包括:确定器11,用于确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息;第一建立器12,用于建立每个源码包的包信息与该源码包中各文件的文件信息之间的第一隶属关系;第二建立器13,用于基于至少一个源码包的包信息,建立至少一上级物料的物料信息;生成器14,用于基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本实施例的装置,通过确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息,建立每个源码包的包信息与该源码包中各文件的文件信息之间的第一隶属关系,基于至少一个源码包的包信息,建立至少一上级物料的物料信息,基于各源码包中的各文件的文件信息、各源码包的包信息、第一隶属关系,以及至少一上级物料的物料信息,生成软件的物料清单,这样,能够自动生成软件物料清单,有效提高软件物料清单的生成效率,避免了现有技术中手动填充软件物料清单的相关信息导致软件物料清单生成效率低的问题,此外,本实施例,从源码包中的文件到源码包再到至少一上级获取信息,逐层递进、正向生成软件的物料清单,生成的信息准确、完整、充分。
作为一可选实施方式,所述当前软件包括第一源码包和第二源码包;其中,所述确定器,包括:第一确定子器,用于基于对所述当前软件中的第一源码包的编译操作,遍历所述第一源码包的各文件,确定所述第一源码包的各文件的文件信息;第二确定子器,用于确定所述第一源码包的包信息;第三确定子器,用于基于对所述当前软件中的第二源码包的编译操作,遍历所述第二源码包的各文件,确定所述第二源码包的各文件的文件信息;第四确定子器,用于确定所述第二源码包的包信息。
作为一可选实施方式,所述第一确定子器,具体用于:遍历所述第一源码包中的各文件,确定所述第一源码包中的第一文件的初始文件信息;判断所述第一文件的初始文件信息是否缺少第一预设信息;如果缺少所述第一预设信息,则从所述第一源码包中获取所述第一预设信息;将所述第一预设信息添加到所述第一文件的初始文件信息的对应位置,生成所述第一文件的文件信息;如果不缺少第一预设信息,则将所述第一文件的初始文件信息确定为所述第一文件的文件信息。
作为一可选实施方式,所述第二确定子器,包括:确定单元,用于基于对所述当前软件中的第一源码包的编译操作,确定所述第一源码包的包信息。
作为一可选实施方式,所述确定单元,包括:提取子单元,用于从所述第一源码包中提取所述第一源码包的包信息;和/或,确定子单元,用于根据所述第一源码包中的各文件,确定所述第一源码包的包信息。
作为一可选实施方式,所述提取子单元,具体用于:从所述第一源码包中提取所述第一源码包的初始包信息;判断所述第一源码包的初始包信息是否缺少第二预设信息;如果缺少所述第二预设信息,则根据预设方式,获取所述第二预设信息;将所述第二预设信息添加到所述第一源码包的初始包信息的对应位置,生成所述第一源码包的包信息;如果不缺少所述第二预设信息,则将所述第一源码包的初始包信息确定为所述第一源码包的包信息。
作为一可选实施方式,所述当前软件包括第一源码包和第二源码包;所述第一源码包的包信息还包括所述第一源码包依赖于所述第二源码包的依赖关系;所述装置还用于确定所述第一依赖关系,具体用于:基于对所述第一源码包的编译操作,确定所述第一源码包依赖于所述第二源码包;建立所述第一源码包与所述第二源码包的依赖关系。
作为一可选实施方式,所述第二建立器,具体用于:确定各源码包的功能类别;基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系;其中,所述基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单,包括:基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息和所述第二隶属关系,生成所述软件的物料清单。
作为一可选实施方式,所述第二建立器,具体用于:确定各源码包的功能类别;基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系;将至少两个功能级物料聚合为一模块级物料;生成各模块级物料的模块信息,并建立模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系;其中,所述基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单,包括:基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息、所述第二隶属关系、所述模块级物料的模块信息和所述第三隶属关系,生成所述软件的物料清单。
作为一可选实施方式,所述第二建立器,具体用于:确定各源码包的功能类别;基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系;将至少两个功能级物料聚合为一模块级物料;生成各模块级物料的模块信息,并建立模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系;将至少两个模块级物料聚合为系统级物料;生成系统级物料的系统信息,并建立系统信息与聚合为与该系统信息相对应的系统级物料的各模块级物料的模块信息之间的第四隶属关系;其中,所述基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单,包括:基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息、所述第二隶属关系、所述模块级物料的模块信息、所述第三隶属关系、所述系统级物料的系统信息、所述第四隶属关系,生成所述软件的物料清单。
作为一可选实施方式,所述装置还包括:展示器,用于响应于物料清单展示指令,展示所述软件的物料清单。
上述实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
下面以一具体实施方式为例,对本申请的方案进行详细说明。
参见图4,本实施例的软件的物理清单生成装置,可以包括:
信息提取器21:提取源码包及其中包含的各文件的SBOM信息。
完整性检测器22:检测文件SBOM和源码包SBOM需要的信息是否都已经具备。
信息补全器23:如果尚有缺失的信息,自动补齐这些信息。
可以通过外网搜索、内网查找等方法进行补全,具体可从文件对应的源码包中确定缺失的信息。对于源码包缺失的文件可以根据下载地址,确定源码包的缺失信息。
底层生成器24:生成文件级与包级SBOM对应的数据库信息。
功能归类器25:将各个源码包归入相应的功能,如:编译、工具、应用等等。生成功能级SBOM对应的数据库信息。
功能聚合器26:将各个功能聚合到相应模块,如:PPS、CCA、ODC或SDS。生成模块级SBOM对应的数据库信息。
模块聚合器27:将各个模块统一汇聚到系统。生成系统级SBOM对应的数据库信息。
汇总生成器28:将各个级别、层次的SBOM信息进行汇总,并根据用户需要的展示形式生成最终的SBOM文件。
本实施例的软件的物理清单生成装置所包括的各具体部件的名称与前述实施例的装置中的各部件名称虽然不同,但是,可以理解的是,对于本实施例的整体技术方案的原理与前述实施例的整体技术方案原理相同。
图5为本申请一实施例提供的电子设备的结构示意图,如图5所示,可以包括:壳体61、处理器62、存储器63、电路板64和电源电路65,其中,电路板64安置在壳体61围成的空间内部,处理器62和存储器63设置在电路板64上;电源电路65,用于为上述电子设备的各个电路或器件供电;存储器63用于存储可执行程序代码;处理器62通过读取存储器63中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述实施例提供的任一种软件的物料清单生成方法,因此也能实现相应的有益技术效果,前文已经进行了详细说明,此处不再赘述。
上述电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
相应的,本申请的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种软件的物料清单生成方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本申请时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种软件的物料清单生成方法,其特征在于,包括:
确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息;
建立每个源码包的包信息与该源码包中各文件的文件信息之间的第一隶属关系;
基于至少一个源码包的包信息,建立至少一上级物料的物料信息;
基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单。
2.根据权利要求1所述的方法,其特征在于,所述当前软件包括第一源码包和第二源码包;
其中,所述确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息,包括:
基于对所述当前软件中的第一源码包的编译操作,遍历所述第一源码包的各文件,确定所述第一源码包的各文件的文件信息;
确定所述第一源码包的包信息;
基于对所述当前软件中的第二源码包的编译操作,遍历所述第二源码包的各文件,确定所述第二源码包的各文件的文件信息;
确定所述第二源码包的包信息。
3.根据权利要求2所述的方法,其特征在于,所述遍历所述第一源码包的各文件,确定所述第一源码包的各文件的文件信息,包括:
遍历所述第一源码包中的各文件,确定所述第一源码包中的第一文件的初始文件信息;
判断所述第一文件的初始文件信息是否缺少第一预设信息;
如果缺少所述第一预设信息,则从所述第一源码包中获取所述第一预设信息;
将所述第一预设信息添加到所述第一文件的初始文件信息的对应位置,生成所述第一文件的文件信息;
如果不缺少第一预设信息,则将所述第一文件的初始文件信息确定为所述第一文件的文件信息。
4.根据权利要求2所述的方法,其特征在于,所述确定所述第一源码包的包信息,包括:
基于对所述当前软件中的第一源码包的编译操作,确定所述第一源码包的包信息。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第一源码包的包信息,包括:
从所述第一源码包中提取所述第一源码包的包信息;和/或,
根据所述第一源码包中的各文件,确定所述第一源码包的包信息。
6.根据权利要求5所述的方法,其特征在于,所述从所述第一源码包中提取所述第一源码包的包信息,包括:
从所述第一源码包中提取所述第一源码包的初始包信息;
判断所述第一源码包的初始包信息是否缺少第二预设信息;
如果缺少所述第二预设信息,则根据预设方式,获取所述第二预设信息;
将所述第二预设信息添加到所述第一源码包的初始包信息的对应位置,生成所述第一源码包的包信息;
如果不缺少所述第二预设信息,则将所述第一源码包的初始包信息确定为所述第一源码包的包信息。
7.根据权利要求1所述的方法,其特征在于,所述当前软件包括第一源码包和第二源码包;所述第一源码包的包信息还包括所述第一源码包依赖于所述第二源码包的依赖关系;所述第一依赖关系根据如下步骤确定:
基于对所述第一源码包的编译操作,确定所述第一源码包依赖于所述第二源码包;
建立所述第一源码包与所述第二源码包的依赖关系。
8.根据权利要求1所述的方法,其特征在于,所述基于至少一个源码包的包信息,建立至少一上级物料的物料信息,包括:
确定各源码包的功能类别;
基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系;
其中,所述基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单,包括:
基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息和所述第二隶属关系,生成所述软件的物料清单。
9.根据权利要求1所述的方法,其特征在于,所述基于至少一个源码包的包信息,建立至少一上级物料的物料信息,包括:
确定各源码包的功能类别;
基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系;
将至少两个功能级物料聚合为一模块级物料;
生成各模块级物料的模块信息,并建立模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系;
其中,所述基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单,包括:
基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息、所述第二隶属关系、所述模块级物料的模块信息和所述第三隶属关系,生成所述软件的物料清单。
10.根据权利要求1所述的方法,其特征在于,
所述基于至少一个源码包的包信息,建立至少一上级物料的物料信息,包括:
确定各源码包的功能类别;
基于属于同一功能类别的源码包的包信息,生成与该同一功能类别相对应的功能级物料的功能信息,并建立该功能信息与属于该同一功能类别的源码包的包信息之间的第二隶属关系;
将至少两个功能级物料聚合为一模块级物料;
生成各模块级物料的模块信息,并建立模块信息与聚合为与该模块信息相对应的模块级物料的各功能级物料的功能信息之间的第三隶属关系;
将至少两个模块级物料聚合为系统级物料;
生成系统级物料的系统信息,并建立系统信息与聚合为与该系统信息相对应的系统级物料的各模块级物料的模块信息之间的第四隶属关系;
其中,所述基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件的物料清单,包括:
基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及各功能级物料的功能信息、所述第二隶属关系、所述模块级物料的模块信息、所述第三隶属关系、所述系统级物料的系统信息、所述第四隶属关系,生成所述软件的物料清单。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211222995.7A CN115543406A (zh) | 2022-10-08 | 2022-10-08 | 一种软件的物料清单生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211222995.7A CN115543406A (zh) | 2022-10-08 | 2022-10-08 | 一种软件的物料清单生成方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115543406A true CN115543406A (zh) | 2022-12-30 |
Family
ID=84732028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211222995.7A Pending CN115543406A (zh) | 2022-10-08 | 2022-10-08 | 一种软件的物料清单生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543406A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483435A (zh) * | 2023-06-19 | 2023-07-25 | 国网数字科技控股有限公司 | 一种软件物料清单的生成方法、装置和计算机可读介质 |
WO2024140455A1 (zh) * | 2022-12-31 | 2024-07-04 | 华为技术有限公司 | 一种生成物料清单文件的方法以及相关设备 |
-
2022
- 2022-10-08 CN CN202211222995.7A patent/CN115543406A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024140455A1 (zh) * | 2022-12-31 | 2024-07-04 | 华为技术有限公司 | 一种生成物料清单文件的方法以及相关设备 |
CN116483435A (zh) * | 2023-06-19 | 2023-07-25 | 国网数字科技控股有限公司 | 一种软件物料清单的生成方法、装置和计算机可读介质 |
CN116483435B (zh) * | 2023-06-19 | 2023-09-01 | 国网数字科技控股有限公司 | 一种软件物料清单的生成方法、装置和计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115543406A (zh) | 一种软件的物料清单生成方法、装置及电子设备 | |
CN110321131B (zh) | 业务组件打包方法、系统及服务器 | |
CN114706564B (zh) | 软件包制作方法、装置、电子设备及存储介质 | |
CN111161283B (zh) | 一种处理图片资源的方法、装置及电子设备 | |
CN110652728A (zh) | 一种游戏资源管理方法、装置、电子设备及存储介质 | |
CN110795162B (zh) | 生成容器镜像文件的方法和装置 | |
CN108874495B (zh) | 一种主题资源转换方法、装置及电子设备 | |
CN110688320A (zh) | 全局变量的检测方法、装置及终端设备 | |
CN104021007A (zh) | 一种参数更新的方法及电子设备 | |
CN115629951A (zh) | 一种任务全链路追踪方法、第一节点、链路系统及介质 | |
CN106557525B (zh) | 应用程序残留文件的清理方法、装置及电子设备 | |
CN113127005A (zh) | 一种可执行文件生成的方法、装置以及计算机存储介质 | |
CN108920658B (zh) | 一种移动设备桌面搬家方法、装置及电子设备 | |
CN114968247A (zh) | 预编译方法、设备和计算机程序产品 | |
CN112036149A (zh) | 一种文件编辑方法、装置、电子设备及存储介质 | |
CN113377382A (zh) | 一种软件安装包的处理方法、装置、电子设备及存储介质 | |
CN112036133A (zh) | 一种文件保存方法、装置、电子设备及存储介质 | |
CN111880896A (zh) | 一种快速还原容器及运行状态数据的方法和装置 | |
CN113268267B (zh) | 一种数据包生成方法、装置、计算机设备及存储介质 | |
CN114756382B (zh) | 一种内存页面合并的优化方法、系统及服务器 | |
CN112784253B (zh) | 文件系统的信息获取方法、装置、电子设备及存储介质 | |
CN115686656A (zh) | 基于加载程序库的so文件hook方法、设备和介质 | |
CN113792247B (zh) | 基于代码特征生成功能流程图的方法、装置、设备和介质 | |
CN103123635A (zh) | 一种数据搜索方法及应用该方法的电子设备 | |
CN113996066A (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 |