静态分析工具Cppcheck在Windows上的使用
之前在https://blog.csdn.net/fengbingchun/article/details/8887843 介绍过Cppcheck,那时还是1.x版本,现在已到2.x版本,这里再总结下。
Cppcheck是一个用于C/C++代码的静态分析工具,源码地址为https://github.com/danmar/cppcheck ,最新发布版本为2.10,License为GPL-3.0.它支持在Windows、Linux、Mac上安装。
Cppcheck提供了独特的代码分析来检测bugs,并专注于检测未定义的行为和危险的编码结构。它的目标是仅检测代码中的真正错误,并生成尽可能少的误报。Cppcheck关注bug而不是代码风格。
静态分析是一个非常大的领域,Cppcheck只涵盖了其中的一部分。没有一种工具能覆盖整个领域。每个工具都有独特的代码分析,使用一组工具比使用一种工具要好,是很好的补充。
未定义的行为(undefined behaviour)包括:
(1).dead pointers;
(2).除以0;
(3).整数溢出;
(4).无效的位移操作;
(5).无效的转换;
(6).STL的用法无效;
(7).内存管理;
(8).空指针解引用;
(9).越界检查;
(10).未初始化的变量;
(11).写const数据;
安装:从https://github.com/danmar/cppcheck/releases/tag/2.10 下载cppcheck-2.10-x64-Setup.msi,双击进行安装,并将安装路径即cppcheck.exe所在路径加入到系统环境变量中。
结果消息(messages)包括:
(1).error: 执行代码时未定义的行为或其它错误,如内存泄漏;
(2).warning: 执行代码时可能存在未定义的行为;
(3).style: 风格问题,例如未使用的函数、冗余代码、constness、运算符优先级、可能的错误;
(4).performance: 基于常识(common knowledge)的运行时性能建议;
(5).portability: 可移植性警告;
(6).information: 配置问题,与语法正确性无关.
注意事项:
(1).通过执行cppcheck.exe --help 可查看支持哪些输入参数;
(2).语法: cppcheck.exe [options] [files or paths]
(3).--file-filter=<str>: 设置文件过滤器,并且仅检查与过滤器匹配的文件;如--file-filter=*bar.cpp 只分析以bar.cpp结尾的文件;
(4).--cppcheck-build-dir=<dir>: Cppcheck将分析信息保存在该文件夹中,推荐使用.优点:加快分析速度,使增量分析成为可能;使用多个线程时也可以进行全程序(whole program)分析;
(5).--enable=<id>: id可为all, warning, style, performance, portability, information, missingInclude; all启用所有检查,当扫描整个程序时,建议只使用all,因为这会启用unusedFunction;可以指定多个id,用逗号分开;
(6).--file-list=<file>: 在文本文件中指定要check的文件;
(7).-I <dir>: 给出搜索include文件的路径,可有多个-I;
(8).--include=<file>: 在checked文件之前强制include一个文件;
(9).--output-file=<file>: 将结果写入文件;
(10).-v或--verbose: 输出更详细的错误信息.
这里使用GitHub Messy_Test/demo/Messy_Test 中的代码进行测试,执行命令如下所示:

在当前的results目录生成一些文件,打开其中的result.txt,内容如下:对有问题的代码行给出原因说明

