首页 / 专利库 / 软件 / 命令行界面 / 基于修改日志的软件包来源自动分析方法

基于修改日志的软件包来源自动分析方法

阅读:299发布:2020-05-19

专利汇可以提供基于修改日志的软件包来源自动分析方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于 修改 日志的 软件 包来源自动分析方法,步骤包括:1)获取待分析的目标软件源代码包;2)针对目标软件源代码包生成包含开发者信息的修改日志;3)基于修改日志中记录的开发者信息、修改项次数及预设的研发团队内部开发者信息或者开源项目开发者信息分析目标软件源代码包的 软件包 来源,得到为开源软件包、混源软件包、自研软件包三者之一的软件包来源分析结果;4)为目标软件源代码包标记软件包来源分析结果。本发明能够判断并识别该软件包是开源软件包、混源软件包还是自研软件包,实现对软件源代码包进行分类管理,具有通用性好、扩展性强、整体灵活性高的优点。,下面是基于修改日志的软件包来源自动分析方法专利的具体信息内容。

1.一种基于修改日志的软件包来源自动分析方法,其特征在于步骤包括:
1)获取待分析的目标软件源代码包;
2)针对目标软件源代码包生成包含开发者信息的修改日志;
3)基于修改日志中记录的开发者信息、修改项次数及预设的研发团队内部开发者信息或者开源项目开发者信息分析目标软件源代码包的软件包来源,得到为开源软件包、混源软件包、自研软件包三者之一的软件包来源分析结果;
4)为目标软件源代码包标记软件包来源分析结果。
2.根据权利要求1所述的基于修改日志的软件包来源自动分析方法,其特征在于,所述步骤1)的详细步骤包括:
1.1)通过WEB图形用户界面或者命令行界面将待分析的目标软件源代码包上传到软件库中;
1.2)从软件库中选择需要进行软件包来源分析的软件源代码包并加入到作业队列中;
1.3)根据调度策略从所述作业队列中选取待执行任务,当待执行任务对应的软件源代码包为目标软件源代码包时,跳转执行步骤2)。
3.根据权利要求1或2所述的基于修改日志的软件包来源自动分析方法,其特征在于,所述步骤2)中针对目标软件源代码包生成包含开发者信息的修改日志时,生成的修改日志由至少一个修改项组成,每一个所述修改项由修改日期Date、修改者名字Name、修改者电子邮箱地址Email、修改版本号Version和修改内容Info组成,且每一个所述修改项对应目标软件源代码包的一个版本更新,且最新的版本更新对应的是修改日志中的第1项修改项,每当为修改日志增加新的修改项时,将新的修改项放在修改日志中的第1项,并将修改日志中原有的修改项的编号全部加1,使得第i条修改项更新为第i+1条修改项。
4.根据权利要求3所述的基于修改日志的软件包来源自动分析方法,其特征在于,所述步骤3)的详细步骤包括:
3.1)读取目标软件源代码包的修改日志;
3.2)从所述修改日志第一项修改项中提取出二元信息Tfirst,所述二元信息Tfirst包括修改者名字Name和修改者电子邮箱地址Email;
3.3)判断二元信息Tfirst是否属于开源项目开发者信息集合DCoss,所述开源项目开发者信息集合DCoss为所有开源项目开发者进行版本更新的修改者名字Name、修改者电子邮箱地址Email构成的二元信息集合;如果二元信息Tfirst属于开源项目开发者信息集合DCoss,则跳转执行步骤3.10);否则,跳转执行步骤3.4);
3.4)判断所述修改日志是否仅含一项修改项,如果仅含一项修改项,则跳转执行步骤
3.11);否则,跳转执行步骤3.5);
3.5)从所述修改日志第二项修改项中提取出二元信息Tsecond,所述二元信息Tsecond包括修改者名字Name、修改者电子邮箱地址Email;
3.6)判断二元信息Tsecond是否属于开源项目开发者信息集合DCoss,如果二元信息Tsecond属于开源项目开发者信息集合DCoss,则跳转执行步骤3.7);否则,跳转执行步骤3.8);
3.7)从所述修改日志第一项修改项中提取出修改内容Info,判断提取出的修改内容Info是否为重编译rebuild,如果提取出的修改内容Info为重编译rebuild,则判定目标软件源代码包为开源软件包的一个内部编译版本且源码未加修改,跳转执行步骤3.10);否则,跳转执行步骤3.12);
3.8)判断所述修改日志是否仅含两项修改项,如果仅含两项修改项,则跳转执行步骤
3.11);否则,跳转执行步骤3.9);
3.9)从所述修改日志最后一项修改项中提取出二元信息Tlast,所述二元信息Tlast包括修改者名字Name、修改者电子邮箱地址Email,判断二元信息Tlast属于开源项目开发者信息集合DCoss,如果二元信息Tlast属于开源项目开发者信息集合DCoss,则跳转执行步骤3.12);
否则,跳转执行步骤3.11);
3.10)得到目标软件源代码包为开源软件包的软件包来源分析结果,跳转执行步骤4);
3.11)得到目标软件源代码包为混源软件包的软件包来源分析结果,跳转执行步骤4);
3.12)得到目标软件源代码包为自研软件包的软件包来源分析结果,跳转执行步骤4)。

