复杂结构开源代码的约束转换及实现
发布时间:2023-12-10 08:36
随着互联网的快速发展以及开源软件的广泛普及,通过重用已有的开源软件或者相关代码,可极大地提高软件开发效率,降低开发成本。软件开发者花费大量的时间在互联网上搜索相关的软件或者代码加以重用,故如何提高开源代码搜索的效率得到了业界的广泛关注。通过能够体现代码功能的关键字进行代码搜索是一种常用的开源代码搜索方法,但该方法主要通过语法上的关键字内容匹配来实现代码查询,故存在搜索准确度不高的问题,需要用户对搜索结果进行人工筛选,才能得到期望的源代码。目前,基于输入输出匹配的开源代码搜索方法解决了关键字代码搜索方法的上述不足,它是一种重要的基于语义匹配的搜索方法。该方法将代码存储库中的代码编码为约束,同时也将用户提供的输入输出对转化成约束,通过使用Satisfiability Modulo Theories(SMT,可满足性模理论)求解器查询相匹配的约束,以返回用户需要的源代码。基于输入输出匹配的源代码搜索方法虽然弥补了关键字代码搜索方法的缺陷,但也存在明显不足。首先,该方法仅仅考虑了顺序结构代码的处理方式,未对复杂结构进行处理。其次,该方法是在代码匹配阶段才将代码转化为约束,故导致搜索效率较低。本...
【文章页数】:65 页
【学位级别】:硕士
【文章目录】:
论文摘要
abstract of thesis
引言
1 绪论
1.1 课题研究背景及意义
1.2 国内外研究现状
1.3 本文的主要研究内容
1.4 本文的组织结构
2 相关技术介绍
2.1 基于输入输出匹配的开源代码搜索方法
2.1.1 基于输入输出的代码匹配方法
2.1.2 程序代码的输入输出匹配过程
2.1.3 程序代码约束及约束生成
2.1.4 程序代码约束的自动生成工具
2.2 程序执行流程及程序控制结构
2.2.1 程序执行流程
2.2.2 复杂程序控制结构的分类及描述
2.3 基于符号执行的程序分析技术
2.3.1 程序代码的结构特征及语法树
2.3.2 基于符号执行的程序语法树生成
2.4 基于差分方程的循环次数求解规则
2.4.1 循环次数分析
2.4.2 差分方程基本概念
2.5 本章小结
3 分支结构的约束转换
3.1 分支结构的约束转换规则及语义证明
3.1.1 分支结构的转换规则的语法定义及描述
3.1.2 转换规则的语义描述及正确性证明
3.2 分支结构的约束转换规则实现算法
3.2.1 双分支结构转换算法
3.2.2 多分支结构转换算法
3.2.3 嵌套分支结构转换算法
3.3 实例分析
3.4 本章小结
4 循环结构的约束转换
4.1 循环结构的约束转换规则及语义证明
4.1.1 转换规则的语法定义及描述
4.1.2 转换规则的语义描述及正确性证明
4.2 循环结构的约束转换规则实现算法
4.2.1 迭代次数计算
4.2.2 循环展开定义和描述
4.2.3 循环展开算法
4.3 实例分析
4.4 匹配结果排序标准
4.5 本章小结
5 转换工具实现以及讨论
5.1 整体设计
5.2 模块功能及实现
5.2.1 代码载入模块
5.2.2 语法正确性分析模块
5.2.3 代码转换模块
5.3 实验结果
5.4 搜索效率讨论
6 总结与展望
参考文献
在学研究成果
致谢
本文编号:3872157
【文章页数】:65 页
【学位级别】:硕士
【文章目录】:
论文摘要
abstract of thesis
引言
1 绪论
1.1 课题研究背景及意义
1.2 国内外研究现状
1.3 本文的主要研究内容
1.4 本文的组织结构
2 相关技术介绍
2.1 基于输入输出匹配的开源代码搜索方法
2.1.1 基于输入输出的代码匹配方法
2.1.2 程序代码的输入输出匹配过程
2.1.3 程序代码约束及约束生成
2.1.4 程序代码约束的自动生成工具
2.2 程序执行流程及程序控制结构
2.2.1 程序执行流程
2.2.2 复杂程序控制结构的分类及描述
2.3 基于符号执行的程序分析技术
2.3.1 程序代码的结构特征及语法树
2.3.2 基于符号执行的程序语法树生成
2.4 基于差分方程的循环次数求解规则
2.4.1 循环次数分析
2.4.2 差分方程基本概念
2.5 本章小结
3 分支结构的约束转换
3.1 分支结构的约束转换规则及语义证明
3.1.1 分支结构的转换规则的语法定义及描述
3.1.2 转换规则的语义描述及正确性证明
3.2 分支结构的约束转换规则实现算法
3.2.1 双分支结构转换算法
3.2.2 多分支结构转换算法
3.2.3 嵌套分支结构转换算法
3.3 实例分析
3.4 本章小结
4 循环结构的约束转换
4.1 循环结构的约束转换规则及语义证明
4.1.1 转换规则的语法定义及描述
4.1.2 转换规则的语义描述及正确性证明
4.2 循环结构的约束转换规则实现算法
4.2.1 迭代次数计算
4.2.2 循环展开定义和描述
4.2.3 循环展开算法
4.3 实例分析
4.4 匹配结果排序标准
4.5 本章小结
5 转换工具实现以及讨论
5.1 整体设计
5.2 模块功能及实现
5.2.1 代码载入模块
5.2.2 语法正确性分析模块
5.2.3 代码转换模块
5.3 实验结果
5.4 搜索效率讨论
6 总结与展望
参考文献
在学研究成果
致谢
本文编号:3872157
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3872157.html