GitHub: https://github.com/fengbingchun/Messy_Test
相关文章:
静态分析工具Cppcheck在Windows上的使用
之前在https://blog.csdn.net/fengbingchun/article/details/8887843 介绍过Cppcheck,那时还是1.x版本,现在已到2.x版本,这里再总结下。 Cppcheck是一个用于C/C代码的静态分析工具,源码地址为https://github.com/danmar/cppcheck …...
用一年时间脱胎换骨
生活习惯篇早睡早起11点30之前必须睡觉按时吃饭特别是早餐控糖,少吃甜食早起刷牙后,喝一杯温水保持身材,养成运动健身的习惯养成持续写作的习惯记录选题,金句,素材断舍离,定期整理,把不用的东西…...
全景拼接python旗舰版
前言在这个项目中,您将构建一个管道,将几幅图像拼接成一个全景图。您还将捕获一组您自己的图像来报告最终的结果。步骤1 特征检测与描述本项目的第一步是对序列中的每幅图像分别进行特征检测。回想一下我们在这个类中介绍过的一些特征探测器:…...
(C语言)常见的字符串与内存操作函数
问:1. Solve the problems:我想用三种方法求字符串的长度怎么办?2. strlen处理的字符串中有什么时需要注意:什么只记为什么?当什么不起什么作用时,什么不计算在内,编译器会把什么,什…...
Linux基础笔记总结
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放࿰…...
R语言学习笔记
1.R语言介绍 2.R语言安装 官网:https://www.r-project.org/ CARN → 选择China中任意镜像站点 → Download R for Windows → base(二进制版本R基础软件)→ Download R-4.2.2 for Windows (76 megabytes, 64 bit) 3.Rstudio安装 https://po…...
【软件测试】企业测试面试题9道,从自我介绍到项目考察+回答......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、自我介绍 您好&a…...
《Spring源码深度分析》第8章 数据库连接JDBC
目录标题前言一、数据库连接方式1.JDBC连接数据库2.Spring Jdbc连接数据库(JdbcTemplate)二、JdbcTemplate源码分析1.update/save功能的实现源码分析入口(关键)基础方法execute1.获取数据库连接池2.应用用户设定的输入参数3. 调用回调函数处理4. 资源释放Update中的回调函数2.q…...
ModuleNotFoundError的解决方案【已解决】
问题描述 有包却提示ModuleNotFoundError 在正常情况下,你使用pip或者conda检查是否有相应包的时候,显示的是有的。但是一旦运行程序就会报这个ModuleNotFoundError错误。 问题可能是程序运行环境不对。 解决方案 (1)进入正确…...
Vue驼峰与短横线分割命名中有哪些坑
目录 0.前言 驼峰和短横线分割命名注意事项 组件注册命名 父子组件数据传递时命名 父子组件函数传递 0.前言 Vue驼峰命名法指的是将变量以驼峰形式命名,例如 userName、userId 等,而短横线分隔符法则指的是用短横线分隔变量名,例如 user…...
从文件中加载数据以及异常处理
上期学习了数据的存储,这次学习数据的加载 你可以使用把openpyxl.load_workbook() 来打开一个已经存在的工作簿 >>> from openpyxl import load_workbook >>> wb load_workbook(filename empty_book.xlsx) >>> sheet_ranges wb[ran…...
【JavaSE】方法的使用
方法的使用BIT-5-方法的使用绪论1. 方法概念及使用1.1什么是方法1.2 方法定义1.3 实参和形参的关系(重要)1.4 没有返回值的方法2. 方法重载2.1 为什么需要方法重载2.2 方法重载概念3. 递归3.1 生活中的故事3.2 递归的概念3.2 递归执行过程分析3.3 递归练…...
ModelScope 垂类检测系列模型介绍
文章目录ModelScope介绍垂类模型介绍调用方式1 Demo Service2 Notebook3 本地使用* 二次开发总结ModelScope介绍 ModelScope 是阿里达摩院推出的 中文版模型即服务(MaaS, Model as a Service)共享平台。该平台在2022年的云栖大会上发布,之前…...
Linux | Linux卸载和安装MySQL(Ubuntu版)
最近又来到了Linux学习了,原因是要接触云服务器相关知识, 所以博主整理了一些关于Linux的知识, 欢迎各位朋友点赞收藏,天天开心丫,快乐写代码! Linux系列文章请戳 Linux教程专栏 目录 一、卸载MySQL 1…...
【C1】数据类型,常量变量,输入输出,运算符,if/switch/循环,/数组,指针,/结构体,文件操作,/编译预处理,gdb,makefile,线程
文章目录1.数据类型:单双引号,char(1B),int/float(32位系统,大小一样4B,但存储方式不同),double(8B),long double…...
【深度学习】pytorch的基础操作
import torch import numpy as np # 1.1 根据已有的数据创建张量 def test01(): # 1.1 创建标量 data torch.tensor(10) print(data) # 1.2 使用numpy数组来创建张量 data np.random.randn(2,3) data torch.tensor(data) print(data) # 1.3使用list…...
MWORKS--同元软控MWORKS介绍、安装与使用
MWORKS--同元软控MWORKS介绍、安装与使用1 同元软控介绍1.1 同元软控简介1.2 同元软控发展历史2 MWORKS介绍2.1 MWORKS简介2.2 MWORKS产品描述3 装备数字化3.1 发展3.2 内涵3.3 系统模型发展成为产品的一部分3.4 MWORKS系统模型数据管理3.4 MWORKS为装备数字化提供的套件4 下载…...
Python 解决dilb和face_recognition第三方包安装失败
目录 dilb和face_recognition第三方包安装失败 亲测有效的解决方法:whl安装方式 dilb和face_recognition第三方包安装失败 场景复现:因为需要用到dlibface_recognition,基于OpenCV做一些人脸识别的项目,在Pycharm中进行pip清华…...
Mac系统Mysql的8.0.22版本安装笔记和密码重置修改密码等问题方法
忘记密码官网教程地址:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html 5.7数据库安装指南参考:https://jingyan.baidu.com/article/fa4125ac0e3c2928ac709204.html 初次安装8.0.22遇到许多坑,密码修改失败;…...
驱动 | Linux | NVMe 不完全总结
本文主要参考这里 1’ 2 的解析和 linux 源码 3。 此处推荐一个可以便捷查看 linux 源码的网站 bootlin 4。 更新:2022 / 02 / 11 驱动 | Linux | NVMe 不完全总结NVMe 的前世今生从系统角度看 NVMe 驱动NVMe CommandPCI 总线从架构角度看 NVMe 驱动NVMe 驱动的文件…...
收藏!后端岗遇冷,大模型+算法岗成程序员新出路(小白必看)
最近刷招聘软件的开发者们,想必都感受到了一股明显的“寒意”:后端开发岗位数量肉眼可见地锐减,薪资涨幅彻底停滞,甚至有不少求职者吐槽,自己投递了70份后端简历,最终只收到3个面试邀约,更让人无…...
先收藏 | OWASP Top10 第二坑:Java开发踩过的配置漏洞
OWASP 2025最新风险榜单出炉,安全配置错误稳居第二,数据戳破行业假象:100%被测Java应用全中招,总漏洞数超71.9万次。很多Java程序员自嘲:写得了高并发、调得通分布式,却栽在最基础的配置细节上。这些看似不…...
如何在ESXi 6.7上完美驱动Realtek RTL8125网卡:完整编译与部署指南
如何在ESXi 6.7上完美驱动Realtek RTL8125网卡:完整编译与部署指南 【免费下载链接】r8125-esxi Realtek RTL8125 driver for ESXi 6.7 项目地址: https://gitcode.com/gh_mirrors/r8/r8125-esxi 想要在VMware ESXi 6.7服务器上使用Realtek RTL8125网卡&…...
开源工具维护终止:微信云备份工具cloudbak风险应对指南
开源工具维护终止:微信云备份工具cloudbak风险应对指南 【免费下载链接】cloudbak 微信云备份,备份到服务器、Docker、NAS,Web访问。 项目地址: https://gitcode.com/gh_mirrors/cl/cloudbak 事件概述:cloudbak项目生命周期…...
Vue 3D轮播插件vue-carousel-3d实战:5分钟打造电商产品展示页
Vue 3D轮播插件vue-carousel-3d实战:5分钟打造电商产品展示页 在电商网站中,产品展示的效果直接影响用户的购买决策。传统的平面轮播图已经难以满足用户对视觉体验的追求,而3D轮播效果能够以更立体的方式展示产品细节,提升用户互动…...
清音刻墨·Qwen3在新闻媒体中的应用:直播回放自动字幕生成时效性测试
清音刻墨Qwen3在新闻媒体中的应用:直播回放自动字幕生成时效性测试 1. 引言:当新闻直播遇上AI字幕 想象一下这个场景:一场重要的新闻发布会刚刚结束,编辑团队需要在半小时内将完整的直播回放配上精准的字幕,发布到各…...
AI专著撰写高效之道:优质工具推荐,专著写作快又好
学术专著的主要价值在于其系统性和逻辑的完整性,但这却是写作过程中最难以攻克的难题。与专注于单一议题的期刊文章不同,AI 写专著需要构建一个包含绪论、理论基础、核心研究、应用拓展和结论的整体框架。各个章节之间要相互关联,层层递进&am…...
LightSeq多精度推理性能深度对比:fp16与int8在不同硬件平台上的终极表现
LightSeq多精度推理性能深度对比:fp16与int8在不同硬件平台上的终极表现 【免费下载链接】lightseq LightSeq: A High Performance Library for Sequence Processing and Generation 项目地址: https://gitcode.com/gh_mirrors/lig/lightseq LightSeq作为字节…...
告别漏检!用YOLOv10+NWD搞定工业质检中的微小缺陷检测(避坑指南)
工业质检中的微小缺陷检测:YOLOv10与NWD损失函数的实战指南 在精密制造和电子元件生产线上,一个仅占几个像素的微小缺陷可能导致整批产品报废。传统检测方法面对这种挑战往往力不从心——漏检率居高不下,误检频发,产线工程师们不得…...
Linux软件构建三剑客:configure/make/make install详解
1. configure/make/make install 工作机制深度解析1.1 标准构建流程概述在Unix/Linux系统开发中,标准的软件安装流程通常包含三个关键步骤:./configure make make install这套构建系统广泛应用于C/C项目的跨平台编译和安装,其核心价值在于&am…...
