● 摘要
近年来,静态分析越来越多地被用于软件错误检测,这类方法能够有效地避免传统软件测试中的一些缺点和难点,如路径覆盖、大量人工干预、错误定位等。对于一些系统特定、领域特定、应用特定的错误,静态分析技术能够进行全面的分析进行检测。然而,现有的一些静态分析工具存在几点不足:对精确性的追求导致可延伸性的降低,失去实用价值;只能检查固定类型的错误,不具备可扩展性;采用人工标注等方式,增加人力负担。针对以上不足,本文着重研究基于自定义规则的静态分析技术,旨在尽可能多地发现违反给定规则的潜在缺陷。本文从三个方面研究了基于有限状态机的静态分析技术。首先,提出了AXEC-L语言来描述自定义规则,并给出了面向自定义规则的静态分析原理;其次,研究了控制流分析的相关算法,并根据AXEC-L规则的特点,提出了基于给定规则的程序化简算法;再次,研究基于AXEC-L的静态分析算法,提出了程序状态摘要机制、循环的迭代处理算法、基于规则的路径敏感算法等,并在此基础之上,研究了上下文敏感的过程间分析算法。最后,本文设计并实现了一个基于有限状态机的、可扩展的静态分析器AXEC。给出了将AXEC应用于各种特定规则的实例研究。针对Linux内核代码进行了实验,并与其他静态分析作对比分析。实验结果表明,AXEC具有良好的可扩展性,错误检测结果比较精确,并能够适用于大规模程序。
相关内容
相关标签