Cppcheck 是 C/C++ 代码的静态分析工具。它提供独特的代码分析来检测错误,并专注于检测未定义的行为和 危险的编码结构,即使它具有非标准语法(在嵌入式项目中很常见)。
关于静态分析
通过静态分析可以发现的错误类型包括:
- 未定义的行为
- 使用危险的代码模式
- 编码风格
有许多错误是静态分析无法发现的。静态分析工具不具备关于程序意图的人类知识。如果程序的输出是有效的,但出乎意料,那么在大多数情况下,静态分析工具不会检测到这一点。例如,如果程序在屏幕上写“Helo”而不是“Hello”,那么任何工具都不太可能发现这一点。
静态分析应作为质量保证的补充。它不能取代任何;
- 精心设计
- 测试
- 动态分析
- 模糊
在 VS Code 中使用
安装这个扩展即可。
最新的版本自带了一个 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;
^
检测结果和上面的差不多。