【C++】使用cppcheck检查C++代码

Cppcheck 是 C/C++ 代码的静态分析工具。它提供独特的代码分析来检测错误,并专注于检测未定义的行为和 危险的编码结构,即使它具有非标准语法(在嵌入式项目中很常见)。

关于静态分析

通过静态分析可以发现的错误类型包括:

  • 未定义的行为
  • 使用危险的代码模式
  • 编码风格

有许多错误是静态分析无法发现的。静态分析工具不具备关于程序意图的人类知识。如果程序的输出是有效的,但出乎意料,那么在大多数情况下,静态分析工具不会检测到这一点。例如,如果程序在屏幕上写“Helo”而不是“Hello”,那么任何工具都不太可能发现这一点。

静态分析应作为质量保证的补充。它不能取代任何;

  • 精心设计
  • 测试
  • 动态分析
  • 模糊

在 VS Code 中使用

安装这个扩展即可。
cpp checker
最新的版本自带了一个 cpp checker 的库,因此无需额外下载,可以直接使用。

我写了一段示例代码:

#include <iostream>

int main()
{
    int a = 1;
    int b = a / 0;
    if (a = 1)
    {
        std::cout << "This is a problem" << std::endl;
    }
}

右键可以进行检查:
也可以试试其他选项
报了 1 个 error,4 个 warn。
报告
应该说,除 0 能检查出来还是可以的,这个一般的 IDE 都检查不出来(当然像 Jetbrains 家那种比较强大的例外)。但是 if 条件中的a = 1并没有检查出来。

自行安装

你需要在https://cppcheck.sourceforge.io/,下载二进制包或者 Linux 的安装包。然后安装即可。注意配置环境变量。

在需要扫描的目录下,直接使用cppcheck + 文件名即可。

PS D:\Codes\CPP\VSCodeProjects\2024\March\cppCheckTest> cppcheck main.cpp
Checking main.cpp ...
main.cpp:6:15: error: Division by zero. [zerodiv]
    int b = a / 0;
              ^

检测结果和上面的差不多。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值