论文部分内容阅读
随着软件产业的发展和开源运动的兴起,开源软件复用已经成为软件开发过程中的常用手段。复用开源软件在缩短开发周期、降低研发成本、提高软件质量等方面拥有显著优势,大量IT企业以开源软件为基础构建其核心产品,开源软件已成为软件行业中一股重要的新兴势力。尽管开源软件的资源储量非常丰富,然而要做到对现有成果的有效复用却并非易事,其中开源许可证侵权及代码同步更新困难是复用过程中面临的两个挑战。上述两方面挑战是影响开源软件复用的主要障碍,有效的程序比对分析技术是解决此类问题的有效途径。针对上述问题,本文提出了一种以函数为基本单元的代码比对分析方法,细化了分析粒度。结合代码仓库增量分析方法,仅对软件版本快照间变动的内容(后文统称为增量文本)进行分析,有效缩减了分析规模。分析方法大致分为四个步骤:首先,获取软件版本快照间的文本变动内容。然后,设计增量函数提取算法,将增量文本转化为完整的、可执行语法分析的函数。之后根据语法规则提取函数特征信息,并使用Simhash算法将函数转化为对应的二进制哈希数列(即函数指纹),建立代码索引库。最后,利用大数据分析技术实现了函数指纹的比对和溯源,根据比对和溯源结果找到可用的、高质量的、最新的代码。本文首次提出了一种以增量分析为核心、以函数为基本单元的代码比对分析方法,设计了面向开源代码分析的原型系统,可对开源生态系统中的代码进行整体分析。通过构建函数指纹索引库和程序分析原型系统,建立了针对开源代码复用的程序检测公共服务平台,实现了开源资源的有效管理,规避了开源许可证侵权风险。通过上述方法,开发人员不仅可以更容易地定位到原生项目代码仓库中的代码更新,还能在整个开源生态系统中检索到质量更高、开发更为活跃的代码,能够更好的满足开源代码复用中常见的许可证侵权检测及代码同步更新需求。