说明书全文

基于修改日志的软件包来源自动分析方法

技术领域

[0001] 本发明涉及计算机操作系统软件包的管理领域,具体涉及一种基于修改日志的软件包来源自动分析方法。

背景技术

[0002] 开源软件已经形成一个完整的软件体系,构成全球软件生产和部署不可或缺的一环。面向细分而多变的应用需求,借鉴和继承已有开源软件,快速搭建面向新需求的软件解决方案成为一种趋势,如Amazon、百度、淘宝等互联网企业都基于开源Linux构建自己独具特色的应用解决方案。虽然开源软件的引入会带来一些潜在的稳定、安全、可靠等方面的问题,但通过在引进过程中面向具体问题和需求进行分析、改造、调试和再设计可寻求有效的解决方案。为缩短开发周期、降低开发成本、提高软件竞争,集成并改进开源软件、实现操作系统产品包容继承发展已成为很多国内外厂商的研发方式之一。例如,谷歌的Android系统借鉴了Linux内核,并面向智能终端对内核进行了深度裁剪定制和针对性增强,去除不必要的软件包,修正Bug,并针对智能终端需求新研了UI、Java虚拟机、简单C库、SDK,形成独立可控的Android操作系统分支。再如,IBM和Oracle为了适应快速多变的用户需求并充分利用开源资源,在自身的产品线之外,并列开发了基于Linux的开源解决方案产品线,实现了产品线的快速发展。而苹果公司的Mac OS X和iOS操作系统产品也是基于稳定的开源BSD内核设计开发的。
[0003] 目前操作系统已经形成了两大体系。一个是Unix/Linux体系,另一个是Windows体系。其中,Unix/Linux体系的操作系统中,软件包是系统的重要组成,操作系统内核、核外软件以软件包的形式进行组织和管理。对于基于开源软件发展而来的操作系统产品,根据系统中软件包的不同来源,可以将其软件包分为三类:开源软件包、混源软件包和自研软件包。这三类软件包各自的特点如下:(I)开源软件包: 其源代码对公众开放,在软件license允许的范围下,可以被公众使用、修改和分发。开源软件包代码质量参差不齐、存在潜在安全漏洞和隐患,存在软件技术支持缺失等问题。(II)混源软件包:基于开源软件包,根据特定需求,由研发团队内部开发人员对开源软件包进行了修改和二次设计与开发,软件包的代码中开源和自研代码并存。与开源软件包相比,内部开发人员对混源软件包的认知和理解程度相对更高。另一方面,此类软件包仍然存在使用开源软件的潜在问题。(III)自研软件包:是指根据系统需求,由研发团队内部开发人员自行设计、研发的软件包,对代码框架、组成、功能和工作机理有深入和细致的了解和掌握,具备二次开发和快速迭代与升级能力。
[0004] 上述不同来源的软件包特性不同,对其进行分类组织和管理有利于明晰操作系统组成软件包的代码自主程度,有助于增强软件包演进的可追踪性。
[0005] 目前,支持对软件包进行来源分析的代表性软件包括Black Duck软件和由HP公司主导开发的FOSSology。其中,Black Duck是适用于软件整个生命周期的一个完整的开源软件管理/自动化解决方案,Black Duck收集了数千个网站的开源项目信息,通过与开源代码库中代码的特征比对,来发现被比较的代码是否来自开源软件,是否存在licence问题。FOSSology支持软件的license扫描、copyright分析、包头信息提取等功能。与Black Duck相比,FOSSology是通过搜索和匹配源代码中的元信息,实现license等的分析,缺少软件特征的智能分析能力。这两种软件支持开源软件的扫描和分析,不具备识别和判断操作系统中软件包是开源、混源、还是自研的这一能力。
[0006] 尽管传统软件工程和开源软件的发展非常迅速,目前,针对大规模的混源操作系统、在软件包一级进行开源、混源、自研软件包的区分识别和管理,现有的工作还主要是采用人工分析和统计的方法,不但效率较低,也容易出错。因此,需要一种方法能够对操作系统软件包的来源(开源、混源、自研)进行自动分析。

