| 摘要 | 第1-5页 |
| ABSTRACT | 第5-9页 |
| 第一章 绪论 | 第9-12页 |
| ·研究背景 | 第9-10页 |
| ·研究内容 | 第10页 |
| ·论文内容和结构 | 第10-12页 |
| 第二章 缺陷模式 | 第12-24页 |
| ·基于缺陷模式的软件测试 | 第12-14页 |
| ·基于缺陷模式的软件测试概述 | 第12-13页 |
| ·基于缺陷模式的软件测试指标分析 | 第13-14页 |
| ·缺陷模式状态机 | 第14页 |
| ·面向缺陷的静态分析工具DTSJava | 第14-17页 |
| ·DTS概述 | 第14-15页 |
| ·DTSJava缺陷模式 | 第15-17页 |
| ·其他常用静态分析工具及缺陷模式 | 第17-24页 |
| ·Klocwork | 第17-19页 |
| ·Coverity | 第19-21页 |
| ·Fortify SCA | 第21页 |
| ·PMD | 第21-24页 |
| 第三章 DTSJava6.0与Klocwork8对比实验 | 第24-52页 |
| ·Klocwork故障类缺陷模式 | 第24页 |
| ·实验描述 | 第24-25页 |
| ·实验数据 | 第25页 |
| ·空指针引用类漏报实例分析 | 第25-36页 |
| ·模式定义相关 | 第25-28页 |
| ·成员变量相关 | 第28-30页 |
| ·父类/接口方法相关 | 第30-32页 |
| ·Try-catch结构相关 | 第32-34页 |
| ·Foreach结构相关 | 第34-35页 |
| ·其他原因 | 第35-36页 |
| ·资源泄漏类漏报实例分析 | 第36-41页 |
| ·缺陷定义相关 | 第36-37页 |
| ·库函数摘要相关 | 第37-38页 |
| ·成员变量相关 | 第38-39页 |
| ·父类函数相关 | 第39-40页 |
| ·Try-catch结构相关 | 第40-41页 |
| ·漏报原因总结 | 第41-45页 |
| ·缺陷模式定义不全 | 第42页 |
| ·预分析模块分析不准确 | 第42页 |
| ·函数摘要的不完整和近似生成 | 第42-44页 |
| ·区间分析的近似计算 | 第44-45页 |
| ·异常处理、循环等复杂控制流的近似处理 | 第45页 |
| ·扩展缺陷模式总结 | 第45-52页 |
| ·由统计数据判定的空指针引用(NPD_STAT) | 第45-46页 |
| ·Java.util包中函数的空指针引用(NPD_RET_UTIL) | 第46-48页 |
| ·始终为null变量的空指针引用(NPD_CONST) | 第48页 |
| ·由空指针检查推断可能为空指针(NPD_PRE_CHECK) | 第48-50页 |
| ·被忽略的新创建资源(RL_IGNOREDNEW) | 第50页 |
| ·函数参数资源泄漏(RL_PARAM) | 第50-52页 |
| 第四章 NIST Java测试用例对比实验 | 第52-63页 |
| ·缺陷CWE定义 | 第52页 |
| ·NIST测试用例库 | 第52页 |
| ·NIST与DTSJava故障类相关缺陷模式 | 第52-55页 |
| ·CWE193:Off by one Error | 第52-53页 |
| ·CWE476:NULL Pointer Dereference | 第53-54页 |
| ·CWE606:Unchecked Loop Condition | 第54-55页 |
| ·实验数据 | 第55-56页 |
| ·漏报实例分析及模式扩展 | 第56-63页 |
| ·数组元素的空指针引用(NPD_ArrayElement) | 第56-57页 |
| ·Servlet包中函数的空指针引用(NPD_Servlet) | 第57-58页 |
| ·ReadLine()方法导致的死循环(DC_ReadLine) | 第58-59页 |
| ·环境变量导致的死循环(DC_Environment) | 第59-60页 |
| ·数据库查询结果导致的死循环(DC_fromDB) | 第60-63页 |
| 第五章 总结与展望 | 第63-65页 |
| ·工作总结 | 第63页 |
| ·展望 | 第63-65页 |
| 参考文献 | 第65-67页 |
| 致谢 | 第67-68页 |
| 攻读学位期间发表的学术论文 | 第68页 |