cppcheck使用指南

Cppcheck 静态代码分析工具使用指南 Cppcheck静态代码分析工具指南 摘要:Cppcheck是一款开源C/C++静态代码分析工具,可检测内存泄漏、数组越界等常见问题。支持Linux/Windows/macOS平台,通过简单命令即可检查单个文件或整个项目。本文介绍了安装方法(apt/yum/brew等)、基本使用命令、常用选项(如--enable=all开启全面检查)以及实战示例(包含6种典型内存问题的演示代码)。该工具可集成到开发流程中,帮助开发者提前发现潜在缺陷,提高代码质量。(149字) 阅读详情
AI摘要

本文介绍了一个静态代码检查工具cppcheck的使用方法,包括其基本功能、如何在不同环境中使用cppcheck进行代码检查,并探讨了如何将cppcheck整合到Visual Studio和TortoiseSVN中以提高开发效率。

cppcheck使用指南

Table of Contents

  • 1 cppcheck简介

  • 2 cppcheck使用

  • 3 cppcheck与其他软件的整合

    • 3.1 与VisualStudio的配合

    • 3.2 与TortoiseSVN配合

1 cppcheck简介

cppcheck是一个静态代码检查工具,支持c/ c++代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。

执行的检查包括:

  • 自动变量检查

  • 数组的边界检查

  • class类检查

  • 过期的函数,废弃函数调用检查

  • 异常内存使用,释放检查

  • 内存泄漏检查,主要是通过内存引用指针

  • 操作系统资源释放检查,中断.文件描述符等

  • 异常 STL 函数使用检查

  • 代码格式错误,以及性能因素检查

2 cppcheck使用

cppcheck的使用方法可能是代码工具中最简单的了,说一下使用方法。

安装好cppcheck之后,安装目录下有两个工具,一个是带图形界面的程序(cppcheckgui.exe),一个是console程序(cppcheck.exe)

  • cppcheckgui.exe的使用方法

    点击工具栏的第一个图标,是加载文件夹(注意:中文目录支持不是很好),也就是你的项目文件夹,加载完成后它会自动检测所有可能的问题并列出来

  • cppcheck.exe的使用方法

    通过命令行进入cppcheck的安装目录并输入以下命令

    cppcheck D:/Project/XXX(文件夹完整路径)  2>error.txt

    会将错误生成在安装目录下名为error.txt的文件中,方便查看,结果如下:

    [D:\Studio\BKWin\BKWin\resource.h:1]: (error) The code contains characters that are unhandled. Neither unicode nor extended ASCII are supported. (line=1, character code=ff) [D:\Studio\BKWin\BKWin\resource.h:1]: (error) The code contains characters that are unhandled. Neither unicode nor extended ASCII are supported. (line=1, character code=fe)

3 cppcheck与其他软件的整合

3.1 与VisualStudio的配合

  1. 为了在VC中使用方便,先建立一个bat文件,vscppcheck.bat

    cppcheck --enable=all --template=vs %1 > NUL

    因为只需要cerr输出,所以cout输出到NUL.

  2. 然后在 VS->工具->外部工具 中添加:

    标题:cppcheck

    命令:d:\jinq\vscppcheck.bat

    参数:$(SolutionDir)

    使用输出窗口

  3. 设好后只需点工具cppcheck菜单,就会输出代码检查结果,按<F4>可跳转到错误行.

3.2 与TortoiseSVN配合

Since we are not robots (yet), it is very possible to forget running a Cppcheck before committing code to the SVN server. Organizations that use Cppcheck (or any other code analysis tool) usually perform the code analysis once a day/week/month. Usually the team leader assigns a task to developer to fix the issue, commit the code and wait for the next code analysis. And then we start this cycle again. Sometimes the code analysis is taken after a build was already released to QA, or even worse, to customers.

So we all know that asking your developers to run the Cppcheck before every commit they do is not feasible. However, this process can be automated (and in some way also made invisible) for the developers.

Attached to this page is a script which will automatically force the Cppcheck on all source files that are being committed. The check is run when the commit is triggered (before the commit is actually performed) with a zero effort from the developers. In the case issues are found, the script will fail the commit so the developer can fix the issues and commit only Cppcheck-checked code (failing the commit can be bypassed if needed). The great value of this approach is that we can fix the issues before they are committed to the SVN server!

