论文部分内容阅读
嵌入式领域要求软件有很高的可靠性与安全性。C语言虽然是开发嵌入式软件普遍使用的语言,但也会存在很多使用方式容易引起安全问题。通过设计支持“C语言安全编程规范”的自动化检测工具来强化C语言使用方式已成为提高程序可靠性与安全性的一种十分有效的方法。公开文献表明,我国目前几乎没有制定针对所有高可靠、高安全的嵌入式领域进行软件开发的C编程标准及自主研发嵌入式领域的通用C代码规则检测工具。在众多的编程规范中MISRA C:2004已成为高可靠性、高安全性的嵌入式领域中非常有影响力的软件开发编程规范。因此设计实现一个基于MISRA C:2004标准的通用自动化检测工具具有重要的现实意义。本论文重点对检测C程序代码是否符合MISRA C:2004编程规范中规则的方法进行了深入研究,并设计实现了基于MISRA标准的通用C语言自动化检测工具。本文完成的主要内容为:1.对现有静态信息提取方法进行研究,本着提取静态信息具有完整性与规范性的原则,提出使用Parser Generator中LEX和YACC构造词法、语法分析器对源程序进行信息提取的策略,并对LEX和YACC构建词法、语法分析器中的关键技术进行了分析。2.对比分析现有代码规则检测工具的实现方法,针对MISRA C:2004编程规范中不同规则,采用对词法分析及语法分析进行扩充的思路对本课题完成规则检测的方法进行了研究,确立实施代码规则检测的方法。3.对基于MISRA C:2004标准的通用自动化检测工具进行需求分析,设计总体框架,实现各模块功能。包括MISRA规则配置文件的生成、维护及操作;对目标对象根据MISRA标准中不同规则分别使用YACC构造支持MISRA标准的语法分析器及使用LEX构建词法分析器将源程序的静态信息转为一种中间模型;应用检测算法对中间模型进行遍历、匹配等操作实现对MISRA规则的检测;查看与导出检测结果。4.以C程序代码为待测对象,对工具功能的有效性进行验证,结果表明,本文设计实现的基于MISRA标准的通用C语言自动化检测工具能实现设计时提出的功能要求,且检测结果比较准确。