文章目录
- cppcheck工具介绍
- Linux安装
- linux使用示例
- 在makefile中添加cppcheck工具实例
cppcheck工具介绍
什么是静态代码检查?
静态代码检查是指在不运行程序的条件下,进行程序分析的方法。有些程序分析需要在程序运行时才能进行,这种程序分析称为动态程序分析。
静态代码检查是一种补充检查,应在先编译通过的基础上,再作进一步检查,否则反而顾此失彼、浪费时间;动态可能会暴露并需要进一步定位的问题(如没有判空指针之类的),有可能可以通过静态检查先提前警告代码作者去提前更加关注某部分内容代码的编写,从而一定程度上节省自测定位时间。
静态程序分析的复杂程度依所使用的工具而异,简单的只考虑个别语句及声明的行为,复杂的可以分析程序的完整源代码。
Cppcheck:免费软件,开包即用。支持跨平台图形化界面。
Linux安装
方法一、apt-get安装
sudo apt-get install cppcheck
sudo apt-get install cppcheck-gui
cppcheck --version
cppcheck安装出现小状况
cindy@ubuntu:~$ sudo apt-get install cppcheck
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
解决方法:
sudo killall apt apt-get
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update
方法二、手动安装cppcheck源码包
官网下载cppcheck源码包(.tar.gz)
解压压缩包并进入文件
tar -zxvf cppcheck-2.10.tar.gz && cd cppcheck-2.10/
创建一个build的文件夹,进入build的文件夹
mkdir build && cd build
首先使用cmake …命令将CMakeLists.txt转换为make所需要的makefile
cmake …
然后,通过make开始编译,-j是代表jobs,表示使用多少个线程进行编译
make -j 8
查看是否生成cppcheck的可执行文件
root@ubuntu:/opt/software/cppcheck-2.10/build/bin$ ls -la
total 92040
drwxr-xr-x 5 root root 4096 May 19 15:52 .
drwxr-xr-x 11 root root 4096 May 19 15:49 …
drwxr-xr-x 4 root root 4096 May 19 15:50 addons
drwxr-xr-x 2 root root 4096 May 19 15:50 cfg
-rwxr-xr-x 1 root root 90078632 May 19 15:52 cppcheck
-rwxr-xr-x 1 root root 4141888 May 19 15:50 dmake
drwxr-xr-x 2 root root 4096 May 19 15:50 platforms
将可执行文件添加到环境变量中使用
vi ~/.bashrc
然后点击i键进行编辑状态,文件末尾输入
export RATH=/opt/software/cppcheck-2.10/build/bin:$PATH
按下Esc,输入:wq保存,然后执行source /etc/profile,可直接使用cppcheck进行相关操作
同步
source ~/.bashrc
linux使用示例
(1)检查当前路径下的代码,并输出到 txt 文件
cppcheck . --output-file=err.txt
(2)检查某个路径,不输出过程日志
cppcheck --quiet …/myproject/
(3)启用所有检查规则,检查某个文件
cppcheck --enable=all --inconclusive --std=posix test.cpp
(4)输出 xml 格式的日志文件
cppcheck src --enable=all --output-file=log.xml --xml
在makefile中添加cppcheck工具实例
STM32开发(二十一)添加代码静态检测详解 —— Cppcheck工具