天天看点

Ubuntu使用splint查找C代码的BUG

1 安装splint

sudo apt-get install splint
           

 2 测试代码main.c如下

#include <stdio.h>

// 全局变量,所有函数公用的
int global = 0;

// 求长方形的面积
int rect(int a, int b)
{
    static int count = 0;
    count++;
    global++;
    int s = a * b;
    return s;
}

// 求正方形的面积
int quadrate(int a)
{
    static int count = 0;
    count++;
    global++;
    int s = rect(a, a);
    return s;
}

int main()
{
    int a = 3;
    int b = 4;
    int *pa = &a;
    int *pb = &b;
    int *pglobal = &global;
    int (*pquadrate)(int a) = &quadrate; // 定义了函数指针
    int s = (*pquadrate)(a);             // int s=quadrate(a);
    printf("%d\n", s);
    return 0;
}
           

3 使用splint检查源代码main.c

splint main.c

 4 结果截图如下

Ubuntu使用splint查找C代码的BUG

5 检测结果

  • 变量声明了但是没有使用,删掉即可
  • 变量与函数是exported(输出,出口) ,但是外面没有用, 加 static关键字即可

6 resolved解决了

Ubuntu使用splint查找C代码的BUG