论文部分内容阅读
软件缺陷是导致软件质量下降,软件成本升高,开发周期加长等的重要因素。为了帮助程序员更快的查找软件缺陷,研发人员们经过不懈努力,提出了一些行之有效的方法,静态分析就是众多方法之一。
静态分析通过分析程序的源代码或者目标码,推测程序运行时可能表现出来的异常行为,进而发现代码中可能存在的缺陷。对程序进行静态分析的技术有很多,如自动定理证明、模型检测、抽象解释、符号执行和基于缺陷模式匹配的代码分析等。近年来,研究人员使用基于缺陷模式匹配的代码分析技术,开发出了许多十分有效的静态程序缺陷查找工具,如FindBugs、PMD、Jlint、Lint4j、Metacompilation和SABER等。但这些工具并没有提供足够方便易用的扩展方式让用户添加新的缺陷模式,即它们的扩展性不够好。
本文设计了一个易扩展的基于缺陷模式匹配的静态程序缺陷查找工具——CODA(COde Defect Analysis)。与其他同类工具相比,CODA着重考虑了工具的扩展性。具体说来,CODA为用户提供若干简便易用的模板来帮助用户添加两大类不同的缺陷模式:(1)与方法调用相关的缺陷模式,和(2)与类继承、接口实现相关的缺陷模式。
此外,本文还介绍了CODA中的部分实现,以及涉及到的一些常用分析技术,如控制流图分析、类型分析、常量传播分析、活性变量分析、空指针分析、锁计数分析等等。