发明内容

[0007] 本发明要解决的技术问题:针对现有技术的上述问题,提供一种通用性好、扩展性强、整体灵活性高的基于修改日志的软件包来源自动分析方法。
[0008] 为了解决上述技术问题,本发明采用的技术方案为:
[0009] 一种基于修改日志的软件包来源自动分析方法,步骤包括:
[0010] 1)获取待分析的目标软件源代码包;
[0011] 2)针对目标软件源代码包生成包含开发者信息的修改日志;
[0012] 3)基于修改日志中记录的开发者信息、修改项次数及预设的研发团队内部开发者信息或者开源项目开发者信息分析目标软件源代码包的软件包来源,得到为开源软件包、混源软件包、自研软件包三者之一的软件包来源分析结果;
[0013] 4)为目标软件源代码包标记软件包来源分析结果。
[0014] 优选地,所述步骤1)的详细步骤包括:
[0015] 1.1)通过WEB图形用户界面或者命令行界面将待分析的目标软件源代码包上传到软件库中;
[0016] 1.2)从软件库中选择需要进行软件包来源分析的软件源代码包并加入到作业队列中;
[0017] 1.3)根据调度策略从所述作业队列中选取待执行任务,当待执行任务对应的软件源代码包为目标软件源代码包时,跳转执行步骤2)。
[0018] 优选地,所述步骤2)中针对目标软件源代码包生成包含开发者信息的修改日志时,生成的修改日志由至少一个修改项组成,每一个所述修改项由修改日期Date、修改者名字Name、修改者电子邮箱地址Email、修改版本号Version和修改内容Info组成,且每一个所述修改项对应目标软件源代码包的一个版本更新,且最新的版本更新对应的是修改日志中的第1项修改项,每当为修改日志增加新的修改项时,将新的修改项放在修改日志中的第1项,并将修改日志中原有的修改项的编号全部加1,使得第i条修改项更新为第i+1条修改项。
[0019] 优选地,所述步骤3)的详细步骤包括:
[0020] 3.1)读取目标软件源代码包的修改日志;
[0021] 3.2)从所述修改日志第一项修改项中提取出二元信息Tfirst,所述二元信息Tfirst包括修改者名字Name和修改者电子邮箱地址Email;
[0022] 3.3)判断二元信息Tfirst是否属于开源项目开发者信息集合DCoss,所述开源项目开发者信息集合DCoss为所有开源项目开发者进行版本更新的修改者名字Name、修改者电子邮箱地址Email构成的二元信息集合;如果二元信息Tfirst属于开源项目开发者信息集合DCoss,则跳转执行步骤3.10);否则,跳转执行步骤3.4);
[0023] 3.4)判断所述修改日志是否仅含一项修改项,如果仅含一项修改项,则跳转执行步骤3.11);否则,跳转执行步骤3.5);
[0024] 3.5)从所述修改日志第二项修改项中提取出二元信息Tsecond,所述二元信息Tsecond包括修改者名字Name、修改者电子邮箱地址Email;
[0025] 3.6)判断二元信息Tsecond是否属于开源项目开发者信息集合DCoss,如果二元信息Tsecond属于开源项目开发者信息集合DCoss,则跳转执行步骤3.7);否则,跳转执行步骤3.8);
[0026] 3.7)从所述修改日志第一项修改项中提取出修改内容Info,判断提取出的修改内容Info是否为重编译rebuild,如果提取出的修改内容Info为重编译rebuild,则判定目标软件源代码包为开源软件包的一个内部编译版本且源码未加修改,跳转执行步骤3.10);否则,跳转执行步骤3.12);
[0027] 3.8)判断所述修改日志是否仅含两项修改项,如果仅含两项修改项,则跳转执行步骤3.11);否则,跳转执行步骤3.9);
[0028] 3.9)从所述修改日志最后一项修改项中提取出二元信息Tlast,所述二元信息Tlast包括修改者名字Name、修改者电子邮箱地址Email,判断二元信息Tlast属于开源项目开发者信息集合DCoss,如果二元信息Tlast属于开源项目开发者信息集合DCoss,则跳转执行步骤3.12);否则,跳转执行步骤3.11);
[0029] 3.10)得到目标软件源代码包为开源软件包的软件包来源分析结果,跳转执行步骤4);
[0030] 3.11)得到目标软件源代码包为混源软件包的软件包来源分析结果,跳转执行步骤4);
[0031] 3.12)得到目标软件源代码包为自研软件包的软件包来源分析结果,跳转执行步骤4)。
[0032] 本发明基于修改日志的软件包来源自动分析方法具有下述优点:针对现有分析工具缺乏对软件包来源进行自动分析功能的现状,本发明获取待分析的目标软件源代码包,针对目标软件源代码包生成包含开发者信息的修改日志,基于修改日志中记录的开发者信息、修改项次数及预设的研发团队内部开发者信息或者开源项目开发者信息分析目标软件源代码包的软件包来源,得到为开源软件包、混源软件包、自研软件包三者之一的软件包来源分析结果,并为目标软件源代码包标记软件包来源分析结果,能够判断并识别该软件包是开源软件包、混源软件包还是自研软件包,实现对软件源代码包进行分类管理,具有通用性好、扩展性强、整体灵活性高的优点。附图说明
[0033] 图1为本发明实施例方法的基本流程示意图。
[0034] 图2为本发明实施例修改日志的数据结构示意图。
[0035] 图3为本发明实施例步骤3)的基本流程示意图。
[0036] 图4为应用本发明实施例方法的系统结构示意图。

