论文部分内容阅读
静态分析是软件白盒测试、逆向工程以及再工程等CASE工具的核心基础支撑技术.长期以来,由于C++语言语法的高度复杂性,导致静态分析技术一直是C++语言的CASE工具开发的瓶颈.该文的研究内容是为解决这一问题,设计开发一个支持C++的代码扫描,静态程序结构信息逆向提取,程序度量信息提取,动态探针插装以及可以输出标准化信息数据文档的多用途C++语言静态分析器.该文围绕"新型多用途C++静态分析器研究与开发"这一课题,结合国外研究现状以及北航软件所原有版本静态分析器所存在的问题,讨论了如何利用现有先进开发工具和开发方法设计并实现了一个新的静态分析器,可以支持多种静态分析以及支持代码动态插装等多项功能,同时还可以为进一步扩充后端信息提取功能保留充分的扩展性.该文首先简要介绍了国内外相关领域的研究现状,以及北航软件所旧版静态分析器的不足之处,说明了开发一个新的静态分析器的必要性和可行性.然后在说明新版静态分析器的具体功能需求后,逐步说明设计和实现中的方案和过程.该文详细讲座了在体系结构设计方面,采用较为先进的分析器自动生成工具PCTTs,并使用管道化与面向对象设计方法后,对于增加系统的模块化程度,提高系统的可靠性和可维护性的促进作用.然后说明了在设计开发中涉及到的各类C++扩展识别、函数重载解析、名字空间识别、二义性语法识别等一些重要语言识别分析技术.该文给出了静态信息提取方案和动态插装功能的支持方案.接着重点描述了开发过程中如何解决预处理、语法分析以及静态信息提取等关键点的优化问题.还分别给出了系统在语言分析、静态信息提取和动态插装支持三个重要功能方面的实际评测结果.此外,考虑到系统的复杂性,以及在系统稳定性方面的需求,该文介绍了我们在保证和评测静态分析器的质量方面所做的工作.