Configuration

1.Download the "SVN_Pre_Commit_Hook__CppCheck_Validate.bat" script to your machine and edit it:

  • cppCheckPath - Full path to your Cppcheck.exe (not CppcheckGui.exe).

  • supportedFileTypes - Add or remove file types to check. This variable is here so the script won't check '.sln', '.vxproj' and other non-source file types.

  • enableScript - '1' or '0' to enable/disable running the script.

2.Right click (somewhere on desktop) –> TortoiseSVN –> Settings –> Hook Scripts –> Add…

3.Configure Hook Scripts:

  • Hook Type: Choose 'Pre-Commit Hook' (upper right corner).

  • Working Copy Path: The directory that all of your SVN checkouts are done. Use the top most directory (or just use 'C:\' for example).

  • Command Line To Execute: Full path to the attached script.

  • Make sure that both 'Wait for the script to finish' and 'Hide the script while running' checkboxes are checked –> OK –> OK.

Hints

1.Even if the commit failed because of the Cppcheck, SVN gives you the option to easily recommit disregarding the failure by clicking the 'Retry without hooks' button. If commit succeeded (meaning, Cppcheck did not find any issues), it will look like nothing happened (so developers will still see a commit end message just like before).

2.If you want to implement this solution in your organization/team you can do it in two different approaches:

  • Client side solution - Meaning, the steps above should be taken for all of your development machines. The benefit in this approach is that only relevant teams can use this solution and not all of the developers that are working on the SVN server. Besides, ignoring this Cppcheck (in case of false-positives for example) is quite easy using one button click integrated in the TortoiseSVN Client ('Retry without hooks'). This approach means that Cppcheck must be installed on all of the relevant developers machines of course.

  • Server side solution - Meaning, Cppcheck should be installed only on the SVN server and the steps above should be taken only once (server side only). So clients (developers' machines) should take no action since every commit will trigger the hook at server side. The benefit is this is taken only once, but this solution may be to restrictive for some organizations. In addition, in order to ignore the hook (once again, false-positive for example) - you need to create some 'back-door' script that will allow developers to bypass it with a specific keyword in the commit message.

3.More about SVN hook scripts - Client Hook Scripts, Server Hook Scripts.

All you need to do is take the Configuration steps above just once. Afterwards, you can work with SVN the same as before, just now you get to see your failures before code is committed to the SVN server.


Keil添加Cppcheck_cppcheck下载 步骤3选择cppcheck.exe。(根据自己实际安装路劲选择)步骤4框中输入 --enable=all。$P是keil软件参数,可以自己修改成别的。步骤2名字可以随便写。 阅读详情

相关推荐

cppcheck 安装使用

官网下载:https://cppcheck.sourceforge.io/windows 需要下载安装包安装,ubuntu可以用apt安装。

gmq_syy的博客 2925

cppcheck静态代码检查工具使用教程

cppcheck 进行代码检查的方法

ZONGXP的博客 5万+

C/C++ 静态代码检查工具cppCheck

Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。

贝勒里恩的博客 4950

CppCheck的使用

一、 实验要求 明白CppCheck的配置及原理,并使用CppCheck进行代码缺陷的检查,进行总结。 二、 CppCheck的原理介绍 1、Cppcheck先是分析拆解代码,将每个有效字符作为一个token(token是抽象代码中所有字符的 类,包含字符的字符串,类型等),提供tokenlist,规则实现者通过匹配需要的字符找到感兴趣的代 码,然后通过计算查找bug注意点:其中Cppchec...

爱书不爱输的程序猿 5145

Cppcheck静态分析工具详解

你可以从Cppcheck的官方网站(Cppcheck下载页面)下载并安装Cppcheck。安装完成后,你可以在终端或命令提示符中使用Cppcheck命令。

啊渊的专栏 1250

cppcheckTutorial:这是一个展示如何有效使用cppcheck调试器工具的项目

cppcheck教程 作为对读者的公平警告,本教程是为 Linux 用户编写的。 快速信息 是用于 C/C++ 编程语言的静态代码分析工具。 它是一种多功能工具,可以检查非标准代码。 创建者和首席开发人员是 Daniel Marjamäki。 与 C/C++ 编译器和许多其他分析工具不同,它不会检测代码中的语法错误。 Cppcheck 主要检测编译器通常不会检测到的错误类型。 目标是仅检测代码中的真正错误。 Cppcheck 是下的免费软件。 如何安装 可以在找到下载。 cppcheck 能做什么,不能做什么 ##cppcheck的能力 越界错误检查 班级代码检查 代码异常检查 一定程度上的 过时的函数使用警告 STL 的无效使用 和 如何使用 cppcheck 好的,足够的介绍让我们了解您真正感兴趣的内容; 你实际上如何使用这个调试器? 在下面的代码中,用户初始化一个大小为 10

Keil添加Cppcheck

keil cppcheck

咯咯哒 2808

基于51单片机的通讯聊天系统

通过编写51单片机通讯聊天程序,掌握51单片机的各个模块的知识点和运用C语言编写51单片机的能力。用51单片机与口袋开发板设计实现一个单片机与电脑串口助手实现通讯功能的程序。程序的主要功能如下: 1 OLED初始化显示Welcome to Bluetooth communication! 字符串。 2 程序开始时处于接收信息模式, 电脑串口助手发送信息时,将从初始化字符第一个开始显示,电脑串口助手发送信息后,蜂鸣器响铃2秒左右。 3 每次同时按下左右键时,可以轮流切换接收/发送信息模式 4 在发送信息模式时

m0_47419053的博客 3638

Cppcheck配置及使用

CppCheck是一个C/C++代码缺陷静态检查工具。不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误。所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健壮,是否有隐藏的问题。 CppCheck下载链接: 链接:https://pan.baidu.com/s/1DP6D9t4mNeASCuPozM5UYg提取码:vf5g 直接使...

weixin_42067873的博客 5039

西电 程序设计基础课程设计 作业

当时做的程序设计课程的作业. 一共五题, 以报告的形式提交. 质量应该比较高(高傲). 完整内容在这里 高精度计算 问题描述 涉及知识点: 数组, 流程控制, 函数等 要求: 用整型数组表示10进制大整数(超过 2322^{32}232 的整数), 数组的每个元素存储大整数的一位数字, 实现大整数的加减法. 问题分析 结构设计 可将高精度整数写成一个类. 成员变量有: int a[MAXN], len; bool negative; 其中, 数组a用来存储大整数的一个数位, a[1]为个位上的数字, a

Wings 2513

最佳量化交易的计算机操作系统

本文在Creative Commons许可证下发布   我经常被问到的一个问题是:用哪种计算机操作系统和计算软件进行量化交易的理论研究和代码实现?   我想把这个问题简化,从挑选的计算软件和计算库来反推最佳使用的计算机操作系统。简而言之,就是在本文撰写的时候而言,如果你想进行基于任何严肃的数学理论和金融量化交易研究理论,这里特指机器学习或者深度学习。并且需要在本地研究机器上使用桌面版本,...

evilqliang的博客 2307

jenkins 配置cppcheck

Cppcheck 是一个静态代码检查工具,支持C/C++代码;作为编译器的一种补充检查,Cppcheck主要对源代码执行以下检查: 1. 自动变量检查 2. 数组的边界检查 3. class类检查 4. 过期的函数,废弃函数调用检查 5. 异常内存使用,释放检查 6. 内存泄漏检查,主要是通过内存引用指针 7. 操作系统资源释放检查,中断,文件描述符等 8. 异常STL 函数使用检...

tj的专栏 4970

STM32F407 UART4串口DMA收发实战:告别频繁中断,用空闲中断+DMA搞定不定长数据

本文详细介绍了STM32F407 UART4串口结合DMA和空闲中断实现高效不定长数据收发的实战方案。通过DMA硬件级数据搬运和空闲中断智能帧检测,显著降低CPU占用率,提升通信效率,适用于工业传感器数据采集和智能设备通信场景。

weixin_42631411的博客 154

cppcheck的安装与使用

一、cppcheck安装 环境:Ubuntu20.04,gcc-9.3.0/gcc-7.5.0 1、方法一:apt源安装cppcheck(推荐,无需编译安装,自动配置环境变量) sudoaptinstallcppcheck 查看版本情况 cppcheck --version 2、方法二:编译安装cppcheck http://cppcheck.net/官网下载cppcheck源码包(.tar.gz),github下载也可 首先,解压cppcheck压...

qq_21479345的博客 8929

第133章 PCL OrientedBoundingBox 有向包围盒

中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。

yumeiguo的博客 263

EML 全面实践指南:把 SAP RAP 业务对象玩出工程化的稳定与优雅

本文面向掌握ABAP基础、正在实施RAP的开发者,深入讲解EML(Entity Manipulation Language)的核心用法。文章围绕READ ENTITIES、MODIFY ENTITIES、COMMIT ENTITIES三大语句,详细解析其语义、类型体系、事务机制及工程实践。重点内容包括:字段裁剪、派生类型、草稿控制、批量更新、事务缓冲与保存序列等关键技术点,并配合真实案例代码。旨在帮助开发者在SAP ABAP On-Premise和BTP环境中构建可维护、可演进的业务对象访问层,同时避免常见

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 329

cppcheck卸载linux,linux上的cppcheck安装问题

接下来,当我在测试代码上运行cppcheck时,不会生成错误。sles12-box:/home/test/cppchecker_test/cppcheck-1.77 # cppcheck /home/demo_code/test_code.cChecking /home/demo_code/test_code.c ...的源代码是sles12-box:/home/test/cppchecker_t...

weixin_34779845的博客 411

详解AUTOSAR:DaVinci Configurator导入ARXML配置(拓展篇—2)

DaVinci Configurator导入ARXML配置。

不脱发的程序猿 3331

Cppcheck

from:http://blog.youkuaiyun.com/yzlworld/article/details/29572051 工具简介 下载安装(Linux): 官方网址:http://sourceforge.net/projects/cppcheck/安装方式:解压后,直接make进行编译,完成后,make install进行安装验证安装:cppcheck -v 查看是否安装成功

kevin_darkelf的专栏 2971

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1252

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

eclipse安装上cppcheck 及cppcheck插件调试

eclipse安装上cppcheck 及cppcheck插件调试 准备eclips 相关环境 参考之前文档 win10系统安装上cppcheck 安装地址 拉取cppcheclipse git clone https://github.com/kwin/cppcheclipse.git eclipse 打开拉取的代码 查看环境配置及依赖性是否完整 5.1查看依赖性是否完整 5.2 插件源码调试模式 5.3 源码cppcheck插件启动完成,配置调用之前安装与电脑上的cppc

weixin_50923296的博客 879

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

cppcheck也要凉了吗?

看到2021-10-02发的cppcheck 2.6版后,2021-11-02又发布一个消息,Cppcheck Premium 21.10要发布,一个瑞典公司接手了,包含了cppckeck和一些插件,目前只有win版 不知道原文中这句什么意思 It will be free to use during November. 我整理了下最近的版本更新记录,希望以后还能继续更新。 日期 版本 版本更新 2021-10-02 Cppcheck-2.6 2021-07-04 Cppcheck-2

juewuer的博客 1257

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Cppcheck软件使用

一款开源源码检测工具。简单易用。 官网网址:http://cppcheck.sourceforge.net/ 软件可直接官网下载。 Features Out of bounds checking Check the code for each class Checking exception safety Memory leaks checking Warn if ob

Segen_Jaa的专栏 3700

Qt下Cppcheck的使用

在打开的窗口中,找到"Cppcheck",然后在"Cppcheck path"(Cppcheck路径)中输入你之前安装Cppcheck的路径。因此,如果你的代码依赖于库函数的某些特性,Cppcheck可能无法正确检测相关的问题。无法处理非标准的C++特性:Cppcheck是基于标准C++的,因此,如果你的代码使用了非标准的C++特性,Cppcheck可能无法正确处理。无法分析动态内存管理:虽然Cppcheck可以检测一些基本的内存管理错误,如内存泄漏,但它无法分析复杂的动态内存管理问题,如内存碎片化。

Asd1453的博客 1592

静态检查工具cppcheck

Cppcheck是一款优秀的静态检查工具, 性能明显超出其它同类产品,如pclint、QAC等。Cppcheck能查出部分的内存泄漏、越界,有时候会漏报、误报,所以cppcheck的检查不能作为唯一的依据,也不能代替动态检查。Cppcheck与jenckins搭配使用,提交代码就可以对相关文件进行检查,避免将错误引入版本。

radeyang的博客 5957
上一篇: 使用emacs编写html:html-mode简单使用笔记
下一篇: 多线程不安全的posix函数
darksun9972
博客等级 码龄19年 42粉丝 399原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值