论文部分内容阅读
源代码分析是软件测试、系统分析和软件开发领域中的重要组成部分。近年来,源码分析工具的出现,为程序员分析源代码提供了很大便利。但是对于makefile组织的工程源码,其各个模块中文件间的依赖关系定义在makefile文件中,所以在分析过程中出现了因为不同模块中的符号同名造成定义混淆的问题。本文以静态分析为技术背景,分析makefile文件中的依赖关系,确定符号的查找范围,提高在源码分析过程中符号定位的准确性。本文的主要工作和创新如下:1、通过对当前源码分析现状的总结,得出当前技术在分析工程源码时存在的缺陷:在不同模块下存在同名符号定义时不能确定其定义的准确位置。2、在源码分析的过程中利用makefile中的文件依赖关系确定查找文件范围。从makefile文件中提取文件依赖信息并生成可供索引查询的结构,以此得到源码工程中单个源码文件的依赖文件列表,从而对所需的信息进行精确范围定位。3、对编译器前端的词法分析、语法分析等过程进行分析研究,获得源码对应的抽象语法树,对此语法树进行提取符号信息并转化为对应的索引结构,从而提供对源码文件内符号定义的定位功能。4、基于上述两部分工作,设计并实现基于makefile文件依赖的源码分析工具:以符号所在文件的依赖关系文件列表为定位范围,利用符号信息索引最终确定符号的定义位置。通过对系统结果的验证,证明系统有效提高了源码分析过程中符号定位的准确性。