论文部分内容阅读
随着软件技术的快速发展,计算机软件规模与复杂性急剧增加,因此软件测试的意义显得越来越重要。由于人工的测试效率比较低,而且容易引入一些人为的错误,因此近年来自动化测试技术得到了迅猛的发展。本文涉及的DTSC系统是一个C语言静态分析框架,采用了基于缺陷模式的自动化软件测试方法实现。DTSC可以针对经过预处理的C语言中间代码生成其抽象语法树信息,进而生成控制流图和符号表信息,并通过加载模式状态机来静态分析软件中潜在的缺陷。C语言作为一种通用的、过程式的高级语言,有着很多的优点,因此在不同平台上有着各种各样的C语言编译器。作者在对C语言静态分析框架跨平台技术研究时发现,不同编译器支持的C语言语法不尽相同,语法兼容性问题是跨平台分析的难点之一。因此在论文研究工作中,作者主要研究了C语言静态分析器的实现原理,并且介绍了C静态分析框架前端部分所涉及的预处理过程、抽象语法树等部分的内容。研究的重点在于C语言编译器语法特点和差异,本文作者主要针对了Windows平台、Linux平台以及嵌入式平台下的一些常用的C语言编译器的特点进行归纳,并且对不同编译器相对于C89标准的语法差异进行了总结和归类。再将语法差异分为数据类型差异、关键字差异和逻辑差异之后,对每一类别选取了一些语法差异进行分析,判断其对C语言标准巴科斯范式的影响。根据该语法特点修改巴科斯范式之后编写相应的语法文件,通过Sun公司开发的JavaCC工具进行处理,使DTSC系统能够顺利的分析该编译器生成的代码。最后,作者对不同编译器编译通过的测试代码用修改后的C语言分析器进行了分析,并且对比没有修改时的C语言分析器的分析效果,来确定这种扩展方式能否达到预期的效果。经实验证明,利用JavaCC工具和C语言的jjt文件能够较容易的实现不同C语言语法的支持,对于C静态分析框架的兼容性扩展有着重要的意义。