CppCheck代码静态检测工具

文章目录

  • 一、简述
  • 二、安装
  • 二、使用
    • 2.1 第一个测试程序
    • 2.2 检查文件夹中所有文件
    • 2.3 检查部分或过滤部分文件
  • 三、严重性
  • 四、其他常用用法
    • 4.1 启用其他检查
    • 4.2 保存结果到文件
    • 4.3 多线程检查
    • 4.3 设置目标平台
    • 4.4 与cmake项目配合使用
    • 4.5 宏定义
    • 4.6 XML格式输出
    • 4.7 让git提交前支持CPPCheck

一、简述

Cppcheck是一种C/C++代码缺陷静态检查工具。不同于 C/C++ 编译器及很多其它分析工具,它不检查代码中的语法错误。Cppcheck只检查编译器检查不出来的bug类型,其目的是检查代码中真正的错误。

支持的代码和平台:

  • 可以检查非标准代码,包括不同的编译器扩展、内联汇编代码等。
  • Cppcheck应该被处理最新C++标准的任何C++编译器所编译。
  • Cppcheck应该在任何有足够CPU和内存的平台上工作。

要知道Cppcheck有限制,Cppcheck很少在报告错误方面出错,但有很多bug,它不能检测。

通过仔细测试软件,你会发现软件中有更多的bug,而不是使用Cppcheck。但Cppcheck仍可以检测到在测试和评估软件时错过的一些bug。

二、安装

可以直接在GitHub上克隆代码,然后切换到对应版本后进行编译安装:

$ git clone [email protected]:danmar/cppcheck.git
$ cd cppcheck
$ git checkout 1.87
$ cd ..
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/cppcheck-1.87 ../cppcheck/
$ make SRCDIR=build CFGDIR=cfg HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
$ make install

然后修改PATH环境变量,添加/opt/cppcheck-1.87/bin到PATH中。

二、使用

2.1 第一个测试程序

下面是一个简单的代码:

int main()
{
	char a[0];
	a[10] = 0;
	return 0;
}

将代码保存进file1.c中,然后执行:

cppcheck file1.c

将得到如下输出:

Checking file1.c...
[file1.c:4]: (error) Array 'a[10]' index 10 ou

你可能感兴趣的:(代码质量,静态检测,CppCheck,代码检测,代码质量)