【技术实现步骤摘要】
基于源码分析的开源成分检测方法及系统
[0001]本专利技术涉及混源软件的开源成分分析
,尤其涉及一种基于源码分析的开源成分检测方法及系统。
技术介绍
[0002]现如今,一般在软件开发项目中都会采用大量的开源代码,以提高软件开发的效率,然而,这虽然可提高开发效率,但是却会引来一些严重的漏洞,所以,在开发过程中以及开发完成后,需要着重对项目中的开源成分进行分析,以检测其中隐藏的漏洞。针对开源成分的分析,就是分析项目中的引用的开源成分,包括使用的开源组件或者拷贝的部分开源代码。目前已经有很多SCA(软件成分分析工具)工具已经可以支持开源成分的分析,但是这些工具大多是基于项目的特征文件来分析项目的开源成分,也就是分析项目中使用到的开源组件。而基于代码的开源成分分析则很少,究其主要原因,是因为基于海量的开源代码进行开源成分的分析的难度很大,检测效率是很大的难点。
技术实现思路
[0003]本专利技术的目的是为解决上述技术问题的不足而提供一种可从代码层面对软件项目中的开源成分进行分析且检测效率和精准度都比较高的 ...
【技术保护点】
【技术特征摘要】
1.一种基于源码分析的开源成分检测方法,其特征在于,包括:获取若干开源组件,以构建基础源码数据库;对所述基础源码数据库中的所述开源组件进行解析,以得到片段索引库,所述片段索引库包括若干第一索引文件,每一所述第一索引文件记录具有相同哈希码的代码行所属的开源组件信息,且,根据与所述第一索引文件相对应的哈希码可查找到该第一索引文件;所述检测方法包括代码行匹配检测方法:分别对待测源码组件中每一源码文件的每一行代码进行哈希计算,以得到哈希码,根据该哈希码在所述片段索引库中查找相应地第一索引文件,以获得与该代码行相对应的开源组件信息,并将连续匹配行数最多者作为与该源码文件对应的开源组件;根据所查找到的各个开源组件所对应的源码文件的数量,计算各个开源组件与该待测源码组件的相似度。2.根据权利要求1所述的基于源码分析的开源成分检测方法,其特征在于,对所述基础源码数据库中的所述开源组件进行解析,还获得有组件索引库和文件索引库;所述组件索引库,包括第二索引文件,所述第二索引文件记录开源组件信息和与其所对应的哈希码的对应关系;所述文件索引库,包括若干第三索引文件,每一所述第三索引文件记录具有相同哈希码的源码文件所对应的开源组件信息,且,根据与所述第三索引文件相对应的哈希码可查找到该第三索引文件;所述检测方法还包括设置在所述代码行匹配检测方法之前的文件匹配检测方法和设置在所述文件匹配检测方法之前的组件匹配检测方法;所述组件匹配检测方法为:计算待测源码组件的哈希码,并在所述第二索引文件中查找是否存在相同的哈希码,如果是,则获得该待测源码组件的开源组件信息,并退出对当前待测源码组件的检测,如果否,则进入所述文件匹配检测方法;所述文件匹配检测方法为:计算待测源码组件中每个源码文件的哈希码,根据该哈希码在所述文件索引库中查找相应地所述第三索引文件,并根据找出的所述第三索引文件获得与该源码文件相对应的开源组件信息,以此,获得该待测源码组件中所有源码文件的开源组件信息,并统计查找到的每一开源组件所对应的源码文件的数量,根据统计数量计算各个开源组件与该待测源码组件的相似度;对于在所述文件匹配检测方法中未查找到相应开源组件信息的源码文件,通过所述代码行匹配检测方法进行处理,并结合通过所述文件匹配检测方法获取到的各个开源组件与该待测源码组件的相似度综合计算各个开源组件与该待测源码组件的相似度。3.根据权利要求2所述的基于源码分析的开源成分检测方法,其特征在于,对所述基础源码数据库中的所述开源组件进行解析,还获得有函数索引库,所述函数索引库包括若干第四索引文件,每一所述第四索引文件记录具有相同哈希码的函数结构所对应的开源组件信息,且,根据与所述第四索引文件相对应的哈希码可查找到该第四索引文件;所述检测方法还包括位于所述文件匹配检测方法和所述代码行匹配检测方法之间的函数匹配检测方法,对于在所述文件匹配检测方法中未查找到相应开源组件信息的源码文件,通过所述函数匹配检测方法进行处理;所述函数匹配检测方法包括:提取待测源码文件中的语法树,并计算语法树的哈希码,根据该哈希码在所述函数索引库中查找相应地所述第四索引文件,并根据找出的所述第四
索引文件获得与该语法树相对应的开源组件信息,以此,获得该待测源码组件中所有语法树的开源组件信息,并统计查找到的每一开源组件所对应的语法树的数量,根据统计数量计算各个开源组件与该待测源码组件的相似度;对于在所述函数匹配检测方法中未查找到相应开源组件信息...
【专利技术属性】
技术研发人员:汪杰,万振华,王颉,李华,董燕,
申请(专利权)人:深圳开源互联网安全技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。