基于LLVM-Clang的软件静态检测工具研究与实现
| 摘要 | 第3-5页 |
| ABSTRACT | 第5-6页 |
| 1 绪论 | 第9-17页 |
| 1.1 研究背景及意义 | 第9-10页 |
| 1.2 国内外研究现状 | 第10-13页 |
| 1.2.1 静态检测技术研究现状 | 第10-12页 |
| 1.2.2 静态检测工具的研究现状 | 第12-13页 |
| 1.3 论文主要研究内容与章节安排 | 第13-14页 |
| 1.4 本章小结 | 第14-17页 |
| 2 静态检测工具功能需求分析与技术路线 | 第17-29页 |
| 2.1 缺陷分析 | 第17-20页 |
| 2.1.1 代码性能低下 | 第17-18页 |
| 2.1.2 C++新旧语法的变换 | 第18-19页 |
| 2.1.3 常见代码缺陷 | 第19-20页 |
| 2.2 静态检测工具的评价指标 | 第20-21页 |
| 2.3 静态检测工具的功能需求 | 第21-24页 |
| 2.4 静态检测工具实现的技术路线 | 第24-27页 |
| 2.4.1 前端编译技术 | 第24-25页 |
| 2.4.2 抽象语法树(AST) | 第25-26页 |
| 2.4.3 控制流图(CFG) | 第26-27页 |
| 2.5 本章小结 | 第27-29页 |
| 3 静态检测工具核心技术及设计与实现 | 第29-47页 |
| 3.1 静态检测工具核心技术 | 第29-39页 |
| 3.1.1 静态检测框架 | 第29-30页 |
| 3.1.2 编译前端 | 第30-32页 |
| 3.1.3 静态分析 | 第32-36页 |
| 3.1.4 静态分析引擎算法 | 第36-39页 |
| 3.2 静态分析工具检测流程设计 | 第39-40页 |
| 3.3 数据库设计 | 第40-44页 |
| 3.4 静态检测工具可视化 | 第44-46页 |
| 3.5 本章小结 | 第46-47页 |
| 4 检测规则的构建与实现 | 第47-59页 |
| 4.1 基于AST数值转换检测规则与实现 | 第49-52页 |
| 4.2 | 第52-53页 |
| 4.3 基于数据流的有符号整型溢出检测规则与实现 | 第53-58页 |
| 4.4 本章小结 | 第58-59页 |
| 5 检测结果与分析 | 第59-65页 |
| 5.1 实验环境 | 第59页 |
| 5.2 测试结果及分析 | 第59-61页 |
| 5.3 与开源软件CppCheck比较 | 第61-63页 |
| 5.4 本章小结 | 第63-65页 |
| 6 总结与展望 | 第65-67页 |
| 6.1 总结 | 第65页 |
| 6.2 展望 | 第65-67页 |
| 致谢 | 第67-69页 |
| 参考文献 | 第69-70页 |