1. 引言
C语言在嵌入式领域应用非常广泛,其主要优点是灵活和高效,但若在使用过程中不加以规范,容易引入各种潜在的代码问题。
先来看一段C代码,这段代码中有多少C语言的使用错误?
uint8_t vFunc(void)
{
uint8_t index = 0;
for (index = 0; index < 5; index++)
{
if (index == 3)
{
vFunc_1(&index);
return true;
}
}
}
比较容易发现的问题有:
- for循环结束后没有返回值
不太容易发现的问题有:
- index初值没有使用
- index值可能在vFunc_2()内被清零,使得循环一直被执行
为了在编码阶段找出这些问题,常用的分析方法有静态代码分析和动态代码分析。有研究表明,使用动态代码分析找到的问题中的95%都可以用静态代码分析找到。
中小型嵌入式软件项目一般使用静态代码分析工具作为主要分析手段,其中最常见的工具是PClint。PCLint是GIMPEL SOFTWARE 公司研发的C/C++软件代码静态分析工具,支持几乎所有流行的编辑环境和编译器。PC-lint不但可以检测单个文件,也可以从整个项目的角度来检测问题。支持Scott Meyes的名著(Effective C++/More Effective C++)中说描述的各种提高效率和防止错误的方法。
在我们的项目中,使用C语言作为PIC32单片机的编程语言,开发环境是MPLABX,代码查看工具是source insight。本文的主要内容就是如何将PCLint工具集成到上述两种工具中。集成完成后,可通过快捷键调用lint工具,对目标代码进行静态分析,再根据分析结果优化代码。
2. 配置PCLint
2.1. 安装PCLint
- 下载PCLint并安装:http://download.csdn.net/detail/b5110/6966909
- 升级到最新版本: http://www.gimpel.com/html/ptch90.htm, 下载下列文件:
- 复制升级包和lpatch到安装路径(C:\lint)
- 按住shift+右键,打开快捷菜单,选择“在此处打开命令窗口”
- 输入命令并执行:lpatch l9-a-b.lp, …, 依次类推直到l9-K-L.lp(每次输入一条执行)
- 输入命令lint-nt -v,完成上述步骤后,显示当前版本是9.00L
2.2. 下载xc32编译器共用的文件
打开http://www.gimpel.com/html/ptch90.htm,下载Compiler