过程间数据流分析技术研究
【摘要】:数据流分析是一种程序静态分析技术,它能从程序代码中收集程序的语义信息,并通过代数的方法确定变量的定义和使用。通过数据流分析,可以不必实际运行程序就能够发现程序运行行为方面的特性,这样可以帮助人们理解程序。数据流分析被广泛用于解决编译优化、程序验证、理解、分片、调试、测试以及并行化等问题。
程序静态数据流分析是程序测试所采用的一种重要手段。借助于程序静态分析工具,能更直接地暴露和定位程序中的错误。数据流分析作为一种非常重要的程序静态分析技术,能够在保证软件质量与可靠性方面起到重要的作用,而过程调用使全程数据流分析变得非常复杂和困难。目前,过程间分析的模型和算法仍然在探讨之中,还没有针对过程间分析的一个简明、统一、表现力强的过程间分析问题模型。论文旨在通过对过程间数据流分析技术的研究,探讨全程数据流分析工具的设计思想和实现方法。
论文首先介绍了一些数据流分析的基础知识和一些基本的数据流分析方法;然后对已有的数据流分析方法及常见的处理过程调用的策略进行了分析比较,得出了一种基本的过程间数据流分析框架,能跨过程提取信息,同时讨论了参数在过程间的传递、上下文敏感的过程间指针分析等;最后详细讨论了数据流分析工具的设计思想和实现方法。我们利用词法分析生成工具FLEX,语法分析器生成工具BYACC和后期处理分析器构造出通用的C源代码分析器。分析器对C源代码进行词法、语法分析和后期处理,抽象出程序的语义信息存入公共信息库。公共信息库由信息表组成,通过树型结构高效地组织了程序的语义信息,为不同的维护工具提供了通用的信息组织形式。数据流分析工具调用公共信息库的对外接口,获取公共信息库的信息,根据规范检测程序可能出现的异常。