基于源码的疑问代码和不良编程习惯检测
摘要 | 第1-5页 |
ABSTRACT | 第5-9页 |
第一章 绪论 | 第9-12页 |
·引言 | 第9页 |
·软件测试的发展历程 | 第9-10页 |
·软件测试的意义 | 第10-11页 |
·主要工作 | 第11页 |
·论文结构 | 第11-12页 |
第二章 软件测试及软件测试工具 | 第12-18页 |
·软件测试概念 | 第12页 |
·软件测试方法 | 第12-15页 |
·静态测试 | 第12-13页 |
·动态测试 | 第13页 |
·黑盒测试 | 第13-14页 |
·白盒测试 | 第14页 |
·基于模型的软件测试 | 第14-15页 |
·静态测试工具实例 | 第15-18页 |
·Lint | 第15-16页 |
·Klocwork | 第16页 |
·Findbugs | 第16-17页 |
·DTS | 第17-18页 |
第三章 疑问代码和 DTS静态测试工具 | 第18-32页 |
·编译技术简述 | 第18-21页 |
·疑问代码的产生 | 第21-24页 |
·类型兼容问题 | 第21页 |
·编译链接缺陷 | 第21页 |
·面向对象机制 | 第21-22页 |
·控制流和逻辑 | 第22页 |
·语言设计问题 | 第22-23页 |
·编译器实现差异 | 第23-24页 |
·DTS静态测试工具 | 第24-32页 |
·简介 | 第24-25页 |
·上下文中的数据结构 | 第25-29页 |
·状态机运行机制 | 第29-32页 |
第四章 疑问代码模式及其检测 | 第32-59页 |
·独立于语言的模式 | 第32-38页 |
·定义(赋值)使用关系 | 第32-34页 |
·自赋值 | 第34-35页 |
·空语句嫌疑 | 第35-36页 |
·空的条件语句块 | 第36页 |
·嫌疑的赋值运算 | 第36-37页 |
·条件分支相同 | 第37页 |
·比较运算 | 第37页 |
·移位运算问题 | 第37-38页 |
·C\C++的疑问模式 | 第38-53页 |
·内存分配 | 第38-39页 |
·对象生命周期管理 | 第39页 |
·sizeof相关问题 | 第39-40页 |
·运算符优先级 | 第40-41页 |
·运算符new和delete的定义 | 第41-42页 |
·未定义的计算 | 第42-43页 |
·枚举类型比较 | 第43页 |
·运算符重载 | 第43页 |
·无返回值路径 | 第43页 |
·无效和隐藏的typedef | 第43-44页 |
·文件10操作 | 第44-46页 |
·语言惯用型 | 第46-47页 |
·逻辑结构疑问 | 第47-48页 |
·语法结构一致性 | 第48页 |
·不兼容的类型转换 | 第48-50页 |
·非一致的结构 | 第50-51页 |
·构造函数 | 第51-52页 |
·对象泄漏 | 第52-53页 |
·Java的疑问模式 | 第53-57页 |
·类型转换不准确 | 第53-54页 |
·多余的锁操作 | 第54页 |
·字符串比较 | 第54-55页 |
·怪异的赋值表达式 | 第55-56页 |
·无后效语句 | 第56页 |
·类的设计问题 | 第56-57页 |
·疑问模式和检测方法总结 | 第57-59页 |
第五章 重复代码检测方法 | 第59-72页 |
·背景介绍 | 第59页 |
·重复代码及其检测技术 | 第59-61页 |
·重复代码的产生 | 第59-60页 |
·重复代码分类 | 第60页 |
·检测技术分类 | 第60-61页 |
·设计与分析 | 第61-67页 |
·算法设计 | 第61-67页 |
·复杂度分析 | 第67页 |
·实验结果 | 第67-71页 |
·单文件测试结果对比 | 第67-69页 |
·多文件测试结果对比 | 第69-71页 |
·分析与评价 | 第71-72页 |
第六章 总结与展望 | 第72-73页 |
·工作总结 | 第72页 |
·展望 | 第72-73页 |
参考文献 | 第73-75页 |
附录 | 第75-76页 |
致谢 | 第76-77页 |
攻读硕士学位期间发表的学术论文目录 | 第77页 |