1 写在最前
Cppcheck是一个开源的C/C++代码静态分析工具,用于发现代码中的bug、不规范写法、内存泄漏和不必要的变量等问题。它能够检查源代码中的语法错误、空指针解引用、内存泄漏、不一致的操作和其他可能的问题。它支持多种平台和编译器,并可以集成到各种开发环境中,如Visual Studio、Eclipse等。
本文采用独立安装方式,为了不同基础的小白都能上手cppcheck,不免啰嗦几句。
2 cppcheck安装
2.1 下载软件
Win10系统下使用CppCheck,需安装Python(推荐python3)。[注意python要注册进环境变量,否则cppcheck无法正常调用!!!],Python官网 Welcome to Python.orgThe official home of the Python Programming Language
https://www.python.org/
官网默认可以下载的都是最新版本,CppCheck为开源软件,因此可以在sourceforge找到源码及历史版本,地址 cppcheck - Browse Files at SourceForge.netStatic source code analysis tool for C and C++ code
https://sourceforge.net/projects/cppcheck/files/
如图官网首页,点击Installer,下载该软件(这是当前最新版,首页下方可以找到其他版本)

2.2 软件安装
双击安装包。
![]()
弹出安装向导,点击next。

弹出安装模块选择的对话框,注意安装路径不要有中文、空格或其它特殊符号,否则会导致插件调用异常问题!!!

为了方便使用一些特定功能,Python addons一项选择Entire feature........,点击next。

安装向导要求关闭其它可能会操作到的软件,手动关闭所有即可。

点击finish完成。

2.3版本安装完成之后需要重启,新版已取消重启操作,完全没必要!!!

2.3 cppcheck配置环境变量
安装完成之后,为了方便命令行使用,需要为cppcheck配置环境变量,如果只使用图形界面可跳过2.3小节.
在安装目中找到cppcheck.exe的路径,添加到系统环境变量中。步骤如下:
1、找到cppchekc安装路径,复制安装目录

2、将安装路径添加到系统环境变量,左下角的搜索栏,输入 环境变量,如图所示,进入

如图所示点击环境变量。

双击Path一栏。

3 命令行使用示例
命令行使用和图形化界面选一个就可以了,不会使用命令行小伙伴的可跳过此章节.
3.1 命令行基本使用
打开cmd终端 ,键入命令
cppcheck --enable=all --addon=misra C:\Users\hemenghao\Desktop\service 2> errorLog.txt
参数释义:
--enable=all 开启所有扫描项
--addon=misra 执行misra插件,扫描代码是否符合misra2012规范
C:\Users\hemenghao\Desktop\service 需要扫描的文件
2> errorLog.txt 指定输出文件名为errorLog.txt(最好指定文件绝对路径),默认放在用户目录下(C:\Users\hemenghao)
如图所示,cppcheck扫描过程。

输出文档示例。

3.2 进阶
使用json文件配置插件参数,新建文本文档 misra.json,编辑内容如下:

相关语句解释:
"script":"D:/cppcheck2.3/addons/misra.py" 指定misra插件的路径(该插件就是一个python脚本)
"--rule-texts=D:/cppcheck2.3/addons/misra2012.txt" 指定规则文本的路径,规则文本详见文末!!!
"--suppress-rules 17.3,21.12" 指定不扫描的规则项
配置好插件参数后执行命令
cppcheck --enable=all --addon=D:\cppcheck2.3\addons\misra.json C:\Users\hemenghao\Desktop\service 2> errorLog.txt
参数释义
--enable=all 开启所有扫描项
--addon=D:\cppcheck2.3\addons\misra.json 指定json配置文件的路径
C:\Users\hemenghao\Desktop\service 需要扫描的文件
2> errorLog.txt 指定输出文件名为errorLog.txt(最好指定文件绝对路径),默认放在用户目录下(C:\Users\hemenghao)
输出文档示例。

