cppcheck的安装与使用
一、cppcheck安装
环境:Ubuntu20.04,gcc-9.3.0/gcc-7.5.0
1、方法一:apt源安装cppcheck(推荐,无需编译安装,自动配置环境变量)
|
查看版本情况
|
2、方法二:编译安装cppcheck
http://cppcheck.net/官网下载cppcheck源码包(.tar.gz),github下载也可
首先,解压cppcheck压缩包
|
解压完成之后,进入cppcheck文件夹
|
可以看到,cppcheck包含CMakeLists.txt,可以使用CMake编译
我们先创建一个build的文件夹,进入build的文件夹
|
下面进行编译,我这里gcc版本为9.3.0,经测试7.5.0也没问题
首先使用cmake ..命令将CMakeLists.txt转换为make所需要的makefile
|
然后,通过make开始编译,-j是代表jobs,表示使用多少个线程进行编译
|
编译完成,进入bin目录下查看是否生成cppcheck的可执行文件
|
ok,编译安装完成!当然也可以将可执行文件添加到环境变量中使用,方便操作,操作如下。
|
然后点击i键进行编辑状态,文件末尾输入
|
按下Esc,输入:wq保存,然后执行source /etc/profile,即可直接使用cppcheck进行相关操作
二、cppcheck的使用
简述:cppcheck 是一种 C/C++ 代码缺陷静态检查工具。不同于 C/C++ 编译器及很多其它分析工具,它不检查代码中的语法错误。Cppcheck 只检查编译器检查不出来的 bug 类型,其目的是检查代码中真正的错误。
部分操作介绍,如需更多操作说明,请使用cppcheck --help进行查看
1、检查某一个c/c++文件
|
2、检查文件夹中的所有文件
|
cppcheck将递归检查path文件夹下所有源文件
3、启用消息
默认情况下,只显示错误消息,可以通过–enable命令启用更多检查
启用警告消息:
|
启用性能消息:
|
启用信息消息:
|
由于历史原因 --enable=style
可以启用警告、性能、可移植性和样式信息。当使用旧 XML 格式时,这些都由 style 表示:
|
启用警告和性能消息:
|
启用unusedFunction检查
|
启用所有消息:
|
4、将检查结果保存到文件中
|
5、多线程检查
|
多线程检查时,不会对ubusedFunction进行检查
6、CMake项目cppcheck检查的使用
首先,在CMakeList.txt同目录下,通过cmake生成项目的compile_commands.json文件
|
然后即可使用cppcheck对该项目进行检查
|
可通过重定向将检查结果导入到文件中
7、屏蔽某种错误
|
8、使用suppressions.txt 统一屏蔽,--suppressions-list=suppressions.txt
示例:
|
格式:
|
三、常见错误修改
(1)隐式构造问题
示例: (style) Class 'Slice' has a constructor with 1 argument that is not explicit.
解决方法:在Slice构造函数前加上explicit,使其必须显示构造,当然这种有时并非必须显示构造
(2)变量未初始化问题
示例:(warning) Member variable 'TableFileCreationInfo::file_size' is not initialized in the constructor.
解决方法:在构造函数中加入变量初始值
(3)变量/函数未使用问题
示例:(style) Unused variable: output
示例:(style) The function 'rocksmt_wal_iter_status' is never used.
解决方法:考虑后期是否还需要,不需要的及时删除,需要的保留
(4)raw loop问题
示例:(style) Consider using std::fill algorithm instead of a raw loop. [useStlAlgorithm]
示例:(style) Consider using std::transform algorithm instead of a raw loop. [useStlAlgorithm]
解决办法:将循环便利替换为STL标准库算法函数
(5)引用传递问题
示例:(performance) Function parameter 'f' should be passed by reference.
解决办法:在声明function时,能用引用传递的尽量使用引用传递,尽量避免值传递
(6)const参数问题
示例:(performance) Function parameter 's' should be passed by const reference. [passedByValue]
解决办法:形参s前加上const,在函数中未被修改的变量,尽量声明为const
cppcheck的安装与使用相关推荐
- Ubuntu下cppcheck的安装和使用
一.cppcheck的安装 # DESTDIR 安装到的目的路径 # FILESDIR 实际安装路径为`DESTDIR+FILESDIR`,注意这两个路径末尾斜杠都要去掉 make -j8 FILES ...
- cppcheck的安装和使用
首先从这里下载linux版本的:http://sourceforge.net/projects/cppcheck/files/cppcheck/ 然后下载对应的版本,解压,之后安装: 编译: g++ ...
- cppcheck的安装及基本使用
本文主要介绍cppcheck这款C/C++源码静态分析工具的安装及基本使用方法. 其github仓库:https://github.com/danmar/cppcheck 官网:https://cpp ...
- cppcheck编译安装命令
make install SRCDIR=build CFGDIR=/usr/bin/cfg FILESDIR=/usr/bin
- eclipse安装cppcheck
简介: cppcheck 是一个 c 和 c++ 的静态的代码检查分析工具,不用运行程序就可以进行代码的检测. 可以检测一般的内存泄漏和程序编码错误 0.安装 cppcheck 1.57版本,这个版本 ...
- 【C/C++】C++代码质量检核工具-cppcheck
[C/C++]C++代码质量检核工具-cppcheck cppcheck 介绍 Cppcheck是一个用于C/C++代码的静态分析工具.它提供独特的代码分析来检测bug,并侧重于检测未定义的行为和危险 ...
- Linux下cppcheck静态检测工具
1. cppcheck工具说明: cppcheck工具是一个C/C++代码缺陷静态检查工具.它不仅可以检查代码中的语法错误,还可以检查出编译器检查不出来的缺陷,从而辅助提升代码质量. 2. Linux ...
- cppcheck使用指南
cppcheck使用指南 Table of Contents 1 cppcheck简介 2 cppcheck使用 3 cppcheck与其他软件的整合 3.1 与VisualStudio的配合 3.2 ...
- 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck、TscanCode)
目录 引言 主流静态代码扫描工具概况 费用和活跃度 准确性对比 C/C++静态检测/静态分析|TscanCode|cppcheck TscanCode Windows下的安装与使用 Linux下的安装 ...
- QT调试技巧-使用静态代码检测工具Cppcheck检测代码
#QT调试技巧-使用静态代码检测工具Cppcheck检测代码 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 环境: Qt Creat ...
最新文章
- 流畅的验证组件:FluentValidation
- pycharm新建文件夹时新建python package和新建directory有什么区别?
- 使用 Nginx 提升网站访问速度
- 断点运行的参数_利用 AicLaunchAdminProcess 参数污染 bypass UAC
- mock如何为空_如何 mock 数据
- 含隐变量模型求解——EM算法
- Java运行环境下载
- xodo pdf android,手机上最好用的pdf阅读器,没有之一——【Xodo】
- FTP服务器的上传文件端口为,FTP服务器上传文件时的端口
- Simon Game实现过程记录
- 陶 朱 商 经
- maya多边形建模怎样做曲面_maya多边形建模教程_maya建模教程
- java web架构配置_javaweb(1) tomcat配置和web程序结构
- 会员卡券领取 小程序_新增卡券功能在哪 微信小程序内直接领取卡券方法
- mysql参数化查询 in_mysql in 查询参数化
- NLP入门之综述阅读-自然语言处理发展及应用综述
- C++类中有如vector, map等容器类成员时如何编写构造函数
- 对测试驱动开发的一些理解
- OPENCV 实现引导滤波
- Stata:安装ivreghdfe包
热门文章
- Keil_V5 使用小技巧
- minist数据集图片查看
- matlab的机器学习工具箱在哪,[matlab]机器学习及SVM工具箱学习笔记
- 爱发php企业发卡网源码_企业级发卡平台源码,界面友好,支付通道齐全,运营级发卡平台源码...
- linux 找不到libaio.h,Linux上的POSIX AIO和libaio之间的区别?
- WiFi技术安全调研报告
- VSCode Latex Workshop 设置 XeLatex 编译
- android 屏幕坐标系,android 屏幕坐标总结
- 【Makefile】Makefile编写规则
- 全链路压测之全链自动化