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

项目经理面试 5 大高频题 + 实战回答模板,帮你稳拿 offer

项目经理面试5大高频问题及应答技巧 摘要:本文总结了项目经理岗位常见的5个面试问题及回答策略,帮助求职者更有针对性地准备面试。核心问题包括:1)描述负责过的典型项目;2)常用项目管理工具;3)项目遇到的挑战及解决方案;4)风险管理方法;5)项目成功标准。每个问题都从面试官考察重点、回答技巧、实战案例三个维度进行分析,强调要用STAR法则(情境-任务-行动-结果)结构化表达,突出解决问题的能力而非简单罗列经历。特别提醒要量化项目成果(如提前2周上线、节省8%预算等),并注意展示商业思维和团队协作能力。

逸尘谈PM 2105

Cppcheck配置及使用

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

weixin_42067873的博客 5039

网格聚类 Grid Clustering/Grid-based Clustering

本文主要简单介绍了网格聚类的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型参数等。

JasonH2021的博客 4827

深度学习batch、batch_size、epoch、iteration以及小样本中episode、support set、query set关系

训练整个数据集是epoch、把数据集分为多少小块就是batch,每个小块(batch)多少个数据就是batch_size,整个数据集需要训练多少轮是iteration

qq_42740834的博客 1610

jenkins 配置cppcheck

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

tj的专栏 4970

基于深度学习的中文方言识别模型训练实战

本文介绍了一个基于深度学习的中文方言识别模型开发流程。项目采用PyTorch框架和Chinese-BERT-wwm预训练模型,构建了包含BERT基础层、方言特征增强层和注意力机制的多方言分类系统。文中详细阐述了数据收集策略,包括从社交媒体、语料库和众包平台获取多源数据,并实现了文本清洗、同义词替换和回译等数据增强技术。模型架构部分展示了如何在BERT基础上添加方言特征提取层和多头注意力机制来提升识别性能。该方案支持普通话、粤语等6种主要方言的识别,目标准确率达90%以上,响应时间小于100ms,适用于智能客

电脑管家 1730

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

matsim教程及其案例

MATSim 是一个强大的交通仿真工具,适合研究交通政策、出行行为优化和城市规划。建议从官方示例入手,逐步尝试修改参数和扩展功能。遇到问题时,优先查阅官方文档和社区讨论。(Multi-Agent Transport Simulation Toolkit)的教程和案例资源整理,涵盖基础入门、核心概念、实际应用案例及学习路径。MATSim 是一个开源的、基于多智能体的交通仿真框架,用于模拟城市交通系统中的出行行为、交通流量和交通政策影响。

weixin_70682362的博客 1093

Gazebo仿真平台模型搭建与修改

ROS里踩过的坑(一)Gazebo仿真平台模型搭建与修改文件讲解Models 文件World文件Launch文件模型编辑可视化编辑配置文件编辑模型展示如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

Redglass的博客 1万+

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

Python学习第1天:初识Python

Python 作为目前最流行的编程语言之一,凭借其简洁优雅的语法和强大的生态系统,成为了无数开发者的首选。本系列文章将带你从零基础入门,逐步掌握 Python 编程的核心技能。今天我们先来认识 Python,并安装好开发环境。Python(英式发音:/ˈpaɪθən/;美式发音:/ˈpaɪθɑːn/)是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户的编程语言。

tigerhhzz的博客 434

Cppcheck

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

kevin_darkelf的专栏 2971

《Scratch图形化等级考试(1~4级)历届真题解析》专栏总目录

❤️ 专栏名称:《🌸 专栏介绍:中国电子学会《全国青少年软件编程等级考试》Scratch图形化等级考试(1~4级)历届真题解析。🚀 订阅专栏:原价 99.9,🔥 火爆订阅中 🔥,限时 19.9。订阅后可阅读专栏内所有文章,本专栏持续更新中,欢迎订阅!

人生就是一个不断学习的过程 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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、付费专栏及课程。

余额充值