具体实施方式

[0037] 如图1所示,本实施例基于修改日志的软件包来源自动分析方法的步骤包括:
[0038] 1)获取待分析的目标软件源代码包;
[0039] 2)针对目标软件源代码包生成包含开发者信息的修改日志;
[0040] 3)基于修改日志中记录的开发者信息、修改项次数及预设的研发团队内部开发者信息或者开源项目开发者信息分析目标软件源代码包的软件包来源,得到为开源软件包、混源软件包、自研软件包三者之一的软件包来源分析结果;
[0041] 4)为目标软件源代码包标记软件包来源分析结果。
[0042] 本实施例中,步骤1)的详细步骤包括:
[0043] 1.1)通过WEB图形用户界面或者命令行界面将待分析的目标软件源代码包上传到软件库中;
[0044] 1.2)从软件库中选择需要进行软件包来源分析的软件源代码包并加入到作业队列中;
[0045] 1.3)根据调度策略从所述作业队列中选取待执行任务,当待执行任务对应的软件源代码包为目标软件源代码包时,跳转执行步骤2)。
[0046] 本实施例中,所述步骤2)中针对目标软件源代码包生成包含开发者信息的修改日志时,如图2所示,生成的修改日志由至少一个修改项组成,每一个所述修改项由修改日期Date、修改者名字Name、修改者电子邮箱地址Email、修改版本号Version和修改内容Info组成,且每一个所述修改项对应目标软件源代码包的一个版本更新,且最新的版本更新对应的是修改日志中的第1项修改项,每当为修改日志增加新的修改项时,将新的修改项放在修改日志中的第1项,并将修改日志中原有的修改项的编号全部加1,使得第i条修改项更新为第i+1条修改项。
[0047] 如图3所示,所述步骤3)的详细步骤包括:
[0048] 3.1)读取目标软件源代码包的修改日志;
[0049] 3.2)从所述修改日志第一项修改项中提取出二元信息Tfirst,所述二元信息Tfirst包括修改者名字Name和修改者电子邮箱地址Email;
[0050] 3.3)判断二元信息Tfirst是否属于开源项目开发者信息集合DCoss,所述开源项目开发者信息集合DCoss为所有开源项目开发者进行版本更新的修改者名字Name、修改者电子邮箱地址Email构成的二元信息集合;如果二元信息Tfirst属于开源项目开发者信息集合DCoss,则跳转执行步骤3.10);否则,跳转执行步骤3.4);
[0051] 3.4)判断所述修改日志是否仅含一项修改项,如果仅含一项修改项,则跳转执行步骤3.11);否则,跳转执行步骤3.5);
[0052] 3.5)从所述修改日志第二项修改项中提取出二元信息Tsecond,所述二元信息Tsecond包括修改者名字Name、修改者电子邮箱地址Email;
[0053] 3.6)判断二元信息Tsecond是否属于开源项目开发者信息集合DCoss,如果二元信息Tsecond属于开源项目开发者信息集合DCoss,则跳转执行步骤3.7);否则,跳转执行步骤3.8);
[0054] 3.7)从所述修改日志第一项修改项中提取出修改内容Info,判断提取出的修改内容Info是否为重编译rebuild,如果提取出的修改内容Info为重编译rebuild,则判定目标软件源代码包为开源软件包的一个内部编译版本且源码未加修改,跳转执行步骤3.10);否则,跳转执行步骤3.12);
[0055] 3.8)判断所述修改日志是否仅含两项修改项,如果仅含两项修改项,则跳转执行步骤3.11);否则,跳转执行步骤3.9);
[0056] 3.9)从所述修改日志最后一项修改项中提取出二元信息Tlast,所述二元信息Tlast包括修改者名字Name、修改者电子邮箱地址Email,判断二元信息Tlast属于开源项目开发者信息集合DCoss,如果二元信息Tlast属于开源项目开发者信息集合DCoss,则跳转执行步骤3.12);否则,跳转执行步骤3.11);
[0057] 3.10)得到目标软件源代码包为开源软件包的软件包来源分析结果,跳转执行步骤4);
[0058] 3.11)得到目标软件源代码包为混源软件包的软件包来源分析结果,跳转执行步骤4);
[0059] 3.12)得到目标软件源代码包为自研软件包的软件包来源分析结果,跳转执行步骤4)。
[0060] 需要说明的是,开源项目开发者、研发团队内部开发者两者构成了开发者信息全集。因此,本实施例中仅仅是以开源项目开发者信息集合DCoss来进行开发者的分类的示例性说明,毫无疑问,同样以互补的研发团队内部开发者信息集合DCinternal同样也可以用来区分开源项目开发者、研发团队内部开发者,研发团队内部开发者信息集合DCinternal为所有研发团队内部开发者的修改者名字Name、修改者电子邮箱地址Email构成的二元信息集合,因此其原理与本实施例基本相同,故在此不再赘述。
[0061] 如图4所示,应用本实施例基于修改日志的软件包来源自动分析方法的软件包来源分析和管理系统由软件包源代码扫描分析模、软件包分类标识与管理模块两个模块组成,用户通过Web图形用户界面(GUI)或命令行界面与软件包来源分析和管理系统进行交互。(I)软件包源代码扫描分析模块负责扫描提取软件包中的License以及版权、开发者等标识符信息。软件包源代码扫描分析模块由软件库、作业队列、调度器、License分析器、标识符扫描器、分析结果库六个部分组成,这六个部分的功能和交互过程如下:首先,通过Web图形用户界面或者命令行界面将待扫描分析的软件包被上传到软件库中;接着,根据要扫描的内容的不同,相应的任务加入到作业队列中;调度器根据调度策略,从作业队列中选取要执行的任务,并根据任务的具体种类分发给License分析器或者标识符扫描器;License分析器接收到调度器的调度请求后,负责分析提取软件包源代码中的License信息,并将软件包中各个文件中可能发现的多种License信息进行归纳、统计,将结果输出到分析结果库中;标识符扫描器则负责从软件包的源代码中分析提取开发者姓名/昵称、开发者电子邮箱、软件包版本号等信息,并将结果输出到分析结果库中;分析结果库负责存储License分析器及标识符扫描器的输出结果。(II)软件包分类标识和管理模块负责编译软件包并对软件包进行分类、存储和管理,该模块由用户管理子模块、分类标识子模块、版本管理子模块、编译服务子模块和软件包库五个子模块组成。其中,用户管理子模块支持多用户对软件包分类标识和管理模块的操作,提供多用户权限管理功能,用户通过该子模块登录并使用软件包分类标识和管理模块提供的分类标识、版本管理、编译服务等各种功能,用户还可通过图形化界面或命令行界面浏览、查询、编译、管理软件包。分类标识子模块包括两个功能:一个是获取用户请求,调用软件包源代码扫描分析模块,将待分类软件包上传到软件包源代码扫描分析模块的软件库中,后者通过作业队列、调度器和标识符扫描器从该软件包中提取License、开发者姓名/昵称、开发者电子邮箱、包头信息等数据并存入分析结果库中,并将结果返回给分类标识子模块,分类标识子模块根据返回结果,提取并按格式规整该版本软件包的修改日志(每个软件包都包含一个修改日志,每个修改日志由多个修改项组成,其中,每一修改项由修改日期Date、修改者名字Name、修改者电子邮箱地址Email、修改版本号Version和修改内容Info组成;每个软件包版本的更新都对应修改日志中的一项修改项,其中,最新的更新对应的是修改日志第1项修改项;每当为修改日志增加新的项时,即第1项修改项时,其它每个项的编号分别加1,即第i条修改项更新为第i+1条修改项,1基础上,能够为开发者提供所需的基础环境,获取指定软件包修改日志中的相关信息,分析软件包代码来源,并将其标记为开源、混源或自研软件包。
[0062] 以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