在汽车行业嵌入式软件开发的进程中,单元测试环节对代码进行静态检查是至关重要的一环,它能够提前发现代码中的潜在缺陷、逻辑错误以及不符合编码规范之处,为后续的集成测试、系统测试筑牢根基,极大程度地降低软件开发成本,提升软件质量。
我之前团队习惯使用QAC这款强大的静态分析工具。 然而,QAC 是一款付费软件,让许多普通规模的汽车相关企业,尤其是初创型公司或是预算有限的中小企业望而却步。
在没有充足资金投入购买此类工具的情况下,难道就只能放弃高效的静态检查了吗?实则不然。
在此,强烈推荐使用 Cppcheck 这款开源免费的静态代码分析工具。
Cppcheck 拥有诸多优势,一方面,它支持对 C 和 C++ 代码进行广泛且细致的检查,无论是常见的空指针引用、数组越界、内存泄漏等经典错误,还是较为隐晦的未初始化变量使用、逻辑运算优先级混淆等问题,都能被有效识别。
另一方面,它具有出色的跨平台特性,无论是 Windows、Linux 还是 Mac 系统,都能无缝适配,这对于汽车嵌入式开发中多样的开发环境来说极为便利。
下载链接:https://cppcheck.sourceforge.io/
这里我使用的是Windows版本安装完成后,效果如下:
Cppcheck的使用比较简单,主要分为两步,一是整理好需要检查的软件代码工程;二是使用Cppcheck进行检查。
1、整理代码工程
拷贝一份代码工程用于做静态检查,整理代码工程只需要保留软件工程中的所有头文件和源文件,其他的编译文件、配置文件等,全部删除就可以。
原工程如下:
整理后效果如下:
2、静态检查
静态检查前,需要将Cppcheck软件的检查设置修改成我们预期的检查项,以下是我的静态检查设置:
点击分析,选择目录,加载需要静态检查的软件工程:
导入软件工程后,立刻会开始静态检查:
静态检查后可以看到有问题文件的说明,结果如下:
也可以设置过滤,查看不同等级的静态检查结果。
最后,可以在统计中查看检查结果汇总。
可以将结果导出成PDF文件。
结果参数说明如下:
静态检查结果PDF如下: