面向开源代码复用的程序比对分析技术研究
发布时间:2022-04-23 19:49
随着软件产业的发展和开源运动的兴起,开源软件复用已经成为软件开发过程中的常用手段。复用开源软件在缩短开发周期、降低研发成本、提高软件质量等方面拥有显著优势,大量IT企业以开源软件为基础构建其核心产品,开源软件已成为软件行业中一股重要的新兴势力。尽管开源软件的资源储量非常丰富,然而要做到对现有成果的有效复用却并非易事,其中开源许可证侵权及代码同步更新困难是复用过程中面临的两个挑战。上述两方面挑战是影响开源软件复用的主要障碍,有效的程序比对分析技术是解决此类问题的有效途径。针对上述问题,本文提出了一种以函数为基本单元的代码比对分析方法,细化了分析粒度。结合代码仓库增量分析方法,仅对软件版本快照间变动的内容(后文统称为增量文本)进行分析,有效缩减了分析规模。分析方法大致分为四个步骤:首先,获取软件版本快照间的文本变动内容。然后,设计增量函数提取算法,将增量文本转化为完整的、可执行语法分析的函数。之后根据语法规则提取函数特征信息,并使用Simhash算法将函数转化为对应的二进制哈希数列(即函数指纹),建立代码索引库。最后,利用大数据分析技术实现了函数指纹的比对和溯源,根据比对和溯源结果找到可用...
【文章页数】:56 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
1 绪论
1.1 研究背景及意义
1.2 国内外研究现状
1.3 工作内容
1.4 课题来源
1.5 论文结构
2 相关技术介绍
2.1 版本控制软件
2.1.1 SVN
2.1.2 Git
2.2 词法分析器
2.3 语法分析器
2.4 哈希算法
2.4.1 传统哈希算法
2.4.2 局部敏感哈希算法
2.5 海量数据搜索技术
2.6 本章小结
3 程序比对分析方法
3.1 获取仓库代码
3.1.1 获取完整的仓库代码
3.1.2 获取增量文本
3.2 完整和增量语法分析
3.2.1 完整语法分析
3.2.2 增量函数提取
3.3 构造函数指纹
3.3.1 词法分析
3.3.2 Simhash函数指纹构造算法
3.4 相似度计算和比对分析
3.5 代码侵权检测和代码同步更新实现机制
3.5.1 开源许可证侵权检测
3.5.2 代码同步更新
3.6 本章小结
4 原型系统的设计与实现
4.1 原型系统客户端实现
4.2 原型系统服务端实现
4.2.1 函数指纹数据库表结构设计
4.2.2 函数指纹检索接口设计
4.3 本章小结
5 原型系统分析能力验证
5.1 实验1:代码分析效率对比
5.2 实验2:工程相似度判定能力验证
5.3 实验3:函数更新能力验证
5.4 实验4:海量函数指纹检索能力验证
6 总结与展望
6.1 结论
6.2 主要贡献
6.3 未来的工作
参考文献
个人简介
导师简介
获得成果
致谢
【参考文献】:
期刊论文
[1]基于倒排索引的可验证混淆关键字密文检索方案[J]. 杜瑞忠,李明月,田俊峰,吴万青. 软件学报. 2019(08)
[2]基于局部敏感哈希的多维海量数据处理[J]. 张博文,张淑丽,郝昕,马超. 科技创新与应用. 2019(02)
[3]Gartner:2018年十大安全项目详解(三)[J]. 陆英. 计算机与网络. 2018(24)
[4]东北亚开源软件标准化成果综述[J]. 苗宗利,王雷. 信息技术与标准化. 2018(11)
[5]基于版本控制的中文文档到源代码的自动跟踪方法[J]. 沈力,刘洪星,李勇华. 计算机应用. 2018(10)
[6]开源软件的著作权保护研究[J]. 王婧潼. 法制与经济. 2018(09)
[7]开源许可证及其检测工具研究[J]. 何东杰,宋昊,王琪,匡翔宇,刘为怀,蒋丹妮. 计算机应用与软件. 2018(06)
[8]大规模源代码增量式资源泄漏检测方法[J]. 高志伟,计卫星,石剑君,王一拙,高玉金,廖心怡,罗辉,石峰. 软件学报. 2018(05)
[9]基于局部敏感哈希的安全相似性查询方案[J]. 吴瑾,彭延国,崔江涛. 密码学报. 2018(02)
[10]开源代码仓库增量分析方法[J]. 许福,杨湛宇,陈志泊,孙钰,张海燕. 清华大学学报(自然科学版). 2018(07)
硕士论文
[1]基于哈希算法的大规模图像最近邻检索算法研究[D]. 高新.电子科技大学 2018
本文编号:3647866
【文章页数】:56 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
1 绪论
1.1 研究背景及意义
1.2 国内外研究现状
1.3 工作内容
1.4 课题来源
1.5 论文结构
2 相关技术介绍
2.1 版本控制软件
2.1.1 SVN
2.1.2 Git
2.2 词法分析器
2.3 语法分析器
2.4 哈希算法
2.4.1 传统哈希算法
2.4.2 局部敏感哈希算法
2.5 海量数据搜索技术
2.6 本章小结
3 程序比对分析方法
3.1 获取仓库代码
3.1.1 获取完整的仓库代码
3.1.2 获取增量文本
3.2 完整和增量语法分析
3.2.1 完整语法分析
3.2.2 增量函数提取
3.3 构造函数指纹
3.3.1 词法分析
3.3.2 Simhash函数指纹构造算法
3.4 相似度计算和比对分析
3.5 代码侵权检测和代码同步更新实现机制
3.5.1 开源许可证侵权检测
3.5.2 代码同步更新
3.6 本章小结
4 原型系统的设计与实现
4.1 原型系统客户端实现
4.2 原型系统服务端实现
4.2.1 函数指纹数据库表结构设计
4.2.2 函数指纹检索接口设计
4.3 本章小结
5 原型系统分析能力验证
5.1 实验1:代码分析效率对比
5.2 实验2:工程相似度判定能力验证
5.3 实验3:函数更新能力验证
5.4 实验4:海量函数指纹检索能力验证
6 总结与展望
6.1 结论
6.2 主要贡献
6.3 未来的工作
参考文献
个人简介
导师简介
获得成果
致谢
【参考文献】:
期刊论文
[1]基于倒排索引的可验证混淆关键字密文检索方案[J]. 杜瑞忠,李明月,田俊峰,吴万青. 软件学报. 2019(08)
[2]基于局部敏感哈希的多维海量数据处理[J]. 张博文,张淑丽,郝昕,马超. 科技创新与应用. 2019(02)
[3]Gartner:2018年十大安全项目详解(三)[J]. 陆英. 计算机与网络. 2018(24)
[4]东北亚开源软件标准化成果综述[J]. 苗宗利,王雷. 信息技术与标准化. 2018(11)
[5]基于版本控制的中文文档到源代码的自动跟踪方法[J]. 沈力,刘洪星,李勇华. 计算机应用. 2018(10)
[6]开源软件的著作权保护研究[J]. 王婧潼. 法制与经济. 2018(09)
[7]开源许可证及其检测工具研究[J]. 何东杰,宋昊,王琪,匡翔宇,刘为怀,蒋丹妮. 计算机应用与软件. 2018(06)
[8]大规模源代码增量式资源泄漏检测方法[J]. 高志伟,计卫星,石剑君,王一拙,高玉金,廖心怡,罗辉,石峰. 软件学报. 2018(05)
[9]基于局部敏感哈希的安全相似性查询方案[J]. 吴瑾,彭延国,崔江涛. 密码学报. 2018(02)
[10]开源代码仓库增量分析方法[J]. 许福,杨湛宇,陈志泊,孙钰,张海燕. 清华大学学报(自然科学版). 2018(07)
硕士论文
[1]基于哈希算法的大规模图像最近邻检索算法研究[D]. 高新.电子科技大学 2018
本文编号:3647866
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3647866.html