代码静态分析工具 --- CppCheck

1. 概述

静态程序分析是指使用自动化工具软件对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查、安全缺陷检测、程序优化等。它的特点就是不执行程序,有助于在项目早期发现以下问题:变量声明了但未使用、变量类型不匹配、变量在使用前未定义、不可达代码、死循环、数组越界、内存泄漏等。
静态分析工具相比编译器,对代码进行了更加严格的检查,像数组越界访问、内存泄漏、使用不当的类型转换等问题,都可以通过静态分析工具检查出来,我们甚至可以在分析工具的分析标准里定义代码的编写规范,在检测到不符合编写规范的代码时抛出告警,这些功能都是编译器没的。
编译器负责把C源程序快速、高效地转变为可执行文件,不对代码做类型检查(特别是对分别编译的程序),有益于做到快速与高效。而Lint没有“高效”的要求,可以花更多时间对代码进行更深入、仔细的检查。”

2. 工具简介

(1)下载安装(Linux)
官方网址:http://sourceforge.net/projects/cppcheck/
(2)安装方式:解压后,直接make进行编译,完成后,make install进行安装
(3)验证安装:cppcheck -v 查看是否安装成功
(4)特点介绍
主要检查编译器通常不能发现的缺陷。
cppcheck能够发现很多错误,但不能发现所有的错误。

3. 基本使用

(1)检查单个文件:cppcheck foo.c
(2)检查文件夹:cppcheck path
(3)排除一个文件或者一个文件夹:cppcheck -isrc/foo.c src
(4)使能检查规则:
默认:–enable=error
–enable=all
–enable=unusedFuntion path
–enable=style
(5)规则定义:
error:出现的错误
warning:为了预防bug防御性编程建议信息
style:编码格式问题(没有使用的函数、多余的代码等)
portablity:移植性警告。该部分如果移植到其他平台上,可能出现兼容性问题
performance:建议优化该部分代码的性能
information:一些有趣的信息,可以忽略不看的。
(6)保存结果到文件中:重定向“>”
(7)多线程检查代码(提高检查速度,充分利用CPU功能):cppcheck -j 4 src

4. 高级使用

(1)xml 输出
使用方式:cppcheck –xml-version=2 foo.cpp
error的组成元素
id:error的id
severity:error的性质(error、warning……)
msg:error的具体信息(短格式)
verbose:error的信息(长格式)
location的组成元素:
file:含有相对或者绝对路径的文件名
line:行数
msg:消息描述
(2)改良输出结果
cppcheck –template=vs path (Visual Studio 兼容模式)
cppcheck –template=gcc path (Gcc兼容模式)
cppcheck –template={“{file},{line},{severity},{id},{message}”} (自定义模式)
(3)输出过滤器(特定的错误信息输出
命令行模式:cppcheck –suppress=memleak:src/file1.cpp src/
使用文件模式(将过滤规则存到文件中:cppcheck –suppressions suppressions.txt src/
(4)报告美化
./cppcheck test.cpp –xml 2> err.xml

你可能感兴趣的:(Linux,代码静态检查,静态程序分析,cppcheck)