软件产物检测装置、系统、方法及存储介质
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种软件产物检测装置、系统、方法及存储介质。
背景技术
为提升用户体验,软件上线的渠道方往往会对软件的体积(即所占存储空间)进行限制。
但在软件开发过程中,研发人员将更多的注意力放在代码错误和产品需求上,很少关注代码修改对软件整体产物的体积的影响,易于出现软件产物合成后的体积超过限制的情况。
发明内容
本申请实施例提供一种软件产物检测装置、系统、方法及存储介质,以达到避免软件产物合并后体积超过限制的目的。
第一方面,本申请实施例提供一种软件产物检测装置,包括:
软件产物获取模块,用于获取软件的待合并产物;
软件产物分组模块,用于将上述软件的待合并产物的内容进行分组,同组内容由相同内容提供方提供;
软件产物检测模块,用于分别将每组上述内容所占存储空间与本组对应的存储空间阈值进行比较,各组对应的存储空间阈值之和不超过上述软件对应的存储空间阈值;若有至少一组上述内容所占存储空间超过本组对应的存储空间阈值,表示不允许合并该软件的待合并产物。
本申请实施例提供的装置对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
在此基础上,上述软件的待合并产物可以包括链接清单和安装包,上述软件产物分组模块具体可以用于:将所述软件的链接清单中记载的二进制库和经解压缩的安装包中的资源进行分组。相应的,待合并产物的内容包括链接清单中的二进制库和安装包中的资源。
对于运行在苹果IOS操作系统上的软件,其产物可以包括连接清单和安装包,那么,对上述二进制库和经解压缩的安装包中的资源进行分组,使得同组的内容(包括上述二进制库和/或上述资源)由相同的内容提供方提供。
在上述任意实施例的基础上,上述装置还可以包括软件产物内容处理模块,用于:对上述软件的待合并产物的内容进行以下至少一项处理,并按照预定的第一可视化展示规则展示处理结果:
按照第一指定粒度查找上述软件的待合并产物的重复内容;
按照第二指定粒度确定上述软件的待合并产物的内容较之前一版本产物中本内容所占存储空间的增量;
按照第三指定粒度比较上述软件的多个版本产物的内容所占存储空间。
本申请实施例提供的装置,不仅对软件的待合并产物是否允许合并进行判断,还可以对软件产物的空间优化提供指导,从而简化空间优化的实现难度以及复杂度,提高空间优化的效率。具体的,通过查找重复内容,可以引导研发人员删除重复内容。通过比较产物内容所占存储空间的增量并展示给研发人员,以及通过比较多个版本产物的内容所占存储空间并展示给研发人员,从而便于研发人员通过增量变化进行空间优化的决策。
在上述任意实施例的基础上,上述软件的待合并产物包括安装包,上述软件产物检测模块还可以用于:分别将安装包中各个可执行文件的程序代码段所占存储空间与程序代码段对应的存储空间阈值进行比较,若有至少一个可执行文件的程序代码段所占存储空间超过程序代码段对应的存储空间阈值,表示不允许合并软件的待合并产物。
本申请实施例提供的装置,不仅可以从软件产物所占体积是否超出限制的角度进行是否允许合并的判断,还可以从程序代码段所占存储空间是否超出限制的角度进行是否允许合并的判断,进一步避免将不符合准入条件的产物合并导致软件上线过程中出现错误的情况。
第二方面,本申请实施例一种软件产物检测系统,该系统包括上述第一方面各个实施例的软件产物检测装置,该系统还包括软件持续集成装置。该软件持续集成装置包括:软件产物发送模块,用于接收到上述软件的待合并产物的合并请求,下载该软件的待合并产物并发送给软件产物检测装置;通知接收模块,用于接收软件产物检测装置返回的请求结果,该请求结果用于指示是否不允许合并上述软件的待合并产物。
相应的,软件产物检测装置还可以包括:通知发送模块,用于根据每组内容所占存储空间与本组对应的存储空间阈值的比较结果发送请求结果。
本申请实施例提供的系统,由软件持续集成装置在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给软件产物检测装置,由软件产物检测装置对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
在此基础上,上述软件产物检测装置的通知发送模块还可以用于:若有至少一组内容所占存储空间与本组对应的存储空间阈值之差小于设定值,发送预警通知。相应的,软件持续集成装置的通知接收模块还可以用于:接收预警通知,并通过第一人机交互界面展示该预警通知。
本申请实施例提供的系统,不仅能够在软件产物体积超过限制时进行通知,还能够在将要超过限制时发送预警通知,以便研发人员在下一个版本的开发中进行空间优化。
在此基础上,上述软件产物检测装置的通知发送模块还可以用于:若有内容无分组,发送分组请求。相应的,软件持续集成装置的通知接收模块还可以用于:接收所述分组请求,并通过第二人机交互界面展示所述分组请求。
对于无法进行分组的内容,为了对其所占存储空间进行评价,需要确定其分组,也就是确定其内容提供方。因此,通过第二人机交互界面展示该分组请求,以便研发人员为其确定分组。
在此基础上,上述请求结果包括第一访问地址,通过第一访问地址访问的页面用于按照预定的第二可视化展示规则展示每组内容所占存储空间与本组对应的存储空间阈值的比较结果。
在此基础上,上述预警通知包括第二访问地址,通过第二访问地址访问的页面用于按照预定的第三可视化展示规则展示每组内容所占存储空间与本组对应的存储空间阈值的比较结果。
在此基础上,上述分组请求包括第三访问地址,通过第三访问地址访问的页面用于按照预定的第四可视化展示规则展示分组配置控件。
本申请实施例提供的系统,提供页面用于对相关数据进行可视化展示,研发人员根据需要访问到对应的页面,获取相关数据,用于辅助进行空间优化、分组配置等操作。
第三方面,本申请实施例提供一种软件产物检测方法,包括:
软件持续集成装置接收到软件的待合并产物的合并请求,下载该软件的待合并产物并发送给软件产物检测装置;
软件产物检测装置获取软件的待合并产物,按照内容提供方将软件的待合并产物的内容进行分组,同组内容由相同内容提供方提供;分别将每组内容所占存储空间与本组对应的存储空间阈值进行比较;根据每组内容所占存储空间与本组对应的存储空间阈值的比较结果发送请求结果;各组对应的存储空间阈值之和不超过软件对应的存储空间阈值;若有至少一组所述内容所占存储空间超过本组对应的存储空间阈值,表示不允许合并软件的待合并产物;
软件持续集成装置接收软件产物检测装置返回的请求结果,该请求结果用于指示是否不允许合并软件的待合并产物。
本申请实施例提供的方法,由软件持续集成装置在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给软件产物检测装置,由软件产物检测装置对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
第四方面,本申请实施例还提供一种计算机系统,包括第一计算机设备和第二计算机设备。
第一计算机设备包括第一处理器和第一存储器;第一存储器用于存储第一程序;第二处理器被配置为执行第一程序,实现如下过程:获取软件的待合并产物,将所述软件的待合并产物的内容进行分组,同组所述内容由相同内容提供方提供;分别将每组所述内容所占存储空间与本组对应的存储空间阈值进行比较;根据每组所述内容所占存储空间与本组对应的存储空间阈值的比较结果发送请求结果;各组对应的存储空间阈值之和不超过所述软件对应的存储空间阈值;若有至少一组所述内容所占存储空间超过本组对应的存储空间阈值,表示不允许合并所述软件的待合并产物;
第二计算机设备包括第二处理器和第二存储器;第二存储器用于存储第二程序;第二处理器被配置为执行第二程序,实现如下过程:接收到所述软件的待合并产物的合并请求,下载所述软件的待合并产物并发送给所述第一计算机设备;接收所述第一计算机设备返回的请求结果,所述请求结果用于指示是否不允许合并所述软件的待合并产物。
本申请实施例提供的计算机系统,由第二计算机设备在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给第一计算机设备,由第一计算机设备对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
第五方面,本申请实施例提供一种计算机可读存储介质,存储有上述第一程序和/或上述第二程序。
本申请实施例提供的计算机可读存储介质,其中保存的程序执行时,由第二计算机设备在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给第一计算机设备,由第一计算机设备对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
附图说明
图1为本申请一个实施例提供的软件产物检测装置框图;
图2为本申请一个实施例提供的软件产物检测系统框图;
图3为本申请一个实施例提供的软件产物检测方法流程图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请实施例的技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请实施例技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本申请实施例提供的软件产物检测装置、系统、方法及计算机可读存储介质适用于对移动终端软件进行处理,也可用于对个人电脑、服务器等设备上年的软件进行处理。以移动终端软件为例,可以对运行在苹果的IOS操作系统上的软件进行处理,也可以对运行在安卓操作系统上的软件进行处理。
本申请实施例提供一种软件产物检测装置,如图1所示,包括:
软件产物获取模块101,用于获取软件的待合并产物。
软件开发过程中,会通过持续集成(CI)进行版本迭代。每次对软件代码的修改都会形成产物,并将修改的产物合并到软件的安装包中。
对于运行在不同操作系统上的软件,待合并产物也不尽相同。以运行在苹果的IOS操作系统的软件为例,待合并的产物包括链接清单(linkmap)和IPA(iPhoneApplication,苹果应用程序)安装包。
本申请实施例提供的装置可以是用于进行产物检测的服务器,也可以是研发人员所使用的计算机设备,还可以是研发人员进行软件开发所访问的服务器。若是用于进行产物检测的服务器,那么,具体可以是从执行软件持续集成任务的计算机设备处获取上述软件的待合并产物。若是研发人员所使用的计算机设备、所访问的服务器等执行软件集成任务的计算机设备,那么,具体是从执行软件持续集成任务的某个节点处获取上述软件的待合并产物。
软件产物分组模块102,用于将上述软件的待合并产物的内容进行分组,同组内容由相同内容提供方提供。
本申请实施例不对内容提供方的具体划分方式进行限定。实际应用中,可以根据实际情况确定不同的内容提供方。作为举例而非限定,可以按照业务线划分内容提供方,即一个业务线作为一个内容提供方。以某软件为例,若该软件中即具有段视频发布功能,又具有搜索功能,还具有评论功能。那么,该软件的研发至少可以划分为三个业务线,其中一个业务线负责短视频发布功能的开发,另一个业务线负责搜索功能的开发,又一个业务线负责评论功能的开发。那么,待合并产物中短视频发布相关的内容划分为一组,搜索功能相关的内容划分为一组,评论功能相关的内容划分为一组。
实际应用中,可以提供人机交互界面,由人工进行分组。也可以根据历史分组记录进行自动分组。
软件产物检测模块103,用于分别将每组上述内容所占存储空间与本组对应的存储空间阈值进行比较,各组对应的存储空间阈值之和不超过上述软件对应的存储空间阈值;若有至少一组上述内容所占存储空间超过本组对应的存储空间阈值,表示不允许合并该软件的待合并产物。
其中,各个存储空间阈值是预先确定的。软件对应的存储空间阈值可以为渠道方或其他主体对该软件体积的限制,若软件不止对应一个体积限制,例如不同版本的操作系统对软件体积的限制不同,又例如,有不止一个主体对软件体积进行限制,那么,选择最小的存储空间限制(即最严格的存储空间限制)作为软件对应的存储空间阈值。在此基础上,根据产品需求及产品逻辑等因素为各个内容提供方分配存储空间阈值,各个内容提供方对应的存储空间阈值(即各组内容对应的存储空间阈值)之和不超过软件对应的存储空间阈值。
本申请实施例提供的装置对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
如上所述,对于运行在苹果IOS操作系统上的软件,上述软件的待合并产物可以包括链接清单和安装包,上述软件产物分组模块具体可以用于:将所述软件的链接清单中记载的二进制库和经解压缩的安装包中的资源进行分组。相应的,待合并产物的内容包括链接清单中的二进制库和安装包中的资源。
对上述二进制库和经解压缩的安装包中的资源进行分组,使得同组的内容(包括上述二进制库和/或上述资源)由相同的内容提供方提供。
对于其他操作系统的软件,具体根据其渠道方或其他第三方的限制细则确定待合并产物以及具体分组方式,本申请实施例对此不做限定。
在上述任意实施例的基础上,上述装置还可以包括软件产物内容处理模块,用于:对上述软件的待合并产物的内容进行以下至少一项处理,并按照预定的第一可视化展示规则展示处理结果:
按照第一指定粒度查找上述软件的待合并产物的重复内容;
按照第二指定粒度确定上述软件的待合并产物的内容较之前一版本产物中本内容所占存储空间的增量;
按照第三指定粒度比较上述软件的多个版本产物的内容所占存储空间。
本申请实施例提供的装置,不仅对软件的待合并产物是否允许合并进行判断,还可以对软件产物的空间优化提供指导,从而简化空间优化的实现难度以及复杂度,提高空间优化的效率。具体的,通过查找重复内容,可以引导研发人员删除重复内容。通过比较产物内容所占存储空间的增量并展示给研发人员,以及通过比较多个版本产物的内容所占存储空间并展示给研发人员,从而便于研发人员通过增量变化进行空间优化的决策。
本申请实施例不对上述第一可视化展示规则进行限定,实际应用中,可以根据实际情况指定第一可视化展示方式。例如,对于重复内容,可以同时展示重复内容的内容表示,也可以同时展示重复内容。对于内容所占存储空间增量,可以以数值、图形等方式展示内容所占存储空间的增量。对于多个版本产物的内容所占存储空间的比较,可以以列表、曲线图等方式展示。
本申请实施例不对上述第一指定粒度进行限制,作为举例而非限定,第一指定粒度为二进制库级别的粒度,即查找重复的二进制库。
本申请实施例不对第二指定粒度进行限制,作为举例而非限定,第二指定粒度为文件级别的安装包增量,以及库级别的linkmap增量。
本申请实施例不对第三指定粒度进行限制,作为举例而非限定,第三指定粒度为安装包级别的比较,以及业务线级别的比较。
在上述任意实施例的基础上,上述软件的待合并产物包括安装包,上述软件产物检测模块还可以用于:分别将安装包中各个可执行文件的程序代码段(_TEXT段)所占存储空间与程序代码段对应的存储空间阈值进行比较,若有至少一个可执行文件的程序代码段所占存储空间超过程序代码段对应的存储空间阈值,表示不允许合并软件的待合并产物。
本申请实施例提供的装置,不仅可以从软件产物所占体积是否超出限制的角度进行是否允许合并的判断,还可以从程序代码段所占存储空间是否超出限制的角度进行是否允许合并的判断,进一步避免将不符合准入条件的产物合并导致软件上线过程中出现错误的情况。
本申请实施例还提供一种软件产物检测系统,该系统包括上述各个实施例的软件产物检测装置,该系统还包括软件持续集成装置。该软件持续集成装置包括:软件产物发送模块,用于接收到上述软件的待合并产物的合并请求,下载该软件的待合并产物并发送给软件产物检测装置;通知接收模块,用于接收软件产物检测装置返回的请求结果,该请求结果用于指示是否不允许合并上述软件的待合并产物。
相应的,软件产物检测装置还可以包括:通知发送模块,用于根据每组内容所占存储空间与本组对应的存储空间阈值的比较结果发送请求结果。
本申请实施例提供的系统,由软件持续集成装置在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给软件产物检测装置,由软件产物检测装置对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
在此基础上,上述软件产物检测装置的通知发送模块还可以用于:若有至少一组内容所占存储空间与本组对应的存储空间阈值之差小于设定值,发送预警通知。相应的,软件持续集成装置的通知接收模块还可以用于:接收预警通知,并通过第一人机交互界面展示该预警通知。
本申请实施例提供的系统,不仅能够在软件产物体积超过限制时进行通知,还能够在将要超过限制时发送预警通知,以便研发人员在下一个版本的开发中进行空间优化。
应当指出的是,若待合并产物中包括新增内容,那么,新增内容可能无法自动分组,因此就需要通过提供人机交互界面进行人工分组。上述软件产物检测装置的通知发送模块还可以用于:若有内容无分组,发送分组请求。相应的,软件持续集成装置的通知接收模块还可以用于:接收所述分组请求,并通过第二人机交互界面展示所述分组请求。
对于无法进行分组的内容,为了对其所占存储空间进行评价,需要确定其分组,也就是确定其内容提供方。因此,通过第二人机交互界面展示该分组请求,以便研发人员为其确定分组。
本申请实施例不对上述请求结果所包括的内容进行限定。一种情况下,上述请求结果中包含指示待合并产物是否不允许合并的消息;若不允许合并,该请求结果中还可以包含上述符合第一可视化展示规则的处理结果,或者包含访问地址,该访问地址所访问的页面按照第一可视化展示规则展示上述处理结果。另一种情况下,上述请求结果中包括第一访问地址,通过第一访问地址访问的页面用于按照预定的第二可视化展示规则展示每组内容所占存储空间与本组对应的存储空间阈值的比较结果。本申请实施例不对第二可视化展示规则进行限定,实际应用中,可以根据实际情况指定该第二可视化展示规则。应当指出的是,进一步地,还可以在同一页面上按照第一可视化展示规则展示上述处理结果,或者可以通过该页面跳转到按照第一可视化展示规则展示上述处理结果的页面。
本申请实施例不对上述预警通知所包括的内容进行限定。一种情况下,预警通知中包括所占存储空间与本组对应的存储空间阈值之差小于设定值的内容的内容提供方的信息,另一种情况下,上述预警通知包括第二访问地址,通过第二访问地址访问的页面用于按照预定的第三可视化展示规则展示每组内容所占存储空间与本组对应的存储空间阈值的比较结果。本申请实施例不对第三可视化展示规则进行限定,实际应用中,可以根据实际情况指定该第三可视化展示规则。应当指出的是,进一步地,还可以在同一页面上按照第一可视化展示规则展示上述处理结果,或者可以通过该页面跳转到按照第一可视化展示规则展示上述处理结果的页面。
本申请实施例不对上述分组请求所包括的内容进行限定。一种情况下,分组请求中包含无分组的内容的信息,相应的,软件持续继承装置还包括分组配置模块,该分组配置模块通过人机交互界面向研发人员展示无分组的内容的信息,并接收研发人员输入的分组结果。另一种情况下,上述分组请求包括第三访问地址,通过第三访问地址访问的页面用于按照预定的第四可视化展示规则展示分组配置控件。通过分组配置控件与研发人员进行交互,获取无分组内容的分组结果。
本申请实施例提供的系统,提供页面用于对相关数据进行可视化展示,研发人员根据需要访问到对应的页面,获取相关数据,用于辅助进行空间优化、分组配置等操作。
下面结合具体应用场景对本申请实施例提供的系统进行详细说明。
该应用场景中,在整个研发交付链条的末端接入软件产物检测系统,方便研发人员查看或者监控对软件代码的改动是否符合预期。
该软件产物检测系统的功能方面能覆盖到研发流程、优化指导、历史版本回溯三个维度,其软件架构如图2所示,包括:平台部分201、CI部分202和通知部分203。
其中,平台部分201可以在服务器侧实现,CI部分202和通知部分203可以由插入CI流程的脚本实现。
具体的,通过持续集成完成打包并生成产物后,将产物上传。其中,产物上传伴随着MR(Merge Request,合并请求)的发送,监听到MR后,上述脚本创建软件产物检测任务,将该软件产物检测与本次MR绑定,下载该产物(包括linkmap和IPA安装包)发送给服务器。
服务器接收到上述产物后,对产物进行分析,具体的:
对linkemap进行分析,即通过分析Linkmap确定其中记载的二进制库,对linkmap中记载的所有二进制库按照业务线归类(即分组),并将linkmap中记载的库所占存储空间转换为二进制库所占存储空间,从而确定每个业务线各自对应的二进制库所占存储空间之和;
对IPA安装包的资源进行分析,解压缩IPA安装包,对解压缩之后的安装包内部的各个文件(资源)按照业务线归类(即分组),并确定每个业务线各自对应的文件(资源)所占存储空间之和。
计算配额,即计算每个业务线各自对应的资源以及二进制库所占存储空间,并与各个业务线各自对应的存储空间阈值进行比较,另外,还监测IPA安装包中各个文件的_TEXT段所占存储空间,并于_TEXT段对应的存储空间阈值进行比较;
准入结果判断,若有至少一个业务线对应的资源以及二进制库所占存储空间超过该业务线对应的存储空间阈值,和/或,有至少一个文件的_TEXT段所占存储空间超过_TEXT段对应的存储空间阈值,确定不允许该产物合并,否则,确定允许该产物合并。
其中,各个业务线对应的存储空间阈值之和不超过软件对应的存储空间阈值。在计算配额时,具体可以判断该软件对应的操作系统版本,选择该操作系统版本对应的存储空间阈值,例如,同一软件,运行在IOS8的版本与运行在IOS9的版本对应的存储空间阈值不同。进一步地,根据选择的软件的存储空间阈值为各个业务线分配存储空间阈值。另外,选择该操作系统版本对应的_TEXT段的存储空间阈值。
其中,若产物中有新的依赖,那么对应的内容无法自动归类,这种情况下,服务器通过上述脚本中的通知部分向用户发出分组请求,以便用户手动为该内容进行归类,服务器获取该内容的归类结果,继续进行后续分析。
本实施例中,服务器对安装包的分析过程中,支持统一标准,即以ARM64单架构包作为分析标准,其他架构的安装包将统一转换为该标准;支持关联MR的一键跳转;支持将Linkmap所占存储空间转换为二进制库所占存储空间;支持多个linkmap切换;支持解析Asset.car获取图片资源实际占用存储空间;支持原始产物下载;导出准入结果至CSV文件。
除此之外,服务器还对产物进行重复库检测以及安装包比较、历史版本回溯。具体的:
对上传的多个link进行分析以查找重复库;
支持文件级别的增量变化明细分析,支持库级别的linkmap变化明细分析
支持预定时间段内的指定的多个版本的安装包(解压前、解压后)所占存储空间增长趋势分析;支持按业务线比对预定时间段内的指定的多个版本的安装包的增量信息。
对整体安装包大小进行回顾,可以直观了解版本优化信息,实现纵向比对。
上述脚本监听每个MR绑定的软件产物检测任务的分析结果,并根据该分析结果响应MR。通过上述处理过程,可以尽早发现问题,不要让有问题的代码集成进来。
除了渠道方或第三方设置的硬性红线之外,本着谁变大谁治理,并不过多干涉业务的原则,将各个依赖的库和安装包的资源先划分成一个一个的业务线,代码可以细分到中间产物,对二进制产物进行归类。为每个业务线分配一个合理的配额。在配额内的改动都可以集成(合并)。但是如果超出配额则不允许代码合并,直到优化该业务线所占存储空间到小于配额,同时为了保证业务迭代不受影响,将在马上超标时,给该业务线发送通知告知其配额大小已经“岌岌可危”了。
由于需要将每个业务线和其依赖对应起来,才能准确的计算配额,所以在计算配额之前是不允许存在未知的不属于任何业务线的依赖,所以如果存在新增依赖这种情况,会需要分配到某个业务线,并且需要业务线负责人审批通过。经此处理,可以明确地知道哪个版本增加了哪些依赖,增加了多少。
虽然现有技术中也有本地脚本可实现对软件产物进行分析,但现有脚本工具的分析结果不够直观,需要有研发经验的用户才能够理解,本申请实施例提供的系统,无论是对产物内容所占存储空间的分析,还是增量分析、历史版本比较分析,均可以进行简单、细化的解读,设计合理的可视化方案,便于无研发基础的用户查看、理解。
另外,现有的脚本工具往往只能在产物合并交付出现问题后进行产物分析,无法在产物合并前进行分析。本申请实施例提供的系统,通过运行与CI结合的脚本,在软件产物合并之前,提出合并请求(MR)请求时,创建软件产物分析任务,并由服务器对软件产物进行分析,根据分析结果确定是否允许软件产物合并,将软件产物分析前置。
基于同样的发明构思,本申请实施例提供一种软件产物检测方法,如图3所示,包括:
步骤301、软件持续集成装置接收到软件的待合并产物的合并请求,下载该软件的待合并产物并发送给软件产物检测装置。
步骤302、软件产物检测装置获取软件的待合并产物。
步骤303、软件产物检测装置按照内容提供方将软件的待合并产物的内容进行分组,同组内容由相同内容提供方提供;
步骤304、软件产物检测装置分别将每组内容所占存储空间与本组对应的存储空间阈值进行比较;
步骤305、软件产物检测装置根据每组内容所占存储空间与本组对应的存储空间阈值的比较结果发送请求结果;各组对应的存储空间阈值之和不超过软件对应的存储空间阈值;若有至少一组所述内容所占存储空间超过本组对应的存储空间阈值,表示不允许合并软件的待合并产物;
步骤306、软件持续集成装置接收软件产物检测装置返回的请求结果,该请求结果用于指示是否不允许合并软件的待合并产物。
本申请实施例提供的方法,由软件持续集成装置在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给软件产物检测装置,由软件产物检测装置对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
在此基础上,若有至少一组内容所占存储空间与本组对应的存储空间阈值之差小于设定值,上述软件产物检测装置还可以发送预警通知。相应的,软件持续集成装置还可以接收预警通知,并通过第一人机交互界面展示该预警通知。
本申请实施例提供的方法,不仅能够在软件产物体积超过限制时进行通知,还能够在将要超过限制时发送预警通知,以便研发人员在下一个版本的开发中进行空间优化。
应当指出的是,若待合并产物中包括新增内容,那么,新增内容可能无法自动分组,因此就需要通过提供人机交互界面进行人工分组。若有内容无分组,上述软件产物检测装置还可以发送分组请求。相应的,软件持续集成装置还可以接收所述分组请求,并通过第二人机交互界面展示所述分组请求。
对于无法进行分组的内容,为了对其所占存储空间进行评价,需要确定其分组,也就是确定其内容提供方。因此,通过第二人机交互界面展示该分组请求,以便研发人员为其确定分组。
本申请实施例不对上述请求结果所包括的内容进行限定。一种情况下,上述请求结果中包含指示待合并产物是否不允许合并的消息;若不允许合并,该请求结果中还可以包含上述符合第一可视化展示规则的处理结果,或者包含访问地址,该访问地址所访问的页面按照第一可视化展示规则展示上述处理结果。另一种情况下,上述请求结果中包括第一访问地址,通过第一访问地址访问的页面用于按照预定的第二可视化展示规则展示每组内容所占存储空间与本组对应的存储空间阈值的比较结果。本申请实施例不对第二可视化展示规则进行限定,实际应用中,可以根据实际情况指定该第二可视化展示规则。应当指出的是,进一步地,还可以在同一页面上按照第一可视化展示规则展示上述处理结果,或者可以通过该页面跳转到按照第一可视化展示规则展示上述处理结果的页面。
本申请实施例不对上述预警通知所包括的内容进行限定。一种情况下,预警通知中包括所占存储空间与本组对应的存储空间阈值之差小于设定值的内容的内容提供方的信息,另一种情况下,上述预警通知包括第二访问地址,通过第二访问地址访问的页面用于按照预定的第三可视化展示规则展示每组内容所占存储空间与本组对应的存储空间阈值的比较结果。本申请实施例不对第三可视化展示规则进行限定,实际应用中,可以根据实际情况指定该第三可视化展示规则。应当指出的是,进一步地,还可以在同一页面上按照第一可视化展示规则展示上述处理结果,或者可以通过该页面跳转到按照第一可视化展示规则展示上述处理结果的页面。
本申请实施例不对上述分组请求所包括的内容进行限定。一种情况下,分组请求中包含无分组的内容的信息,相应的,软件持续继承装置还包括分组配置模块,该分组配置模块通过人机交互界面向研发人员展示无分组的内容的信息,并接收研发人员输入的分组结果。另一种情况下,上述分组请求包括第三访问地址,通过第三访问地址访问的页面用于按照预定的第四可视化展示规则展示分组配置控件。通过分组配置控件与研发人员进行交互,获取无分组内容的分组结果。
本申请实施例提供的方法,提供页面用于对相关数据进行可视化展示,研发人员根据需要访问到对应的页面,获取相关数据,用于辅助进行空间优化、分组配置等操作。
基于同样的发明构思,本申请实施例还提供一种计算机系统,包括第一计算机设备和第二计算机设备。
第一计算机设备包括第一处理器和第一存储器;第一存储器用于存储第一程序;第二处理器被配置为执行第一程序,实现如下过程:获取软件的待合并产物,将所述软件的待合并产物的内容进行分组,同组所述内容由相同内容提供方提供;分别将每组所述内容所占存储空间与本组对应的存储空间阈值进行比较;根据每组所述内容所占存储空间与本组对应的存储空间阈值的比较结果发送请求结果;各组对应的存储空间阈值之和不超过所述软件对应的存储空间阈值;若有至少一组所述内容所占存储空间超过本组对应的存储空间阈值,表示不允许合并所述软件的待合并产物;
第二计算机设备包括第二处理器和第二存储器;第二存储器用于存储第二程序;第二处理器被配置为执行第二程序,实现如下过程:接收到所述软件的待合并产物的合并请求,下载所述软件的待合并产物并发送给所述第一计算机设备;接收所述第一计算机设备返回的请求结果,所述请求结果用于指示是否不允许合并所述软件的待合并产物。
其中,第一计算机设备的具体实现可以参照上述软件产物检测装置实施例的说明,第二计算机设备的具体实现可以参照上述软件持续集成创制实施例的说明,此处不再赘述。
本申请实施例提供的计算机系统,由第二计算机设备在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给第一计算机设备,由第一计算机设备对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
基于同样的发明构思,本申请实施例提供一种计算机可读存储介质,存储有上述第一程序和/或上述第二程序。
本申请实施例提供的计算机可读存储介质,其中保存的程序执行时,由第二计算机设备在接收到软件的待合并产物的合并请求的情况下,下载待合并产物并发送给第一计算机设备,由第一计算机设备对软件待合并产物的内容进行分组,使得相同内容提供方提供的内容被划分到同一组,进而判断每组内容是否超过为该组分配的存储空间阈值,其中,各组对应的存储空间阈值之和不超过软件对应的存储空间阈值。那么,若有至少一组内容所占的存储空间超过该组对应的存储空间阈值,则不允许待合并产物进行合并,有效避免了合并后的软件体积超过限制。另外,由于将相同内容提供方提供的内容划分到同一组,为每个内容提供方分配存储空间阈值,有助于快速定位需要进行空间优化的产物内容及其提供方,以便有针对性地对产物进行空间优化。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。