首页> 中文学位 >基于源码变更分析的程序中间代码生成技术研究
【6h】

基于源码变更分析的程序中间代码生成技术研究

代理获取

目录

第一章 绪论

1.1 课题的研究背景

1.2 当前国内外研究现状

1.3 本文研究目的

1.4 本文研究的内容

1.5 论文结构

第二章 问题背景与应用场景分析

2.1 差异分析工具功能局限性

2.2 应用场景描述与分析

2.3 本章小结

第三章 IRChange技术相关工作

3.1 源码变更分析相关研究

3.2 Clang抽象语法树

3.3 LLVM中间代码

3.4 本章小结

第四章 中间代码生成技术IRChange

4.1 IRChange整体流程

4.2 变更标记添加

4.3 源程序变更信息获取

4.4 中间代码生成

4.5 IRChange技术实现

4.6 本章小结

第五章 IRChange技术实验与评估

5.1 实验数据设定

5.2 实验评估标准设定

5.3 实验结果与分析

5.4 本章小结

第六章 总结与展望

6.1 本文工作内容总结

6.2 工作展望

参考文献

致谢

攻读学位期间发表的学术论文

声明

展开▼

摘要

软件行业的快速发展使软件的适应性要求提高,需求变化愈发频繁,源码变更次数也呈现上升趋势。然而,源码变更带来的影响是难以准确预测的,这些变更可能会导致软件出现新的缺陷(bugs)或者安全漏洞等。因此如何高效地处理源码变更带来的影响是提升软件可靠性和安全性的重要问题之一。
  源码变更分析的研究已流行一段时间,但是目前主要的研究工作集中在源码级别,比如ChangeDistiller工具通过树差分算法研究变更前后源码(JAVA编程语言)得出软件不同版本之间的源码变更信息。基于源码级别的差异分析结果,工程人员通常依赖经验去判断变更部分代码对软件的影响;然而,即使拥有丰富经验的工程人员也会出现失误,从而造成不可估量的后果,可能会使得一次版本变更变成灾难。然而,快速准确的程序分析、验证方法可以帮助工程人员分析软件以及程序变更部分代码对软件带来的影响。但是这些程序分析方法基于中间代码,比如模型检测、实施符号执行等。但是这些基于中间代码的程序分析、验证方法无法使用源码分析结果,两者之间缺乏交互机制,存在鸿沟。因此,本文研究源码变更与中间代码之间关系,以给上述程序分析方法提供便利。本文把源码到中间代码的翻译过程作为切入点,研究如何基于源码分析结果获取中间代码变更信息。
  基于上述问题分析,本文利用变更标记跟踪源码翻译过程以确定源码在中间代码中的对应的指令块,提出一种基于源码变更分析的程序中间代码生成技术:IRChange。IRChange技术基于Clang/LLVM框架,通过源码变更差异分析的研究,获取源码变更后的中间代码。IRChange生成的中间代码可以进行差异分析,并且可以通过提取变更部分中间代码为增量程序分析、验证提供便利。在获取变更后中间代码过程中,IRChange使用变更标记来跟踪源码,以定位其在中间代码中的变更内容。IRChange添加变更标记的方法可以有效避免修改编译器本身源码至中间代码的翻译行为,降低与编译器耦合程度,为进一步的功能扩展提供方便。
  本文课题的主要研究内容:首先,IRChange技术为源码添加变更标记(源码行号),在中间代码翻译过程中传递变更标记,生成带有标记的中间代码;其次,当源码发生变更后,设计并实现语句级别的差异分析工具Diff以进行源码差异分析,得到源码变更后的编辑脚本;然后,根据中间代码生成语法规则,快速生成变更部分源码的指令集;最后设计并实现的MergeIR算法将变更前中间代码与变更部分的指令集合成,以生成源码变更后的中间代码。
  本文从开源社区Github中的Clang和LLVM项目中选取足量的变更源码实际样例作为IRChange验证实验的数据对象,然后本文根据其技术的设计思路和特点为其设定实验的评估标准:正确性和效率。实验结果表明,IRChange生成的带有增量信息的中间代码不仅具有较高的准确性,且可以用于中间代码差异分析,为增量程序分析、验证提供便利。当程序发生变更后,IRChange生成中间代码效率优势明显,其平均所耗费时间远少于直接编译所耗费时间。综上,IRChange不仅具有较高准确性且当程序变更后具有较大效率优势。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号