windows环境vscode中嵌入cppcheck进行静态检查

本文介绍了Cppcheck静态分析工具的功能、选项、检查范围,以及如何在Windows下安装和在VSCode中集成cpp-check-lint插件,提供了一个错误示例和扩展命令使用说明。
摘要由CSDN通过智能技术生成

一、cppcheck简介

Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误。Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等。此外,Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为。

主要选项

  1. 错误(error):这是最严重的问题,Cppcheck 100%确定这是错误。例如,数组越界,空指针解引用等。
  2. 警告(warning):Cppcheck认为代码看起来有问题,但它并不确定这是否真的是错误。例如,有可能发生整数溢出,有可能发生除以零的情况等。
  3. 样式(style):这些是关于代码风格的问题,例如未使用的函数、多余的代码等。
  4. 可移植性(portability):当代码在不同的平台上运行时可能会出现问题。例如,使用了不可移植的函数,或者依赖于编译器特定的行为。
  5. 性能(performance):Cppcheck会发出警告,如果代码可以优化以提高性能。
  6. 信息(information):这些是一些有趣的,非关键的信息,通常可以忽略。

这些选项可以通过命令行参数进行启用或禁用,以定制Cppcheck的行为。例如,如果你只关心错误和警告,你可以使用--enable=warning,error参数来运行Cppcheck。

检查范围

以下是 Cppcheck 的主要检查范围:

  1. 未定义行为:包括死指针、零除、整数溢出、无效的位移操作数、无效的转换、STL的无效使用、内存管理、空指针解引用、越界检查、未初始化的变量、写入const数据等。
  2. 安全性:Cppcheck 可以检测到一些常见的安全漏洞,如缓冲区错误、不当的访问控制、信息泄露等。
  3. 编码标准:Cppcheck 支持多种编码标准,包括 Misra C 2012、Misra C++ 2008、Cert C、Cert C++ 等。
  4. 其他检查:Cppcheck 还有许多其他的检查,具体可以参考 这个链接

二、在Windows下安装Cppcheck

2.1 从Cppcheck的GitHub页面下载最新版本源码,链接:https://github.com/danmar/cppcheck

2.2 可以点击“Releases”选项,然后下载最新版本的Cppcheck的Windows安装程序。双击下载的安装程序文件,然后按照提示进行安装。安装完成后,你可以在开始菜单中找到Cppcheck,或者在命令行中输入cppcheck来运行它。

2.3也可以下载源码根据Readme中的提示,自行编译。

三、vscode下载插件cpp-check-lint

如图:

下载好之后按ctrl+shift+p打开用户设置(user setting),在设置中追加加入以下代码:

/* cppcheck配置 */
    "cpp-check-lint.--enable": true,   //启用插件
    "cpp-check-lint.cppcheck.--executable": "C:\\Program Files\\Cppcheck\\cppcheck.exe",  //cppcheck路径
    "cpp-check-lint.cppcheck.--inline-suppr": false,  //取消内联
    "cpp-check-lint.cppcheck.--language=": "c", //使用c语言进行检查
    "cpp-check-lint.cppcheck.--onsave": false, //在文件保存时立刻检查该文件
    "cpp-check-lint.cppcheck.--quick_fix": false,
    "cpp-check-lint.cpplint.--enable": false, //关闭无用的cpplint
    // "cpp-check-lint.cppcheck.--addon=": [  //暂时不开启插件
    //     "misra.py"
    // ],

四、插件使用例子

 使用很简单,直接在文件上右键即可,如下图:

我在程序中故意写了个除0的错误,检查结果会报错。

扩展命令

生成dump文件

cppcheck.exe --template={file}:{line}:{column}: {severity}: CWE-{cwe} {message}:[{id}] --enable=style -j4 --max-ctu-depth=2 --platform=native --std=c89 --std=c++03 --report-progress --suppress=unmatchedSuppression --suppress=missingIncludeSystem --dump ./src/thread_rs485_readmeter_entry.c

使用misra 2012进行检查

python3 /mnt/c/Program\ Files/Cppcheck/addons/misra.py --rule-texts=/mnt/f/OneDrive/Tools/cppcheck/misra_rules_dummy.txt ./src/thread_rs485_readmeter_entry.c.dump

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值