本发明涉及计算机技术领域,特别涉及一种软件开源风险确定方法和装置。
背景技术:
软件开发中模块的复用是一种提高开发效率的常用手段,特别是当前开源软件的流行,更加降低了软件开发的复杂度,加快了软件开发进度。
但是开源软件的授权协议是非常复杂的,有的开源授权协议要求使用其开源软件,必须也要把开发的软件产品进行以同样的开源授权方式进行开源,即必须把开发的源代码公开,让社会广大人员可以访问、下载、使用。而有的开源授权协议则不要求软件产品进行开源。因此进行软件产品开发对使用的开源软件模块进行检查,以确定开源软件涉及哪些开源授权协议,以免未能遵守所述软件开源授权协议的要求。
技术实现要素:
有鉴于此,本申请提供一种软件开源风险确定方法和装置,能够准确评估所述软件和开源软件模块的风险,避免不必要的损失。
为解决上述技术问题,本申请的技术方案是这样实现的:
在一个实施例中,提供了一种软件开源风险确定方法,所述方法包括:
对软件的软件源代码库进行扫描,获取代码文件;
对每个代码文件的内容进行扫描,确定所述代码文件引用的开源软件模块;
基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议;
统计指定的开源软件授权协议所对应的开源软件模块的个数;
根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
在另一个实施例中,提供了一种软件开源风险确定装置,所述装置包括:扫描单元、第一获取单元、第一确定单元、第二获取单元、统计单元和第二确定单元;
所述扫描单元,用于对软件的软件源代码库进行扫描,对所述第一获取单元获取的每个代码文件的内容进行扫描;
所述第一获取单元,当所述扫描单元对软件的软件源代码库进行扫描时,获取代码文件;
所述第一确定单元,用于当所述扫描单元对获取的每个代码文件的内容进行扫描时,确定所述代码文件引用的开源软件模块;
所述第二获取单元,用于基于预设的开源软件授权协议库获取所述第一确定单元确定的开源软件模块对应的开源软件授权协议;
所述统计单元,用于统计所述第二获取单元中获取的指定的开源软件授权协议所对应的开源软件模块的个数;
所述第二确定单元,用于根据所述第二获取单元获取的开源软件授权协议,以及所述统计单元统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
在另一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述软件开源风险确定方法的步骤。
在另一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述软件开源风险确定方法的步骤。
由上面的技术方案可见,上述实施例中通过对软件的软件源代码库进行扫描,识别所述软件中的代码文件所涉及到的开源软件模块,并基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议,来确定软件模块的风险,以及所述软件的风险。该方案能够准确评估所述软件和开源软件模块的风险,避免不必要的损失。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一中软件开源风险确定流程示意图;
图2为本申请实施例二中软件开源风险确定流程示意图;
图3为本申请实施例三中软件开源风险确定流程示意图;
图4为本申请实施例中应用于上述技术的装置结构示意图;
图5为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
本申请实施例中提供一种软件开源风险确定方法,应用于软件开源风险确定装置上。通过对软件的软件源代码库进行扫描,识别所述软件中的代码文件所涉及到的开源软件模块,并基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议,来确定软件模块的风险,以及所述软件的风险。能够准确评估所述软件和开源软件模块的风险,避免不必要的损失。
下面结合附图,详细描述本申请实施例中软件开源风险确定过程。
实施例一
参见图1,图1为本申请实施例一中软件开源风险确定流程示意图。具体步骤为:
步骤101,对软件的源代码库进行扫描,获取代码文件。
在具体实现时,需要指定要确定的软件对应的目录或链接。
对软件的源代码库进行扫描,即对软件对应的目录或链接对应的源代码库进行扫描;
在扫描的过程中获取所有代码文件。
步骤102,对每个代码文件的内容进行扫描,确定所述代码文件涉及到的开源软件模块。
在对每个代码文件的内容进行扫描时,可以确定每个代码文件引用的软件模块;
根据引用的软件模块的名称可以确定所述软件模块是否为开源软件模块。
步骤103,基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议。
预设的开源软件授权协议库根据可以是已公开的,或指定的开源软件授权协议库,本申请实施例中不限制获取预设的开源软件授权协议库的方式。
预设的软件授权协议库包括:开源软件模块的名称与开源软件授权协议的关联关系。
步骤104,统计指定的开源软件授权协议所对应的开源软件模块的个数。
指定的开源软件授权协议为第二版通用性公开许可证(gplv2)协议和加强版通用公共许可证(agpl)协议。
具体实现时,统计对应gplv2协议的开源软件模块的个数m,以及统计对应agpl协议的开源软件模块的个数n。
步骤105,根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
当指定的开源软件授权协议为gplv2协议和agpl协议时,根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险,包括:
确定涉及gplv2或agpl协议的开源软件模块为高风险模块,不涉及第二版通用性公开许可证gplv2协议和库通用公共许可证agpl协议的开源软件模块为低风险模块;
若统计涉及到gplv2协议和agpl协议的开源软件模块的个数的和大于预设值,则确定所述软件为高风险;否则,确定为低风险。
高风险的判别准则随开源软件授权协议的更新而进行及时更新。
本申请实施例中以指定的开源软件授权协议为gplv2协议和agpl协议为例,在具体实现时,或者开源软件授权协议更新后,实施者可以根据需要设置指定的开源软件协议,本申请实施例中对此不进行限制。
本申请实施例中以高低风险两种风险等级为例,在具体实现时,也可以划分多个风险等级,并配置风险等级与指定的开源软件授权协议的对应关系,以及统计的开源软件模块的个数与划分的风险等级的对应关系,本申请实施例中对风险评估的具体实现不进行限制。
本申请实施例中通过对软件的软件源代码库进行扫描,识别所述软件中的代码文件所涉及到的开源软件模块,并基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议,来确定软件模块的风险,以及所述软件的风险。能够准确评估所述软件和开源软件模块的风险,避免不必要的损失。
实施例二
参见图2,图2为本申请实施例二中软件开源风险确定流程示意图。具体步骤为:
步骤201,对软件的源代码库进行扫描,获取代码文件。
在具体实现时,需要指定要确定的软件对应的目录或链接。
对软件的源代码库进行扫描,即对软件对应的目录或链接对应的源代码库进行扫描;
在扫描的过程中获取所有代码文件。
步骤202,根据代码文件的后缀确定开发所述代码文件的计算机语言。
步骤203,使用确定的计算机语言对应的关键词对所述代码文件进行内容扫描,确定所述代码文件引用的软件模块。
如确定的计算机语言为c语言,使用c语言对应的关键词#include来确定所述代码文件引用的软件模块;
如确定的计算机语言为python和java,则使用python和java对应的关键词import来确定所述代码文件引用的软件模块。
步骤204,基于开源软件模块库确定为开源软件模块的软件模块。
开源软件模块库包括:开源软件模块的名称;
在具体实现时,有些软件模块是系统软件模块,不在所述开源软件模块库中,不涉及开源授权,则不关注这些软件模块。
本实施例中使用开源软件模块库确定软件模块是否为开源软件模块;当所述软件模块的名称在所述开源软件模块库中存在,则确定所述软件模块为开源软件模块;否则,确定所述软件模块部位开源软件模块。
如c语言中#include<stdio.h>引用的stdio是一个系统标准输入输出库,不属于软件开源模块。
java语言中,如:
importorg.openstack4j.api.osclient.osclientv3;
则知道这里用到了openstack4j软件模块api接口中的osclientv3接口,版本为v3。
假设openstack4j软件模块的名称在开源软件模块库中存在,则确定所述openstack4j软件模块为开源软件模块,在具体实现时,如果能够获取开源软件模块的版本号,则要获取;不能,则不获取。
步骤202到步骤204用于实现对每个代码文件的内容进行扫描,确定所述代码文件引用的开源软件模块。
本申请实施例中在具体实现时可以使用开源软件模块库识别开源软件模块,也可以使用预设的开源软件授权协议库识别开源软件模块。
步骤205,基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议。
预设的开源软件授权协议库根据可以是已公开的,或指定的开源软件授权协议库,本申请实施例中不限制获取预设的开源软件授权协议库的方式。
预设的软件授权协议库包括:开源软件模块的名称与开源软件授权协议的关联关系。
在具体实现时,若获取开源软件模块的版本号,则基于预设的开源软件授权协议库获取确定的开源软件模块的版本对应的开源软件授权协议。
若未获取开源软件模块的版本号,则基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议。
若所述开源软件模块在所述预设的开源软件授权协议库中对应多个版本,则将所有版本对应的开源授权协议均获取。
步骤206,统计指定的开源软件授权协议所对应的开源软件模块的个数。
指定的开源软件授权协议为gplv2协议和agpl协议。
具体实现时,统计对应gplv2协议的开源软件模块的个数m,以及统计对应agpl协议的开源软件模块的个数n。
步骤207,根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
当指定的开源软件授权协议为gplv2协议和agpl协议时,根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险,包括:
确定涉及gplv2或agpl协议的开源软件模块为高风险模块,不涉及第二版通用性公开许可证gplv2协议和库通用公共许可证agpl协议的开源软件模块为低风险模块;
若统计涉及到gplv2协议和agpl协议的开源软件模块的个数的和大于预设值,则确定所述软件为高风险;否则,确定为低风险。
高风险的判别准则随开源软件授权协议的更新而进行及时更新。
本申请实施例中以指定的开源软件授权协议为gplv2协议和agpl协议为例,在具体实现时,或者开源软件授权协议更新后,实施者可以根据需要设置指定的开源软件协议,本申请实施例中对此不进行限制。
本申请实施例中以高低风险两种风险等级为例,在具体实现时,也可以划分多个风险等级,并配置风险等级与指定的开源软件授权协议的对应关系,以及统计的开源软件模块的个数与划分的风险等级的对应关系,本申请实施例中对风险评估的具体实现不进行限制。
本申请实施例中通过对软件的软件源代码库进行扫描,通过确定开发代码文件的计算机语言,基于所述计算机语言,以及开源软件模块库确定所述代码文件引用的开源软件模块,并基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议,来确定软件模块的风险,以及所述软件的风险。能够准确评估所述软件和开源软件模块的风险,避免不必要的损失。
实施例三
参见图3,图3为本申请实施例三中软件开源风险确定流程示意图。具体步骤为:
步骤301,对软件的源代码库进行扫描,获取代码文件。
在具体实现时,需要指定要确定的软件对应的目录或链接。
对软件的源代码库进行扫描,即对软件对应的目录或链接对应的源代码库进行扫描;
在扫描的过程中获取所有代码文件。
步骤302,对每个代码文件的内容进行扫描,确定所述代码文件涉及到的开源软件模块。
在对每个代码文件的内容进行扫描时,可以确定每个代码文件引用的软件模块;
根据引用的软件模块的名称可以确定所述软件模块是否为开源软件模块。
步骤303,基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议。
预设的开源软件授权协议库根据可以是已公开的,或指定的开源软件授权协议库,本申请实施例中不限制获取预设的开源软件授权协议库的方式。
预设的软件授权协议库包括:开源软件模块的名称与开源软件授权协议的关联关系。
步骤304,统计指定的开源软件授权协议所对应的开源软件模块的个数。
指定的开源软件授权协议为gplv2协议和agpl协议。
具体实现时,统计对应gplv2协议的开源软件模块的个数m,以及统计对应agpl协议的开源软件模块的个数n。
步骤305,根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
当指定的开源软件授权协议为gplv2协议和agpl协议时,根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险,包括:
确定涉及gplv2或agpl协议的开源软件模块为高风险模块,不涉及第二版通用性公开许可证gplv2协议和库通用公共许可证agpl协议的开源软件模块为低风险模块;
若统计涉及到gplv2协议和agpl协议的开源软件模块的个数的和大于预设值,则确定所述软件为高风险;否则,确定为低风险。
高风险的判别准则随开源软件授权协议的更新而进行及时更新。
本申请实施例中以指定的开源软件授权协议为gplv2协议和agpl协议为例,在具体实现时,或者开源软件授权协议更新后,实施者可以根据需要设置指定的开源软件协议,本申请实施例中对此不进行限制。
本申请实施例中以高低风险两种风险等级为例,在具体实现时,也可以划分多个风险等级,并配置风险等级与指定的开源软件授权协议的对应关系,以及统计的开源软件模块的个数与划分的风险等级的对应关系,本申请实施例中对风险评估的具体实现不进行限制。
步骤306,将软件的风险,以及开源软件模块和风险的关联关系输出。
对风险进行输出,通过指定方式展示,特别是涉及的高风险的开源软件的模块和软件,能够提醒软件开发者注意防范,必要时进行规避。
本申请实施例中通过对软件的软件源代码库进行扫描,识别所述软件中的代码文件所涉及到的开源软件模块,并基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议,来确定软件模块的风险,以及所述软件的风险。能够准确评估所述软件和开源软件模块的风险,避免不必要的损失。
本申请实施例中所涉及到的风险主要由引用的开源软件带来的商业风险,而非软件本身的漏洞安全风险,如果能够正确评估软件的风险,可以重新编写软件代码,以免带来商业上的损失,对软件产品上市有重要的意义;以免违反了软件开源授权协议可能面临着诉讼和赔偿的问题,以造成经济和名誉损失。
基于同样的发明构思,本申请实施例中还提供一种软件开源风险确定装置。参见图4,图4为本申请实施例中应用于上述技术的装置结构示意图。所述装置包括:扫描单元401、第一获取单元402、第一确定单元403、第二获取单元404、统计单元405和第二确定单元406;
扫描单元401,用于对软件的软件源代码库进行扫描,对第一获取单元402获取的每个代码文件的内容进行扫描;
第一获取单元402,当扫描单元401对软件的软件源代码库进行扫描时,获取代码文件;
第一确定单元403,用于当扫描单元401对获取的每个代码文件的内容进行扫描时,确定所述代码文件引用的开源软件模块;
第二获取单元404,用于基于预设的开源软件授权协议库获取第一确定单元403确定的开源软件模块对应的开源软件授权协议;
统计单元405,用于统计第二获取单元404中获取的指定的开源软件授权协议所对应的开源软件模块的个数;
第二确定单元406,用于根据第二获取单元404获取的开源软件授权协议,以及统计单元405统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
优选地,
第一确定单元403,具体用于根据代码文件的后缀确定开发所述代码文件的计算机语言;使用确定的计算机语言对应的关键词对所述代码文件进行内容扫描,确定所述代码文件引用的软件模块;基于开源软件模块库确定为开源软件模块的软件模块。
优选地,
第一确定单元403,进一步用于确定所述代码文件涉及到的开源软件模块时,获取所述开源软件模块式的版本号;
第二获取单元404,具体用于若第一确定单元403获取所述开源软件模块的版本号,则基于预设的开源软件授权协议库获取确定的开源软件模块的版本对应的开源软件授权协议。
优选地,
第二确定单元406,具体用于确定涉及gplv2或agpl协议的开源软件模块为高风险模块,不涉及第二版通用性公开许可证gplv2协议和库通用公共许可证agpl协议的开源软件模块为低风险模块;若统计涉及到gplv2协议和agpl协议的开源软件模块的个数的和大于预设值,则确定所述软件为高风险;否则,确定为低风险;其中,所述指定的开源软件授权协议包括:gplv2协议和agpl协议。
优选地,所述装置进一步包括:输出单元;
所述输出单元,用于将所述第二确定的单元确定的软件的风险,以及开源软件模块和风险的关联关系输出。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
在另一个实施例中,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述软件开源风险确定方法的步骤。
在另一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时可实现所述软件开源风险确定方法中的步骤。
图5为本发明实施例提供的电子设备的实体结构示意图。如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communicationsinterface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:
对软件的软件源代码库进行扫描,获取代码文件;
对每个代码文件的内容进行扫描,确定所述代码文件引用的开源软件模块;
基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议;
统计指定的开源软件授权协议所对应的开源软件模块的个数;
根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
1.一种软件开源风险确定方法,其特征在于,所述方法包括:
对软件的软件源代码库进行扫描,获取代码文件;
对每个代码文件的内容进行扫描,确定所述代码文件引用的开源软件模块;
基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议;
统计指定的开源软件授权协议所对应的开源软件模块的个数;
根据获取的开源软件授权协议,以及统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
2.根据权利要求1所述的方法,其特征在于,所述对每个代码文件的内容进行扫描,确定所述代码文件引用的开源软件模块,包括:
根据代码文件的后缀确定开发所述代码文件的计算机语言;
使用确定的计算机语言对应的关键词对所述代码文件进行内容扫描,确定所述代码文件引用的软件模块;
基于开源软件模块库确定代码文件引用的软件模块是否为开源软件模块。
3.根据权利要求2所述的方法,其特征在于,所述确定所述代码文件涉及到的开源软件模块时,所述方法进一步包括:
若获取所述开源软件模块的版本号,则所述基于预设的开源软件授权协议库获取确定的开源软件模块对应的开源软件授权协议,包括:
基于预设的开源软件授权协议库获取确定的开源软件模块的版本对应的开源软件授权协议。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述指定的开源软件授权协议包括:第二版通用性公开许可证gplv2协议和加强版通用公共许可证agpl协议;
所述根据获取的开源软件授权协议,以及统计的软件模块的个数确定软件模块的风险,以及所述软件的风险,包括:
确定涉及gplv2协议或agpl协议的开源软件模块为高风险模块,不涉及gplv2协议和agpl协议的开源软件模块为低风险模块;
若统计涉及到gplv2协议和agpl协议的开源软件模块的个数的和大于预设值,则确定所述软件为高风险;否则,确定为低风险。
5.根据权利要求4所述的方法,其特征在于,所述方法进一步包括:
将软件的风险,以及开源软件模块和风险的关联关系输出。
6.一种软件开源风险确定装置,其特征在于,所述装置包括:扫描单元、第一获取单元、第一确定单元、第二获取单元、统计单元和第二确定单元;
所述扫描单元,用于对软件的软件源代码库进行扫描,对所述第一获取单元获取的每个代码文件的内容进行扫描;
所述第一获取单元,当所述扫描单元对软件的软件源代码库进行扫描时,获取代码文件;
所述第一确定单元,用于当所述扫描单元对获取的每个代码文件的内容进行扫描时,确定所述代码文件引用的开源软件模块;
所述第二获取单元,用于基于预设的开源软件授权协议库获取所述第一确定单元确定的开源软件模块对应的开源软件授权协议;
所述统计单元,用于统计所述第二获取单元中获取的指定的开源软件授权协议所对应的开源软件模块的个数;
所述第二确定单元,用于根据所述第二获取单元获取的开源软件授权协议,以及所述统计单元统计的开源软件模块的个数确定开源软件模块的风险,以及所述软件的风险。
7.根据权利要求6所述的装置,其特征在于,
所述第一确定单元,具体用于根据代码文件的后缀确定开发所述代码文件的计算机语言;使用确定的计算机语言对应的关键词对所述代码文件进行内容扫描,确定所述代码文件引用的软件模块;基于开源软件模块库确定为开源软件模块的软件模块。
8.根据权利要求6所述的装置,其特征在于,
所述第一确定单元,进一步用于确定所述代码文件涉及到的开源软件模块时,获取所述开源软件模块式的版本号;
所述第二获取单元,具体用于若所述第一确定单元获取所述开源软件模块的版本号,则基于预设的开源软件授权协议库获取确定的开源软件模块的版本对应的开源软件授权协议。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5任一项所述的方法。
技术总结