论文部分内容阅读
信息产业的飞速发展对软件的可靠性提出了更高的要求,程序静态分析作为不执行待测程序自身的一种程序分析技术,其目标是验证代码是否满足指定的检测标准,它有助于在项目早期发现代码中存在的缺陷。传统的静态缺陷分析方法存在缺陷规则有限、缺陷检测结果不明确等问题,本文通过研究形式化静态分析的原理及相关技术,提出一种基于模型检测技术的源代码静态分析方法。以Java语言为例,根据程序的语法及语义特征定义缺陷模式,分析CTL的逻辑特性模式并构建元数据,利用元数据集中的原子命题和时态逻辑符号抽象出缺陷的CTL表示,构建积木式缺陷集,以使用户能够利用缺陷集的元数据通过简单的CTL逻辑操作,自定义待检测的缺陷种类,实现缺陷的半自动化扩展。作为系统核心部分,验证引擎从源程序中抽取控制流结构,进行符合控制反向(IOC)机制的元数据的动态匹配与标记。采用时序逻辑规约和标记后的控制流结构对程序建模,并结合NuSMV模型验证器实现验证,在检测到缺陷后能返回携带源程序行信息的反例路径,使检测结果更具备指导性。实现了原型系统,结合开源程序的检测结果表明,本文所提出的方法能够可行且有效的应用于Java程序的静态缺陷分析,同时实现缺陷的半自动化扩展及交互式的反例结果输出。