【技术实现步骤摘要】
求解软件项目中开源组件最优版本的方法及系统
[0001]本专利技术涉及开源组件版本分选
,尤其涉及一种求解软件项目中开源组件最优版本的方法及系统。
技术介绍
[0002]在软件开发领域,一般通过软件成分分析(SCA,Software Composition Analysis)工具分析项目中的第三方组件成分(开源组件),并显示这些组件成分的漏洞和许可等风险信息,并且会给这些有问题的第三方组件推荐一个替换版本来解决问题,替换版本虽然可能修复当前组件的问题,但是,由于项目中的各个开源组件之间存在相应的依赖关系,因此,替换版本后,有可能会引出新的问题组件出来。所以从根本上无法解决项目中第三方组件的问题。
技术实现思路
[0003]本专利技术的目的是为解决上述技术问题的不足而提供一种可综合项目中所有开源组件而给出最优推荐版本从而避免无效替换的求解软件项目中开源组件最优版本的方法及系统。
[0004]为了实现上述目的,本专利技术公开了一种求解软件项目中开源组件最优版本的方法,其包括:
[0005]分 ...
【技术保护点】
【技术特征摘要】
1.一种求解软件项目中开源组件最优版本的方法,其特征在于,包括:分析目标项目中的开源组件的依赖关系,以生成具有树图结构的依赖关系树;根据深度优先策略,采用回溯法,从所述依赖关系树的每一根节点开始,依次遍历处理所述依赖关系树的每一子树;对于任一所述子树的遍历处理方法包括如下步骤:a:判断任一节点处的开源组件的风险度是否大于预设值,如果否,则执行步骤b,如果是,则执行步骤c;b:将该子树的根节点处的开源组件定义为该子树的其中一分选解,并记录当前所述依赖关系树的信息,并进入步骤c;c:对该子树的根节点处的开源组件的版本进行替换,并重新生成所述依赖关系树;d:如此循环执行上述步骤a至c,直到将该子树根节点处的开源组件的所有版本替换完毕,以获得该子树的分选解集合;通过对所有子树的分选解集合进行综合分析,以得到与该目标项目相对应的综合解集合;根据所述综合解集合,结合上述记录的与每一所述分选解相对应的依赖关系树,解析出与该目标项目相对应的开源组件推板版本的最优解集合。2.根据权利要求1所述的求解软件项目中开源组件最优版本的方法,其特征在于,还包括对目标项目的预处理方法:采用开源成分分析工具对所述目标项目进行处理,以获得该目标项目中的开源组件,同时获得每一所述开源组件的漏洞利用难度,并对所述漏洞利用难度进行量化;根据所述开源组件的源代码和所述依赖关系树对每一所述开源组件漏洞的可达性进行分析并量化;在所述遍历方法中,通过所述开源组件的漏洞利用难度和可达性来评估所述风险度。3.根据权利要求2所述的求解软件项目中开源组件最优版本的方法,其特征在于,在所述遍历处理方法中,在步骤a中,当判断结果为是时,同时记录当前子树的依赖信息;如果某一所述子树不存在分选解,分别针对该子树根节点开源组件在每一版本下的依赖信息,计算该子树的风险度,取风险度最低者所对应的开源组件作为该子树的分选解。4.一种求解软件项目中开源组件最优版本的系统,其特征在于,包括依赖关系树生成模块和关系树处理模块;所述依赖关系树生成模块,用于分析目标项目中的开源组件的依赖关系,以生成具有树图结构的依赖关系树;所述关系树处理模块,用于根据深度优先策略,采用回溯法,从...
【专利技术属性】
技术研发人员:汪杰,万振华,王颉,李华,董燕,
申请(专利权)人:深圳开源互联网安全技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。