您当前所在位置: 首页

论文收录信息

论文编号 201802-58
论文题目 IRDiff:基于LLVM中间表示的代码差异分析
文献类型
收录期刊

上传封面

中文期刊 英文期刊

期刊名称(中文)

期刊名称(英文)

年, 卷(

上传封面

中文专著 英文专著

书名(中文)

书名(英文)

出版地

出版社

出版年

上传封面

中文译著 英文译著

书名(中文)

书名(英文)

出版地

出版社

出版年

上传封面

中文论文集 英文论文集

编者 . 论文集名称(中文) [c].

出版地 出版社 出版年-

编者 . 论文集名称(英文) [c].

出版地 出版社 出版年-

上传封面

中文文献 英文文献

期刊名称(中文)

期刊名称(英文)

日期--

在线地址http://

上传封面

中文文献 英文文献

文题(中文)

文题(英文)

出版地

出版社, 出版日期--

上传封面

中文文献 英文文献

文题(中文)

文题(英文)

出版地

出版社, 出版日期--

后印本*

(请提交PDF文档)

IRDiff:基于LLVM中间表示的代码差异分析

引用

复制文本

导出参考文献

.txt .ris .doc

胡文颖

胡文颖(1993-),女,研究生,主要研究方向:可信软件,智能系统

梁洪亮

梁洪亮(1972-),男,副教授、硕导,主要研究方向:可信系统,智能软件

发送私信

发送给

北京邮电大学计算机学院,北京,100876

摘要:代码差异分析是多版本程序分析领域中重要的研究问题之一。已有的工作,包括基于代码行的比较或基于抽象语法树的代码分析,往往会受到代码移动的影响,使得对比过程中,由于对比代码的错位而导致差异分析的不精确。本文提出一种基于LLVM中间表示语言的源代码差异分析算法。该算法首先将待比较程序的两个版本的源代码转换成LLVM中间表示语言,利用LLVM中间表示的语法结构、控制流以及数据流信息,在程序两个版本的控制流图上寻找同构节点,得到一系列同构子图以及差异节点集合,从而得到程序两个版本间的代码差异。利用中间表示语言的层次化结构特性以及控制流信息,能够避免因代码移动导致的对比代码错位问题,并且结合控制依赖、数据依赖以及类型信息,可以提高代码差异分析的准确性。基于该算法,我们实现了一个代码差异分析工具IRDiff,并使用SIR 程序集进行实验评估,实验表明该工具可以较好地分析C/C++程序不同版本之间的代码差异。

关键词: 代码演化分析 源代码差异 控制流图 中间表示 程序理解

图表:

动态公开评议

评论

评论一下

全部评论
评论