| 摘要 | 第5-6页 |
| ABSTRACT | 第6-7页 |
| 第一章 绪论 | 第15-22页 |
| 1.1 研究背景与意义 | 第15-16页 |
| 1.2 国内外研究现状 | 第16-19页 |
| 1.2.1 静态分析方法 | 第16-18页 |
| 1.2.2 C语言安全编程规则 | 第18页 |
| 1.2.3 代码规则检测工具 | 第18-19页 |
| 1.3 研究内容及目标 | 第19-20页 |
| 1.3.1 研究内容 | 第19-20页 |
| 1.3.2 研究目标 | 第20页 |
| 1.4 本论文的组织结构 | 第20-22页 |
| 第二章 MISRA C安全编程规则集 | 第22-30页 |
| 2.1 安全C代码标准MISRA | 第22页 |
| 2.2 MISRA C对代码风险来源的分类 | 第22-23页 |
| 2.3 MISRA C:2004安全编程规范的分类 | 第23-29页 |
| 2.3.1 表达式类的安全规范 | 第23-26页 |
| 2.3.1.1 表达式的求值顺序 | 第24-25页 |
| 2.3.1.2 有副作用的表达式 | 第25-26页 |
| 2.3.1.3 容易混淆的表达式 | 第26页 |
| 2.3.2 控制流类的安全规范 | 第26-28页 |
| 2.3.2.1 准确控制程序流程 | 第26-27页 |
| 2.3.2.2 避免不起作用的表达 | 第27页 |
| 2.3.2.3 避免破坏程序结构化的表达 | 第27-28页 |
| 2.3.3 函数声明与定义类的安全规范 | 第28-29页 |
| 2.3.4 函数调用类的安全规范 | 第29页 |
| 2.4 本章小结 | 第29-30页 |
| 第三章 代码规则检测关键技术研究 | 第30-45页 |
| 3.1 静态信息提取方法的研究 | 第30-32页 |
| 3.2 LEX构造词法分析器的关键技术 | 第32-35页 |
| 3.2.1 LEX构造词法分析器完成记号识别的工作机制 | 第33-34页 |
| 3.2.2 LEX源程序 | 第34-35页 |
| 3.3 YACC构造语法分析器的关键技术 | 第35-39页 |
| 3.3.1 YACC构造语法分析器完成语法分析的工作机制 | 第36-37页 |
| 3.3.2 YACC源程序 | 第37-39页 |
| 3.4 代码规则检测方法的研究 | 第39-44页 |
| 3.4.1 控制流类安全规范 | 第40-42页 |
| 3.4.2 函数声明与定义类的安全规范 | 第42-43页 |
| 3.4.3 表达式安全规范 | 第43-44页 |
| 3.5 本章小结 | 第44-45页 |
| 第四章 系统总体设计 | 第45-52页 |
| 4.1 软件需求分析与系统功能描述 | 第45-46页 |
| 4.2 软件开发平台 | 第46页 |
| 4.3 总体框架 | 第46-47页 |
| 4.4 系统模块划分 | 第47-50页 |
| 4.5 系统数据交互 | 第50-51页 |
| 4.6 本章小结 | 第51-52页 |
| 第五章 系统详细设计与实现 | 第52-85页 |
| 5.1 规则配置文件管理模块 | 第52-54页 |
| 5.1.1 规则配置文件的选取 | 第52页 |
| 5.1.2 MISRA规则配置文件的设计 | 第52-54页 |
| 5.2 检测工程管理模块 | 第54-55页 |
| 5.2.1 规则配置文件与TreeView的绑定 | 第54页 |
| 5.2.2 规则描述性配置文件的操作 | 第54-55页 |
| 5.3 目标对象处理模块 | 第55-75页 |
| 5.3.1 MISRA规则检测词法分析模块 | 第55-63页 |
| 5.3.1.1 文件读入 | 第56-57页 |
| 5.3.1.2 字符流读入 | 第57页 |
| 5.3.1.3 记号的识别 | 第57-63页 |
| 5.3.2 MISRA规则检测语法分析模块 | 第63-75页 |
| 5.3.2.1 声明 | 第64-67页 |
| 5.3.2.2 语句 | 第67-72页 |
| 5.3.2.3 表达式 | 第72-75页 |
| 5.3.2.4 函数定义 | 第75页 |
| 5.4 检测模块 | 第75-83页 |
| 5.4.1 标识符类安全规范检测 | 第75-77页 |
| 5.4.2 表达式类安全规范检测 | 第77-79页 |
| 5.4.3 控制流类安全规范检测 | 第79-81页 |
| 5.4.4 函数类安全规范检测 | 第81-82页 |
| 5.4.5 标准库类安全规范检测 | 第82-83页 |
| 5.5 违规信息管理模块 | 第83-84页 |
| 5.6 本章小结 | 第84-85页 |
| 第六章 系统测试及分析 | 第85-95页 |
| 6.1 测试环境 | 第85页 |
| 6.2 测试方案 | 第85页 |
| 6.3 测试目标 | 第85-86页 |
| 6.4 测试及结果分析 | 第86-94页 |
| 6.4.1 单文件测试及结果分析 | 第86-90页 |
| 6.4.2 多文件测试及结果分析 | 第90-94页 |
| 6.5 测试结论 | 第94页 |
| 6.6 本章小结 | 第94-95页 |
| 第七章 总结与展望 | 第95-97页 |
| 7.1 工作总结 | 第95-96页 |
| 7.2 未来展望 | 第96-97页 |
| 致谢 | 第97-98页 |
| 参考文献 | 第98-101页 |
| 攻硕期间取得的研究成果 | 第101-102页 |