已更新系列文章包括104、61850、modbus 、储能系统、网络基础等,欢迎关注+星标。

1 安装cpp-check-lint 插件

cpp-check-lint基于cppcheck和cpplint的C++代码检查工具,他将cppcheck、cpplint和VSCode完美的集成在一起。对cppcheck和cpplint有依赖,其中cppcheck需要自己另外手动安装,并将可执行文件的路径配置到插件的cpp-check-lint.cppcheck.--executable。
1.1. cpplint
cpplint是一个用于检查C++代码规范的工具,它可以帮助我们自动化地检查代码,发现潜在的编码问题,确保代码风格的一致性和规范性,提高代码质量。cpplint的代码检查会遵循 Google C++ Style Guide。cpplint工具本身是有Python实现的,可以通过pip install来安装。
cpplint侧重于C++代码规范和风格的检查。
1.2. cppcheck
cppcheck是一个 C/C++ 静态代码分析工具,检测编译器通常无法检测到的错误类型,目标是没有误报。
cpplint侧重于C++代码的错误、潜在安全问题、潜在性能问题的检查。
检查范围包括:
-
自动变量检查;
-
数组的边界检查;
-
class类检查;
-
过期的函数,废弃函数调用检查;
-
异常内存使用,释放检查;
-
内存泄漏检查,主要是通过内存引用指针;
-
操作系统资源释放检查,中断,文件描述符等;
-
异常STL 函数使用检查;
-
代码格式错误,以及性能因素检查。
2 配置
组合键ctrl+shift+p打开命令,输入settings搜索,打开用户setting.json文件,如下图所示:

关键配置说明如下:
|
配置项 |
值 |
说明 |
|---|---|---|
| cpp-check-lint.--enable |
true |
是否启用cpp-check-lint插件 |
| cpp-check-lint.cppcheck.--enable |
true |
是否启用cppcheck检查 |
| cpp-check-lint.cppcheck.--executable |
"cppcheck" |
cppcheck可执行文件路径(若未配置Path需填绝对路径) |
| cpp-check-lint.cppcheck.--language= |
"c++" |
检查语言(可选:c、c++) |
| cpp-check-lint.cppcheck.--std_c++= |
"c++11" |
使用的C++标准 |
| cpp-check-lint.cppcheck.--std_c= |
"c11" |
使用的C语言标准 |
| cpp-check-lint.cppcheck.--inline-suppr |
false |
是否支持内联函数 |
| cpp-check-lint.cppcheck.--onsave |
true |
是否在文件保存时立即检查 |
| cpp-check-lint.cppcheck.--quick_fix |
false |
是否开启快速修复功能 |
| cpp-check-lint.cppcheck.--enable= |
"all" |
额外检查类型(可选:warning, style, performance, portability, information, unusedFunction, missingInclude, all) |
| cpp-check-lint.cpplint.--enable |
true |
是否启用cpplint检查 |
| cpp-check-lint.cpplint.--executable |
"cpplint" |
cpplint可执行文件路径(若未配置Path需填绝对路径) |
| cpp-check-lint.cpplint.--linelength= |
120 |
代码行长度限制 |
| cpp-check-lint.cpplint.--onsave |
true |
是否在文件保存时立即检查 |
| cpp-check-lint.cpplint.--quick_fix |
true |
是否开启快速修复功能 |
| cpp-check-lint.cpplint.--extensions= |
"hxx,h++,cxx,cc,hh,h,cpp,c,hpp,c++" |
检查的文件后缀 |
| cpp-check-lint.cpplint.--headers= |
"hxx,h++,hh,h,hpp" |
支持的头文件后缀 |
例如:

3 项目中使用
任意项目文件右击->选择cppcheck-file,就可以检查当前文档(cppcheck-dir是检查当前目录下的文档)

例如下面检测出了除0和数据越界问题

1337

被折叠的 条评论
为什么被折叠?



