关键词:
GCC
C++检查规则
C++静态分析
编译原理
摘要:
C++已经成为目前最主流的开发语言之一,使用C++语言开发的工具越来越多,尤其在一些重要的领域,例如:车载控制、航天领域等。随着计算机技术的发展,C++语言开发的工具在航天领域得到了广泛的使用,不仅仅是地面、雷达等系统,在航天、导弹等系统中也变的越来越重要。由于C++的高效等特性决定了C++必然得到更广泛、更重要的应用。但是由于C++语言体系的庞杂,使用C++语言开发的软件程序,不可避免的带有缺陷。所以我们有必要自主开发一套测试工具,保证软件程序的安全、可靠运行。C++静态分析器就是此工程的一部分,开发C++静态分析器,使测试人员、开发人员可以审查代码,发现代码中的缺陷,保证代码的安全性和可靠性。
本文首先根据《MISRA C++:2008》、《C++编程规范》、《高质量C++编程》等资料,结合C++语言特性,制定了《C++静态检查规则1.0》版本。以《MISRA C++:2008》为基础,重点描述了常见的C++错误,并按重要程度,分为规则和建议。在编写工具的时候,报错加以区别。《C++静态检查规则1.0》是我们自己编写的一份手册,随着技术的发展,可以随时更新手册,开发出更符合航天领域的C++静态分析器。
其次,C++静态分析器以开源编译器GCC为基础进行开发。GCC是目前最成功的开源工具之一,其代码规范、严格。使用GCC保证了工具有很好的跨平台性,并可很大程度的保证软件开发的质量。根据《C++静态检查规则1.0》,对检查规则实现过程进行分类,主要分为词法分析过程、语法分析过程以及语义分析过程。本文重点分析了GCC中C++编译过程、程序逻辑过程以及GCC的符号表。其中GCC的符号表的正确使用是实现规则检查的基础,对符号表的查找、分析也是重点、难点。
最后,本文重点讲述了应用GCC实现规则检查的步骤、方法、具体实现过程以及简单的测试用例。对测试用例运行,C++静态分析器是正确的、可行的,应用此工具可以检测到源代码中存在的缺陷。