论文部分内容阅读
随着科学技术日新月异的发展和软件规模的不断扩大,软件在各个行业得到了广泛的运用,已经成为生活中不可分割的组成部分。虽然软件经过严格的测试,但是每千行代码中平均仍然有10-20个软件缺陷,所以如何提高软件质量,排除更多的软件故障是研究的主要方向。基于缺陷模式的静态软件缺陷检测技术是近年来发展较快的一种静态源代码分析技术,主要通过提取程序的缺陷模式,然后利用正则表达式来描述软件缺陷模式,最后利用模式匹配算法查找到该类缺陷,从而定位软件缺陷故障。此类缺陷检测由于使用简单和效率高在软件测试中得到了广泛的运用。本文的工作包括如下内容:(1)本文基于缺陷模式的静态开源软件Cppcheck为载体,着重讨论了C/C++语言缺陷缺陷的研究和分类。针对开源软件缺陷检测工具Cppcheck软件存在的不足,主要分析了Cppcheck架构、缺陷模式表示与实现,在对已收集350个缺陷模式分析总结基础上,对其完善,提高缺陷检测能力。(2)针对开源软件Cppcheck误报率和漏报率过高,且不能检测出运行时程序缺陷等问题,本文在基于Cppcheck程序的基础上,提出了抽象区间集算法,并将其应用于数组边界缺陷检测。在Cppcheck框架内,通过引入区间集概念,建立每个程序点变量和表达式的整型区间集和数组区间集,并由此定位出程序中的矛盾点,最终检测出程序缺陷。最后通过将开源软件Cppcheck改进与原始的开源软件Cppcheck的实验进行对比,验证了改进开源软件的有效性。本文通过对开源软件Cppcheck程序进行分析和研究,在其框架内利用分类的C/C++缺陷模式对其进行完善提高检测率,同时针对误报率和漏报率过高提出抽象区间集算法,提高其部分动态缺陷能力的检测。通过实验3.6表明改进的Cppcheck平均查准率达到83%,误报率在10%-17%之间,缺陷检测能力明显提高,同时误报率不高。实验4.7表明改进后的Cppcheck平均检测率相对于Cppcheck检测率高出18.5%,缺陷检测能力明显提高,漏报率降低18.5%。综上所述:Cppcheck缺陷检测能力有很大提高,漏报率降低,取得良好的效果。