4 图形化界面使用示例
以下介绍使用cppcheck工具对源码进行常规检查和misra c 2012规范检查的方法。
4.1 图形化界面配置
打开cppcheck,找到顶部菜单栏的“编辑(E)”->“首选项(P)”,进入到首选项配置界面。
1)默认的配置中,cppcheck显示结果的界面没有显示违例的规则项,比如:misra-c2012-7.8,这里勾选“在列”Id”中显示错误Id”,如图:

2)配置插件(Addons)
Cppcheck的进行静态代码检查需要Python工具的支持,这里指定python程序所在路径。若要进行Misra c 2012规范检查,需要指定MISRA规则定义文档所在路径。在首选项配置窗口顶部找到“Addons”,选择python路径和MISRA规则定义文档所在路径,如图所示:

以下再啰嗦几句:
Cppcheck本身支持检查Misra c 2012的规范,但是想要具体罗列出检查出的违例项,需要一个描述了Misra规则的文件。文件详见文末,可以直接使用。misra.py 用于验证是否符合 MISRA C 2012,这是一套专有的指南,用于避免有问题的代码,为嵌入式系统开发。该标准是专有的,不允许开源工具分发 Misra 规则文本。因此 Cppcheck 不允许直接编写规则文本。允许cppcheck分发规则并显示每个违反规则的id(例如,[c2012-21.3])。要获取规则文本,请从MISRA (https://www.misra.org.uk) 购买 PDF。如果您从 PDF 中的“附录 A - 指南摘要”中复制规则文本并将其写入文本文件,则通过使用该文本文件Cppcheck 可以编写正确的警告消息。
要了解如何格式化文本文件,请查看此处列出的文件:
https://github.com/danmar/cppcheck/blob/main/addons/test/misra/
4.2 新建cppcheck项目
使用cppcheck-gui对代码进行检查,首先要建立cppcheck工程。找到顶部菜单栏的“文件(F)”->“新建项目文件(N)…”,然后选择项目文件创建的路径,
新建项目完成后,会自动弹出cppcheck项目配置界面。下面,开始配置刚刚新建的项目。

如果不小心退出了项目配置界面,想要重新配置,就单击菜单栏的“文件(F)->编辑项目文件(E)”,就能重新配置cppcheck项目,
基本上cppcheck静态检查的相关配置(比如增减忽略的Misra规则、增减忽略检查的宏定义、增加包含的头文件等)都通过该操作完成。
4.3 配置cppcheck项目
1)弹出cppcheck检查配置界面,关于路径和宏定义配置界面如下图所示:

2)关于配置忽略检查的源文件和忽略检查的规则如下图所示:

3)点击添加会弹出所图所示的”编辑抑制“对话框,填完之后,点击“确定”,完成一条抑制规则检查的添加。

另外,也可以通过此页面抑制对应的规则项,不过是全局的

4)最后使能静态检查插件,选择规则文本路径

5)配置cppcheck项目完成后,选择“确定”,确认创建项目文件。Cppcheck项目配置完成后,会自动进行一次代码检查,下图所示:

5 Cppcheck检查结果
5.1 导出报告
使用cppcheck对代码进行静态检查后,可以将检查结果可以以*.txt或*.xml文件的形式导出。操作步骤:单击菜单栏的“文件(F)->保存结果到文件(S)...”,出现以下界面:

5.2 查看报告
xml格式可直接通过excel打开或使用第三方工具转为html格式通过浏览器查看.如下图所示使用excel打开扫描报告:

6 其它补充项
6.1 详细参考
官方参考手册
http://cppcheck.sourceforge.net/manual.pdf
http://cppcheck.sourceforge.net/manual.pdf
6.2 misra C 2012规则文本
使用cppchek进行静态代码扫描时,只有添加了该规则文本,cppcheck才能指出详细的misra违例信息!!!

6.3 misra C 2012规范中文版

6.4 misra C 2012规范英文版

有需要规则文本的,去某鱼搜“MISRA C 2012规则文本”,懂的都懂!!!
250

被折叠的 条评论
为什么被折叠?



