当前位置:问答库>论文摘要

题目:针对MISRA C的程序检测技术

关键词:程序检测;MISRA C;CFPDL;抽象语法树

  摘要


C语言是广泛使用的安全关键领域软件开发语言,但C语言的不安全性和易出错性使得软件开发过程中常常使用编码规则限制软件开发人员对C语言的使用。MISRA(The Motor Industry Software Reliability Association)C编码规则是安全关键领域广泛使用的编码规则,针对其的程序检测逐渐成为工业界和学术界研究的热点。传统的静态检测技术和编译器集成检测技术在安全性、稳定性方面存在一些不足,为了解决这些问题,本文针对MISRA C中易于形式化描述的规则,设计了一种代码缺陷模式描述语言CFPDL(Code Flaw Pattern Description Language);并对MISRA C规则进行了以检测方式为中心的分类,针对这些分类,本文提出了一种针对MISRA C的程序检测方法;最后设计并实现了MISRA C程序检测系统,并基于该系统进行实验,验证本文方法的有效性,并将本文方法同其它检测方法进行了对比。

首先,针对MISRA C中易于形式化描述的规则,本文从描述违背规则代码的语法树节点属性和结构的角度出发,设计了代码缺陷模式描述语言CFPDL,给出了CFPDL的核心概念和形式化定义,通过元素、谓词、规则、模式这几个概念,CFPDL能够描述MISRA C中与语法树节点属性和结构相关的规则。

接下来,本文对规则进行了以检测方式为中心的分类,针对分类后的MISRA C规则,提出了一种针对MISRA C的程序检测方法。针对规则中预处理类规则和词法语法分析类规则,本文分别利用预处理器、C语言解析器对其进行检测。接下来,针对MISRA C中的语法树检测类规则,本文在GCC处理后获得的抽象语法树中间文件基础之上,针对程序检测重建抽象语法树。对于其中能够使用CFPDL描述的规则,本文设计并实现了一种基于CFPDL的程序检测方法,该方法将规则的CFPDL描述转换为相应的代码模式自动机,并在抽象语法树上匹配该自动机,对程序进行检测。最后,本文讨论了如何检测无法用CFPDL描述的语法树检测类规则。

最后基于本文提出的MISRA C的程序检测方法,本文设计并实现了一个MISRA C的程序检测系统。为了验证本文提出的方法有效性,本文对实际代码进行了检测实验,然后对实验进行了总结和分析,实验结果表明本文的方法可以有效地对程序中违背MISRA C规则的代码缺陷进行检测。然后将本文方法同其它检测方法进行了对比。