摘要 | 第3-4页 |
ABSTRACT | 第4-5页 |
1 引言 | 第9-16页 |
1.1 研究的背景 | 第9-10页 |
1.2 研究的目的和意义 | 第10页 |
1.3 国内外研究现状 | 第10-14页 |
1.4 本文主要的研究内容 | 第14-15页 |
1.5 论文的组织结构 | 第15-16页 |
2 C/C++语言缺陷模式的研究与分析 | 第16-35页 |
2.1 故障模型 | 第16-32页 |
2.1.1 存储器泄露模型路径敏感 | 第16-19页 |
2.1.2 类成员存储器泄露模型路径不敏感 | 第19-21页 |
2.1.3 资源泄露模型路径敏感 | 第21页 |
2.1.4 空指针变量模型路径敏感 | 第21-24页 |
2.1.5 空指针表达式模型路径敏感 | 第24-25页 |
2.1.6 数组越界模型路径敏感 | 第25-27页 |
2.1.7 非法计算模型路径敏感 | 第27页 |
2.1.8 未初始化变量模型路径敏感 | 第27-28页 |
2.1.9 未初始化类成员变量模型路径敏感 | 第28-29页 |
2.1.10 死循环结构模型路径不敏感 | 第29-30页 |
2.1.11 悬挂指针路径敏感 | 第30-32页 |
2.2 安全缺陷模型 | 第32-34页 |
2.2.1 缓冲区溢出模型 | 第32-34页 |
2.3 C/C++语言缺陷模式小结 | 第34-35页 |
3 Cppcheck 软件分析和完善 | 第35-47页 |
3.1 Cppcheck 简介 | 第35页 |
3.2 Cppcheck 系统分析 | 第35-38页 |
3.2.1 Cppcheck 文件处理流程图 | 第35-36页 |
3.2.2 Cppcheck 框架分析 | 第36-37页 |
3.2.3 Cppcheck 的核心类 class Cppcheck | 第37-38页 |
3.3 Cppcheck 内置检查类 | 第38-39页 |
3.4 缺陷分析 | 第39-40页 |
3.5 缺陷模式的表示与添加 | 第40-43页 |
3.6 实验与分析 | 第43-46页 |
3.6.1 实验 | 第43-46页 |
3.6.2 数据分析 | 第46页 |
3.7 本章小结 | 第46-47页 |
4 基于区间集 Cppcheck 系统的改进 | 第47-59页 |
4.1 抽象解释理论 | 第47-48页 |
4.2 拓展算子与收窄算子 | 第48-50页 |
4.2.1 算子定义 | 第48页 |
4.2.2 算子语义函数定义 | 第48-49页 |
4.2.3 两个区间的算子运算定义 | 第49页 |
4.2.4 算子定义 | 第49页 |
4.2.5 算子语义函数定义 | 第49页 |
4.2.6 两个区间的算子的运算定义 | 第49页 |
4.2.7 收敛区间实例 | 第49-50页 |
4.3 区间运算 | 第50页 |
4.3.1 区间的定义 | 第50页 |
4.3.2 区间运算 | 第50页 |
4.4 区间集运算 | 第50-52页 |
4.4.1 区间集定义 | 第50-51页 |
4.4.2 区间集运算 | 第51-52页 |
4.5 数组区间集构造 | 第52-55页 |
4.5.1 整型区间集构造算法 | 第52-53页 |
4.5.2 数组区间集和故障的形式化定义 | 第53页 |
4.5.3 数组区间集构造算法 | 第53-54页 |
4.5.4 构造区间集实例 | 第54-55页 |
4.6 算法实现 | 第55-56页 |
4.7 实验与分析 | 第56-58页 |
4.7.1 平台的搭建 | 第56页 |
4.7.2 实验 | 第56-57页 |
4.7.3 数据分析 | 第57-58页 |
4.8 本章小结 | 第58-59页 |
5 总结 | 第59-60页 |
5.1 论文总结与创新点 | 第59页 |
5.2 进一步研究的问题 | 第59-60页 |
致谢 | 第60-61页 |
参考文献 | 第61-65页 |
附录 | 第65页 |
A 作者在硕士期间发表的论文 | 第65页 |
B 作者在硕士期间参加的科研项目 | 第65页 |