CN109063421A - 一种开源许可证合规性分析与冲突性检测方法 - Google Patents
一种开源许可证合规性分析与冲突性检测方法 Download PDFInfo
- Publication number
- CN109063421A CN109063421A CN201810691548.3A CN201810691548A CN109063421A CN 109063421 A CN109063421 A CN 109063421A CN 201810691548 A CN201810691548 A CN 201810691548A CN 109063421 A CN109063421 A CN 109063421A
- Authority
- CN
- China
- Prior art keywords
- licensing
- information
- open source
- analysis
- project
- 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.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 82
- 238000001514 detection method Methods 0.000 title claims abstract description 17
- 239000000284 extract Substances 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000010276 construction Methods 0.000 claims abstract description 19
- 238000005516 engineering process Methods 0.000 claims abstract description 18
- 238000013459 approach Methods 0.000 claims abstract description 7
- 238000004445 quantitative analysis Methods 0.000 claims abstract description 5
- 208000011580 syndromic disease Diseases 0.000 claims description 39
- 238000000605 extraction Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 9
- 238000011156 evaluation Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 238000011161 development Methods 0.000 claims description 7
- 238000013139 quantization Methods 0.000 claims description 6
- 239000000203 mixture Substances 0.000 claims description 4
- 238000012098 association analyses Methods 0.000 claims description 3
- 238000011002 quantification Methods 0.000 claims description 3
- 230000006872 improvement Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000012141 concentrate Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004080 punching Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 210000001161 mammalian embryo Anatomy 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明是一种开源许可证合规性分析与冲突性检测方法,主要分为以下四个方面:许可证的识别方法:一种是采取模式匹配启发式算法的直接识别方式,另一种是采用代码匹配技术的间接识别方式。许可证信息提取和模型构建:作为许可证合规性分析和冲突性识别定位的前提,在项目中收集比对许可证协议关联的特征信息。许可证合规性定量分析:以许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方。许可证冲突识别定位:利用许可证仓库,从许可证的名称、权利、条件和限制四个方面识别混源项目与开源库标准开源软件之间许可证的冲突,再定位到具体的开源项目和具***置。
Description
技术领域
本发明涉及一种开源许可证合规性分析与冲突性检测方法,属于开源许可证特征分析领域。
背景技术
开源软件最初起源于20世纪70年代,美国MIT的学生经常会写一些软件自由分发,没有人想到软件的权利,更谈不上商业行为,这是开源运动的萌芽时期。直到80年代中期,Richard Stallman发起了GUN项目,并创办了自由软件基金会,从而揭开了开源软件的帷幕。
目前开源软件不仅被大量应用于开源社区,同时作为商业软件的一部分而广泛使用。开源正在改***件的构建方式,它使得开源***中的组建能够被重用。因为这种基于开源代码的重用可能会导致许可证的冲突,所以企业的法务部门有必要对它进行监控。而开源许可证兼容性检测能够确保企业在对开源代码重用时满足许可证的要求,控制并降低企业承担的法律风险。因为不同的许可证代表着开源软件使用者所具有的不同的权利和义务,所以企业在基于开源软件进行商业开发时,需要对软件的开源许可证进行研究,了解其许可证对后续开发和使用是否有限制。
近几年,由于开源许可证而侵权的问题数不胜数,例如微软的window7就因为下载软件使用了GPLv2的ImageMaster而不得不开放源码。因此对于软件开发商乃至整个开源社区,检测软件包中的开源许可证是否兼容变得尤为重要,目前国外虽有一些半自动化开源工具能自动识别混源软件的开源许可证信息,但这些工具不够完善,不能对许可证兼容性冲突进行检测,所以我们有必要对许可证兼容性检测工具进行研究。
发明内容
随着开源软件及开源社区的发展,开源开发逐渐成为企业的首选,这种开发方式虽然促进了开源软件重用与分发,但同时也伴随着许可证冲突的挑战,这种冲突在携有多种许可证的大型软件***中显得尤为明显。为了解决上述问题,我们意在开发出一种开源许可证自动分析***,帮助企业管理其日益复杂的软件及其开源许可证,验证许可证的合规性,帮助企业在软件开发生命周期的早期发现软件的合规性问题,控制并降低企业承担的法律风险。
为了实现上述目的,本发明的技术方案如下:一种开源许可证合规性分析和冲突性检测方法,所述方法包括以下步骤:
第一步,许可证仓库的构建
通过分析十种主流的开源许可协议,构建许可证协议统一描述模型,基于许可证协议统一描述模型构建许可证仓库,其中包括对许可证条款的分析和许可证之间的兼容关系。将常见的十种开源软件许可证基于名称、权利、条件和限制四个方面进行收集与分类,存于许可证仓库中。
第二步,许可证的识别
许可证特征分析主要分为两个方面,一个方面是采取模式匹配启发式算法的直接识别方式,另一个方面是采用代码匹配技术的间接识别方式。
2.1许可证类型的直接识别是基于混源软件的软件包许可证信息,利用许可证仓库,采用模式匹配的启发式算法来识别其中的许可证类别。
2.2许可证类型的间接识别是基于软件包源代码,利用开源库匹配技术,将项目软件包与开源库标准软件进行匹配,从而推断混源软件中的软件包许可证类别。
第三步,许可证信息提取与模型构建
基于许可证特征树技术,从文件、目录、软件包和项目四个层级自底向上收集处理许可证关联特征信息,形成项目许可证特征树,并将对应树节点收集到的差异信息存放至项目许可证差异库中。项目许可证特征树和项目许可证差异库中的信息主要源于混源项目中许可证的声明信息和源文件的修改信息。许可证信息提取与模型构建的过程即为项目许可证特征分析的过程,主要分为特征信息提取、特征信息合并、生成软件包树和项目级特征提取四个步骤。
3.1特征信息提取:项目许可证特征信息提取是从文件级出发,利用许可证特征提取器从许可证文件和普通文件的注释中提取许可证特征信息,收集并记录许可证种类、数量和分布。文件级许可证差异性信息主要是文件层级中不符合开源软件规范的信息。
3.2特征信息合并:目录级许可证特征信息的提取和文件级许可证特征信息的提取类似,只是基于更高层次的目录级去提取信息。目录级许可证差异信息提取与文件级许可证差异信息提取类似,从更高层次的目录级提取不符合开源软件规范的信息。
3.3生成软件包树:软件包层级许可证信息是对目录层级许可证特征信息的收集归纳,软件包层级相对于目录层级层次结构更加清晰,软件包层级许可证特征信息同时作为项目层级许可证特征信息的信息来源。软件包的差异信息同样也是对基于目录级的差异信息的归纳。
3.4项目级特征提取:基于对混源项目的文件、目录、软件包三个层级许可证特征信息的分析,分析出的信息不仅包括许可证种类,数量及分布,而且在此基础上构建项目许可证特征树。利用许可证识别技术,结合开源库搜索技术,识别出项目中软件包对应的许可证类别,开源软件名称,并更新到项目软件包树中。同时将软件包目录和标准开源软件目录之间许可证声明信息和代码修改信息进行比对,将两者的差异信息存储到项目许可证差异库中,用于混源软件项目中许可证的特征信息检索及特征关联分析,并以此作为许可证进行合规性分析和冲突性分析的基础。
第四步,许可证合规性分析
合规性定量分析的对象是混源项目本身和混源项目所使用的许可证协议。分析的思路是以使用的许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方,主要包括以下几个方面:许可证协议标准的量化、许可证关联特征信息的收集与比对和许可证合规性的分析。
4.1许可证协议标准的量化:对于许可证协议标准的量化问题,通过对十种许可证条款的分析,将许可证的条款分为名称、权利、限制、条件四个纬度。各纬度下又有不同的条目,不同许可证协议种类所具有的约束则不尽相同。经过分析,“条件”维度下的“许可证和版本提示”条目是识别许可证协议种类的关键。许可证协议标准的量化结果按照协议统一描述模型存放在许可证仓库中。
4.2许可证关联特征信息的收集与比对:基于许可证特征树和差异库模型对许可证协议关联的特征信息进行整合,完整地保存了整个混源项目许可证特征信息,并根据需要从文件、目录、软件包和项目层级进行扩展。
4.3许可证合规性分析过程:许可证合规性分析是基于OMM模型评估树对许可证合规性条款和特征信息进行分析,具体如下,首先对项目许可证特征树和许可证差异库模型进行信息抽取,然后基于模型评估树关联到阀值和获取处理策略,再通过合规性分析引擎执行处理策略,并基于设置的阀值生成对应项目许可证集的评估结果。
第五步,许可证冲突识别和定位
许可证冲突是指许可证之间、混源项目的许可证和开源库标准开源软件之间的不兼容的情况。混源项目的许可证和开源库标准开源软件之间的冲突是基于开源库匹配的结果对许可证文件和版权文件的冲突情况进行分析。许可证冲突识别定位同样依赖于项目许可证特征树和许可证差异库模型。冲突的定位是通过在许可证特征树标注特征位置,并根据链接跳转到项目代码文件或目录的方式来实现。通过对混源项目版本库历史信息的提取,对项目开发生命周期内的许可证冲突的情况进行度量,绘制冲突趋势图,以便对许可证冲突风险的管控。
相对于现有技术,本发明的有益效果如下:1)该技术方案提出支持多类型多语言多结构的开源代码统一描述模型和支持多种协议的开源协议的统一描述模型,所提出的模型用统一的方式来描述开源代码和开源协议的详细信息,不仅有利于开源代码和开源协议在本***中的扩展,也方便了特征提取方法、特征度量方法等对代码和协议的统一处理,提高了灵活性和效率;目前关于代码组成分析的研究主要集中在对代码的特征提取和比对算法、开源协议的合规性分析等方面,而从多类型多语言多结构多协议的角度进行统一描述的研究,还没有见到有关文献报导。2)该技术方案提出基于项目许可证特征树和许可证差异库的合规性定量分析,与国外同类工具相比,本项目利用项目许可证特征树和许可证差异库的许可证特征信息,对许可证条款的检查更全面,不仅检查了许可证文本和版权声明信息,还检查了在开源代码上做的代码变更,而且通过输入项目信息的方式覆盖了开源软件使用方式的合规性检查。结合项目许可证特征树分析合规性问题类别、严重级别和问题定位信息,同时给出修改建议;3)该技术方案提出基于项目许可证特征树和许可证差异库的冲突性分析,与国外同类工具相比,基于项目许可证特征树和许可证差异库的许可证特征信息,本项目增加了对代码变更场景的冲突识别并定位到冲突位置,结合项目许可证特征树分析冲突类别、影响范围、严重级别和具体定位信息,同时给出修改建议,方便对冲突做进一步地分析。
附图说明
图1是开源许可证自动分析***的总体框架图;
图2是许可证特征分析图;
图3是许可证合规性分析流程图;
图4是许可证冲突识别定位流程图;
图5是许可证兼容关系图;
图6是混源项目和开源库软件之间的冲突检测流程图;
图7是许可证冲突趋势分析流程图;
图8是许可证分析模型图;
图9是许可证合规性分析引擎图;
图10是许可证之间冲突识别流程图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
参照图1至图10,本发明所述方法包含以下步骤:
第一步,许可证仓库的构建,
通过分析十种主流的开源许可协议,并基于许可证协议统一描述模型构建许可证仓库,其中包括对许可证条款和许可证之间兼容关系的分析,将常见的十种开源软件许可证针对名称、权利、条件和限制四个方面进行收集与分类,存储在许可证仓库中。
第二步,许可证的识别,
许可证特征分析主要分为两个方面,一个方面是采取模式匹配启发式算法的直接识别方式,另一个方面是采用代码匹配技术的间接识别方式。
2.1许可证类型的直接识别是基于混源软件的软件包许可证信息,利用许可证仓库,采用模式匹配的启发式算法来识别其中的许可证类别。
2.2许可证类型的间接识别是基于软件包源代码,利用开源库匹配技术,将软件包与开源库标准开源软件进行匹配,从而推断出混源软件中的软件包许可证类别和开源软件名称。
第三步,许可证信息提取与模型构建,
通过采用许可证特征树技术,从文件、目录、软件包和项目四个层级自底向上收集处理许可证关联特征信息,形成项目许可证特征树,并将对应树节点收集的差异信息存放到项目许可证差异库中。项目许可证特征树和项目许可证差异库的信息主要源于混源项目中所收集到的许可证声明信息和源文件修改信息。许可证信息提取与模型构建的过程即为项目许可证特征分析的过程,分为特征信息提取、特征信息合并、生成软件包树和项目级特征提取四个步骤。
3.1特征信息提取:项目许可证特征信息提取是从文件级出发,利用许可证特征提取器从许可证文件和普通文件注释中提取许可证特征信息,并记录许可证种类、数量和分布。文件级许可证差异性信息主要是从文件层级提取不符合开源软件规范的信息。
3.2特征信息合并:目录级许可证特征信息的提取和文件级许可证特征信息的提取类似,只是在更高层次的目录级去提取信息。目录级许可证差异信息提取与文件级许可证差异信息提取类似,从更高层次的目录级提取不符合开源软件规范的信息。
3.3生成软件包树:软件包层级许可证信息是对目录层级许可证特征信息的收集归纳,软件包层级相对于目录层级层次结构更加清晰,软件包层级许可证特征信息同时作为项目层级许可证特征信息的信息来源。软件包的差异信息同样也是对目录级的差异信息的归纳总结。
3.4项目级特征提取:基于对混源项目的文件、目录、软件包三个层级许可证特征信息的分析,分析出的信息不仅包括许可证种类,数量及分布,而且在此基础上构建项目许可证特征树。利用许可证识别技术,结合开源库搜索技术,识别出项目中软件包对应的许可证类别,开源软件名称,并更新到项目软件包树中。同时将软件包目录和标准开源软件目录之间许可证声明信息和代码修改信息进行比对,将两者的差异信息存储到项目许可证差异库中,用于混源软件项目中许可证的特征信息检索及特征关联分析,并以此作为许可证进行合规性分析和冲突性检测的基础。
第四步,许可证合规性分析,
合规性定量分析的对象是混源项目本身和混源项目所使用的许可证协议。分析的思路是以使用的许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方,主要包括以下几个方面:许可证协议标准的量化、许可证关联特征信息的收集与比对和许可证合规性的分析。
4.1许可证协议标准的量化:对于许可证协议标准的量化问题,通过对十种许可证条款的分析,将许可证的条款分为名称、权利、限制、条件四个纬度。每个纬度下又有不同的条目,不同的许可证协议种类所具有的约束条件则不尽相同。经分析,“条件”维度下的“许可证和版本提示”条目是识别许可证协议种类的关键。许可证协议标准的量化结果按照协议统一描述模型存储于许可证仓库中。
4.2许可证协议关联特征信息的收集与比对:基于许可证特征树和差异库模型对许可证协议关联的特征信息进行整合,完整地保存了整个混源项目许可证特征信息,并根据需要从文件、目录、软件包和项目层级进行扩展。
4.3许可证合规性的分析:许可证合规性分析过程是基于OMM模型评估树对许可证合规性条款和特征信息进行分析,具体如下,首先对项目许可证特征树和许可证差异库模型信息的抽取,然后基于模型评估树关联到阀值和可执行的处理策略,再通过合规性分析引擎执行处理策略,并基于设置的阀值生成对应项目许可证集的评估结果。
第五步,许可证冲突识别和定位
许可证冲突是指许可证之间、混源项目的许可证和开源库标准开源软件之间不兼容的情况。混源项目的许可证和开源库标准开源软件之间的冲突检测是基于开源库匹配的结果对许可证文件和版权文件数量和内容的冲突情况进行分析。许可证冲突识别定位同样依赖于项目许可证特征树和许可证差异库模型。冲突的定位是通过在许可证特征树标注位置,并根据链接跳转到项目代码文件或目录的方式来实现。通过对混源项目版本库历史信息的提取,对项目开发生命周期内的许可证冲突的情况进行度量,绘制冲突趋势图,方便对许可证冲突风险的管控。
作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,许可证信息提取和模型构建是许可证合规性分析和冲突性识别定位的前提,它要解决的问题是在项目中收集比对许可证协议关联的特征信息。首先从许可证协议标准的角度看,各个许可证条目有不同的特点,比如“商用”条目,属于项目管理决策层提供的信息,不需要对混源项目本身做分析;而对于“许可证和版本提示”、“修改代码许可证不变”条目是可以量化,但是量化的方式需要结合混源项目的特点和条目本身的特征信息综合考虑,这部分是进行合规性分析的关键环节。在一个混源项目中,使用什么许可证协议是与项目所使用的开源软件绑定的。开源软件的分布是不确定的,对开源软件的使用方式(新增、修改和删减代码等)也是不确定的,这就导致混源项目中开源软件对应的许可证特征信息的不确定性。因此,解决如何收集混源项目中于许可证协议关联的特征信息的关键是如何分清混源项目中不同许可证协议的作用范围。这个问题贯穿于合规性分析和冲突识别定位的整个过程,并且需要在不“破坏”许可证协议作用范围边界的情况下收集许可证关联的特征信息。这个作用范围是许可证协议对应的混源软件中的具体的目录,也是开源软件的目录。基于此,将混源软件中的不同许可证协议、同一许可证协议的不同位置区分开来,就可以对混源软件中的许可证协议关联特征进行有效地收集,继而合并,再进一步的分析。
作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,项目许可证特征信息的提取是在文件级的纬度进行。利用许可证特征提取器提取混源软件中的许可证特征信息和差异信息,最终用于项目许可证特征树的生成。其中,许可证特征信息主要包括混源项目中表示许可证类型的信息,分为文件级、目录级、软件包级和项目级四个方面,许可证差异信息主要包括项目中表示和许可证具体条款、匹配到的标准开源项目不一致的信息,同样分为文件级、目录级、软件包级和项目级。本小节主要指文件级的特征信息和差异信
作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,文件级许可证特征信息包含五个方面,文件注释内容、文件作者名、文件日期、文件电子邮箱和文件类别。文件级许可证差异信息包含三个方面,文件缺少版权注释、文件缺少作者信息和文件缺少日期。
作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,目录级许可证特征信息包含四个方面,目录下所有文件共有版权声明信息、目录下是否存在许可证文件、目录许可证文件名称和目录许可证文件内容。目录级许可证差异信息包含两个方面,目录下缺少版权注释文件列表和目录下文件注释。
作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,软件包级许可证特征信息包含五个方面,目录类型、许可证内容、版权内容、目录深度和文件个数。软件包级许可证差异信息包含两个方面,嵌套目录中包含多个许可证和目录中无版权信息许可证列表。
作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,项目级许可证特征信息包含四个方面,开源软件包列表、开源软件包名称、开源软件包对应许可证类别和开源软件包版权人列表。项目级许可证差异信息包含一个方面,闭源软件匹配到开源软件标记。
作为本发明的一种改进,所述许可证合规性分析的一个方面,本方案合规性分析是基于OMM模型实现的。QualiPSo是中欧合作的提高开源软件质量的项目,该项目提出了OMM(Open Source Maturity Model)模型。OMM所要验证的对于开源软件质量最具影响、最重要和用户最认可的质量因子称为信任因子。OMM模型将每个TWE分解为一个或多个目标,每个目标再细化为一个或多个具体实践,即实践是达成目标的动作,为了达成具体目标,必须要考虑所有的具体实践,而且每项实践设置了阀值,最后计算各项实践的分数达成标准则通过,这样就形成了OMM的树形结构。该模型把开源软件许可证作为影响开源软件质量的重要因素之一。结合许可证合规性分析场景,我们利用OMM模型中的LCS,将其分解为3个目标,分别是权利、条件和限制。每个目标下再分具体的实践。根据OMM树形结构建立许可证合规性的模型评估树,树的根节点是许可证合规性;下一层节点是三个目标,分别是权利,条件和限制,每一层目标的下一层节点是实现目标的具体实践,关联实践对应的关键执行因子(Key Performance Indicator,KPI),并设定相应的阀值和处理策略,如此逐层构建,最终形成许可证合规性的模型评估树。其中关键执行因子KPI关联阀值和执行策略。
作为本发明的一种改进,所述许可证合规性分析的一个方面,基于许可证声明信息的合规性分析是从项目许可证特征树和许可证差异库模型中搜索许可证声明相关的特征信息和许可证差异信息。其中许可证声明信息合规性分析项列表主要包含以下几个方面,文件数量、许可证版权、许可证版权个数、许可证文件、许可证文件个数、缺失版权文件数、错误版权文件数、许可证作者和许可证作者数量。
作为本发明的一种改进,所述许可证合规性分析的一个方面,基于项目信息(手工录入)的合规性分析采用先由版本管理员(PMO)或项目经理录入,再与许可证仓库信息比对的方式进行处理。如下表格是整理出的合规性分析项信息,涉及到项目经理或PMO在项目立项阶段给出的项目定位,包括项目用途,使用范围等,本***采用配置输入的方式手工导入,也可以从版本管理库(如SVN,GIT)中读取。针对识别出的许可证类别要求逐一比对分析项。其中基于项目信息的合规性分析项主要包括以下几个方面,商用、专利使用、开放源代码、网络分发、免责、商标使用和担保。
作为本发明的一种改进,所述许可证合规性分析的一个方面,基于许可证修改信息的合规性分析从项目许可证特征树和许可证差异库模型中搜索混源项目源代码修改的特征信息和许可证差异信息,并基于许可证特征树结构展示分析结果。其中基于许可证修改信息的合规性分析项主要包括以下几个方面,被修改文件、修改内容、被修改文件个数、新增文件、新增文件内容、新增文件个数、删除文件、删除文件内容、删除文件个数和修改说明文件。
作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,许可证之间的冲突指当将两个不同许可证的开源软件合并成一个更大的模块时,这两个开源软件的许可证必须允许这样做,这种情况称它们是兼容的;反之,如果没有办法同时满足这两个许可证,那它们是不兼容的。如果不兼容的两个许可证在同一个混源代码的模块中出现,就称它们是冲突的。比如许可证GPLv2和MPL 2.0是相互冲突的。因为GPL v2许可证应用于整个模块,当给一个模块增加代码时,新增的代码变成模块的一部分,也必须被授权为GPL许可证。但MPL 2.0不允许变更许可证,因此MPL 2.0许可证的开源代码不能被用于GPL许可证的模块。从这个例子可以看出,许可证之间的冲突实际是指许可证协议条款的冲突。因此,许可证之间的冲突分析总体思路是:利用许可证仓库中的许可证兼容信息,通过遍历项目许可证特征树中每条边进行许可证冲突性对比。并基于许可证特征树结构展示分析结果。
作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,许可证之间冲突识别流程包含以下几个步骤,第一步,通过遍历项目许可证特征树生成项目嵌套许可证集。许可证特征树的根结点是项目名称,其他结点是许可证类别名。许可证特征树上的每条边可以看成一个存在嵌套关系的许可证对。取出许可证特征树上的每一条边作为元素存放到嵌套许可证集中,同时记录许可证在特征树上的位置用于冲突定位。许可证特征树中边的条数就是嵌套许可证集元素的个数。第二步,通过遍历许可证兼容关系图生成兼容许可证集。如上图,通过遍历关系图,取出每一条弧作为元素存放到兼容许可证集中;由于兼容关系的传递性,首尾相连的两条弧对应的弧尾和弧头也是兼容的,同样存放到兼容许可证集中。第三步,循环取出嵌套许可证集中的许可证对。在兼容许可证集上查找该许可证对,如果查找成功,说明这个许可证对中对应的两个许可证使用是兼容的;反之这个许可证对中对应的两个许可证使用是冲突的,记录许可证对到冲突许可证集中。第四步,输出冲突许可证集中的许可证对,并根据许可证对上的标记定位到许可证特征树的位置,找出冲突冲突许可证在混源项目中到具***置。其中许可证之间的冲突性分析项主要包含以下几点,兼容许可证对、兼容许可证个数、冲突许可证对和冲突许可证个数。
作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,混源项目和开源库软件之间的冲突是在开源库匹配技术的基础上,对匹配的开源软件进行分析,通过目录比较和内容匹配的方式,识别许可证文件和版权文件的冲突情况,可识别的冲突类型主要包含以下几点,无许可证和版权文件、存在许可证和版权文件但文件内容缺失和存在许可证和版权文件但文件内容被修改。
作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,冲突趋势图通过对混源项目版本库历史信息的提取,可以对项目开发生命周期内的各时间段许可证冲突的情况进行度量,绘制冲突趋势图,方便对许可证冲突风险的管控。冲突趋势的处理流程包含以下几个步骤,第一步,循环遍历混源项目版本管理库中历史构建版本,如果遍历完成,跳转到第五步,如果没有,进行第二步骤操作。第二步,从版本管理库中取出历史构建版本包,即混源项目完整的源码。第三步,对历史构建版本进行项目许可证分析,生成项目许可证特征树和许可证差异库的模型,并进行冲突性分析。第四步,从许可证分析结果中收集许可证冲突指标值,如许可证冲突个数。第五步,基于历史构建版本的创建时间绘制许可证冲突趋势图。
需要说明的是上述实施例仅仅是本发明的较佳实施例,并没有用来限定本发明的保护范围,在上述技术方案的基础上做出的等同替换或者替代均属于本发明的保护范围。
Claims (6)
1.一种开源许可证合规性分析与冲突性检测方法,其特征在于,所述方法包括以下步骤:
第一步,许可证仓库的构建;
第二步,许可证的识别;
第三步,许可证信息提取与模型构建;
第四步,许可证合规性分析;
第五步,许可证冲突识别与定位。
2.根据权利要求1所述的开源许可证合规性分析与冲突性检测方法,其特征在于,所述第一步,许可证仓库的构建,具体如下,分析十种主流的开源许可协议,基于许可证协议统一描述模型构建许可证仓库,包括对许可证的条款和许可证之间的兼容关系进行分析,将常见的十种开源软件许可证基于名称、权利、条件和限制四个方面进行归纳与分类,存储于许可证仓库中。
3.根据权利要求2所述的开源许可证合规性分析与冲突性检测方法,其特征在于,第二步,许可证的识别,具体如下,
许可证特征分析主要分为两个方面,一个方面是采取模式匹配启发式算法的直接识别方式,另一个方面是采用代码匹配技术的间接识别方式;
2.1直接识别方式是基于混源软件的软件包许可证信息,利用许可证仓库,采用模式匹配的启发式算法来识别其许可证类型;
2.2间接识别方式是基于混源软件的源代码,利用开源库匹配技术,将软件包与开源库标准软件进行匹配,从而推断混源软件中软件包许可证类型。
4.根据权利要求3所述的开源许可证合规性分析与冲突性检测方法,其特征在于,第三步许可证信息提取与模型构建具体如下,基于许可证特征树技术,从文件、目录、软件包和项目四个层面自底向上收集并处理许可证关联特征信息,形成项目许可证特征树,并将对应树节点收集的差异信息存放到项目许可证差异库中,项目许可证特征树和项目许可证差异库的信息主要来源于混源项目中许可证声明信息和源文件修改信息,许可证信息提取与模型构建的过程即为项目许可证特征分析的过程,其主要分为特征信息提取、特征信息合并、生成软件包树和项目级特征提取四个方面,具体如下,
3.1特征信息提取:项目许可证特征信息提取是从文件层级出发,利用许可证特征提取器从许可证文件和普通文件注释中提取许可证特征信息,记录许可证种类、数量和分布。文件级许可证差异性信息主要从文件层级提取不符合开源软件规范的信息;
3.2特征信息合并:目录级许可证特征信息的提取与文件级许可证特征信息的提取类似,只是基于更高层次的目录级去提取信息。目录级许可证差异信息提取与文件级许可证差异信息提取类似,从更高层次的目录级提取不符合开源软件规范的信息;
3.3生成软件包树:软件包层级许可证信息是对目录层级许可证特征信息的收集归纳,软件包层级相对于目录层级层次结构更加清晰,软件包层级许可证特征信息同时作为项目层级许可证特征信息的信息来源,软件包的差异信息同样也是基于对目录级的差异信息的归纳;
3.4项目级特征提取:基于对混源项目的文件、目录、软件包三个层级许可证特征信息的分析,分析出的信息不仅包括许可证种类,数量及分布,而且在此基础上构建项目许可证特征树。利用许可证识别技术,并结合开源库搜索技术,识别出项目中软件包对应的许可证类别,开源软件名称,并更新到项目软件包树中,同时将软件包目录和标准开源软件目录之间许可证声明信息和代码修改信息进行比对,将两者的差异信息存储到项目许可证差异库中,用于混源软件项目中许可证的特征信息检索及特征关联分析,并以此作为许可证进行合规性分析和冲突性分析的基础。
5.根据权利要求4所述的开源许可证合规性分析与冲突性检测方法,其特征在于,所述第四步,许可证合规性分析具体如下,
合规性定量分析的对象是混源项目本身和混源项目所使用的许可证协议,分析的思路是以使用的许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方,主要包括以下几个方面:许可证协议标准的量化、许可证关联特征信息的收集与比对和许可证合规性的分析,具体如下:
4.1许可证协议标准的量化:对于许可证协议标准的量化问题,通过对十种许可证条款的分析,将许可证的条款分为名称、权利、限制、条件四个纬度,每个纬度下又有不同的条目,不同许可证协议所具有的约束则不尽相同,经分析“条件”维度下的“许可证和版本提示”条目是识别许可证协议种类的关键,许可证协议标准的量化结果按照协议统一描述模型存放在许可证仓库中;
4.2许可证关联特征信息的收集与比对:基于许可证特征树和许可证差异库模型对许可证关联特征信息进行整合,完整地保存了整个混源项目许可证特征信息,并可根据需要从文件、目录、软件包和项目层级进行扩展;
4.3许可证合规性的分析:许可证合规性分析是基于OMM模型评估树对许可证合规性条款和特征信息进行分析,具体如下,首先对项目许可证特征树和许可证差异库模型进行信息提取,然后基于模型评估树设置阀值和获取处理策略,再通过合规性分析引擎执行处理策略,并基于设置的阀值生成对应项目许可证集的评估结果。
6.根据权利要求5所述的开源许可证合规性分析与冲突性检测方法,其特征在于,所述第五步,许可证冲突识别和定位具体如下:许可证冲突是指许可证之间、混源项目的许可证和开源库标准开源软件之间的不兼容的情况,混源项目的许可证和开源库标准开源软件之间的冲突检测是基于开源库匹配的结果对许可证文件和版权文件的冲突情况进行分析。许可证冲突的识别定位同样依赖于许可证特征树和许可证差异库模型,冲突的定位是通过在许可证特征树中标注特征位置,并根据链接跳转到具体项目代码的方式来实现,通过对混源项目版本库历史信息的提取,对项目开发生命周期内的许可证冲突的情况进行度量,绘制冲突趋势图,以便对许可证冲突风险进行管控。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810691548.3A CN109063421B (zh) | 2018-06-28 | 2018-06-28 | 一种开源许可证合规性分析与冲突性检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810691548.3A CN109063421B (zh) | 2018-06-28 | 2018-06-28 | 一种开源许可证合规性分析与冲突性检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109063421A true CN109063421A (zh) | 2018-12-21 |
CN109063421B CN109063421B (zh) | 2022-03-04 |
Family
ID=64817818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810691548.3A Active CN109063421B (zh) | 2018-06-28 | 2018-06-28 | 一种开源许可证合规性分析与冲突性检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109063421B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828780A (zh) * | 2018-12-28 | 2019-05-31 | 北京奇安信科技有限公司 | 一种开源软件的识别方法及装置 |
CN110990256A (zh) * | 2019-10-29 | 2020-04-10 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
CN111199022A (zh) * | 2019-12-31 | 2020-05-26 | 北京月新时代科技股份有限公司 | 一种许可管理方法、装置、电子设备及存储介质 |
CN111274548A (zh) * | 2020-01-17 | 2020-06-12 | 深圳开源互联网安全技术有限公司 | 一种开源软件许可合规的确定方法及装置 |
CN111291331A (zh) * | 2019-06-27 | 2020-06-16 | 北京关键科技股份有限公司 | 混源文件许可冲突检测方法 |
CN111400672A (zh) * | 2020-03-18 | 2020-07-10 | 中国信息安全测评中心 | 一种开源软件的监测方法及装置 |
CN111625466A (zh) * | 2020-06-01 | 2020-09-04 | Oppo广东移动通信有限公司 | 一种软件检测方法、装置及计算机可读存储介质 |
CN113268713A (zh) * | 2021-06-03 | 2021-08-17 | 西南大学 | 基于软件依赖的开源软件许可证选择方法 |
CN113268714A (zh) * | 2021-06-03 | 2021-08-17 | 西南大学 | 一种开源软件许可证条款自动提取方法 |
CN113282965A (zh) * | 2021-05-20 | 2021-08-20 | 苏州棱镜七彩信息科技有限公司 | 开源许可证和版权信息篡改的检测方法及*** |
CN115080924A (zh) * | 2022-07-25 | 2022-09-20 | 南开大学 | 一种基于自然语言理解的软件许可证条款抽取方法 |
CN116302042A (zh) * | 2023-05-25 | 2023-06-23 | 南方电网数字电网研究院有限公司 | 协议要素内容推荐方法、装置和计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104969230A (zh) * | 2013-01-30 | 2015-10-07 | 惠普发展公司,有限责任合伙企业 | 用于确定软件许可之间的兼容性的***及方法 |
CN106934254A (zh) * | 2017-02-15 | 2017-07-07 | ***股份有限公司 | 一种开源许可证的分析方法及装置 |
-
2018
- 2018-06-28 CN CN201810691548.3A patent/CN109063421B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104969230A (zh) * | 2013-01-30 | 2015-10-07 | 惠普发展公司,有限责任合伙企业 | 用于确定软件许可之间的兼容性的***及方法 |
CN106934254A (zh) * | 2017-02-15 | 2017-07-07 | ***股份有限公司 | 一种开源许可证的分析方法及装置 |
Non-Patent Citations (1)
Title |
---|
许洪波等: "开源许可证检测***的研究", 《计算机应用研究》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828780A (zh) * | 2018-12-28 | 2019-05-31 | 北京奇安信科技有限公司 | 一种开源软件的识别方法及装置 |
CN109828780B (zh) * | 2018-12-28 | 2022-09-16 | 奇安信科技集团股份有限公司 | 一种开源软件的识别方法及装置 |
CN111291331A (zh) * | 2019-06-27 | 2020-06-16 | 北京关键科技股份有限公司 | 混源文件许可冲突检测方法 |
CN111291331B (zh) * | 2019-06-27 | 2022-02-22 | 北京关键科技股份有限公司 | 混源文件许可冲突检测方法 |
CN110990256B (zh) * | 2019-10-29 | 2023-09-05 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
CN110990256A (zh) * | 2019-10-29 | 2020-04-10 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
CN111199022A (zh) * | 2019-12-31 | 2020-05-26 | 北京月新时代科技股份有限公司 | 一种许可管理方法、装置、电子设备及存储介质 |
CN111199022B (zh) * | 2019-12-31 | 2022-05-03 | 北京月新时代科技股份有限公司 | 一种许可管理方法、装置、电子设备及存储介质 |
CN111274548A (zh) * | 2020-01-17 | 2020-06-12 | 深圳开源互联网安全技术有限公司 | 一种开源软件许可合规的确定方法及装置 |
CN111400672A (zh) * | 2020-03-18 | 2020-07-10 | 中国信息安全测评中心 | 一种开源软件的监测方法及装置 |
CN111625466A (zh) * | 2020-06-01 | 2020-09-04 | Oppo广东移动通信有限公司 | 一种软件检测方法、装置及计算机可读存储介质 |
CN111625466B (zh) * | 2020-06-01 | 2023-11-10 | Oppo广东移动通信有限公司 | 一种软件检测方法、装置及计算机可读存储介质 |
CN113282965A (zh) * | 2021-05-20 | 2021-08-20 | 苏州棱镜七彩信息科技有限公司 | 开源许可证和版权信息篡改的检测方法及*** |
CN113268713A (zh) * | 2021-06-03 | 2021-08-17 | 西南大学 | 基于软件依赖的开源软件许可证选择方法 |
CN113268714A (zh) * | 2021-06-03 | 2021-08-17 | 西南大学 | 一种开源软件许可证条款自动提取方法 |
CN115080924B (zh) * | 2022-07-25 | 2022-11-15 | 南开大学 | 一种基于自然语言理解的软件许可证条款抽取方法 |
CN115080924A (zh) * | 2022-07-25 | 2022-09-20 | 南开大学 | 一种基于自然语言理解的软件许可证条款抽取方法 |
CN116302042A (zh) * | 2023-05-25 | 2023-06-23 | 南方电网数字电网研究院有限公司 | 协议要素内容推荐方法、装置和计算机设备 |
CN116302042B (zh) * | 2023-05-25 | 2023-09-15 | 南方电网数字电网研究院有限公司 | 协议要素内容推荐方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109063421B (zh) | 2022-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109063421A (zh) | 一种开源许可证合规性分析与冲突性检测方法 | |
US10162610B2 (en) | Method and apparatus for migration of application source code | |
Fan et al. | Improving data quality: Consistency and accuracy | |
US20180189487A1 (en) | Behavior specification, finding main, and call graph visualizations | |
US9128804B2 (en) | Systems and/or methods for identifying and resolving complex model merge conflicts based on atomic merge conflicts | |
US10936555B2 (en) | Automated query compliance analysis | |
CA2673422C (en) | Software for facet classification and information management | |
Wagner et al. | Problem characterization and abstraction for visual analytics in behavior-based malware pattern analysis | |
CN104699611A (zh) | 一种基于开源软件缺陷代码修改模式的缺陷信息提取方法 | |
CN112084309A (zh) | 基于开源软件图谱的许可证选取方法和*** | |
Reis et al. | A rationale for data governance as an approach to tackle recurrent drawbacks in open data portals | |
CN115033894A (zh) | 一种基于知识图谱的软件组件供应链安全检测方法及装置 | |
CN115658080A (zh) | 一种软件开源代码成分的识别方法及*** | |
CN111967437A (zh) | 文本识别方法、装置、设备及存储介质 | |
CN116541887B (zh) | 一种大数据平台数据安全保护方法 | |
Karnalim et al. | Layered similarity detection for programming plagiarism and collusion on weekly assessments | |
Anda et al. | A Safety Data Model for data analysis and decision making | |
CN115952160B (zh) | 一种数据盘点方法 | |
Kicsi et al. | Information retrieval based feature analysis for product line adoption in 4gl systems | |
CN116257877A (zh) | 一种面向隐私计算的数据分类分级方法 | |
Polášek et al. | Information and knowledge retrieval within software projects and their graphical representation for collaborative programming | |
Becker et al. | A criteria catalogue for evaluating business process pattern approaches | |
CN114201498A (zh) | 一种数据处理方法、装置、电子设备及可读存储介质 | |
Marinescu et al. | A meta-model for enterprise applications | |
CN105740722B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |