Win10下cppcheck菜鸟教程

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 Languageicon-default.png?t=N7T8https://www.python.org/

CppCheck下载地址,官网地址 Cppcheck - A tool for static C/C++ code analysisCppcheck is an analysis tool for C/C++ code.It detects the types of bugs that the compilers normally fail to detect. Thegoal is no false positives.icon-default.png?t=N7T8http://cppcheck.sourceforge.net/

        官网默认可以下载的都是最新版本,CppCheck为开源软件,因此可以在sourceforge找到源码及历史版本,地址 cppcheck - Browse Files at SourceForge.netStatic source code analysis tool for C and C++ codeicon-default.png?t=N7T8https://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.pdficon-default.png?t=N7T8http://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规则文本”,懂的都懂!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值