Clang-Tidy协助C++编译期检查
文章目录
- 在Visual Studio中启用clang-tidy
- Clang-tidy 常用的检查项
- readability-inconsistent-declaration-parameter-name
- misc-static-assert
- 例子
C/C++语言是一门编译型语言,比起python,javascript 这些,有很多BUG可以在编译期被排除掉,当然编译器自身的检查比较有限,需要借助第三方工具,如clang-tidy
在Visual Studio中启用clang-tidy
新建一个工程,在工程属性中启用代码分析
这样工程在生成时就会运行代码检查,也可以单独运行代码检查
配置检查项需要在工程目录下添加一个文件.clang-tidy
Checks: '-*'HeaderFilterRegex: '.*'
其中 Checks表示需要检查的项,'-*'表示不检查任何项,
HeaderFilterRegex:'.*'
检查所有文件,同时会在检查出问题时指出问题所在的地方。
Clang-tidy 常用的检查项
readability-inconsistent-declaration-parameter-name
在C/C++中一个函数的声明与定义可以分离,当函数声明时的形参表与定义时的形参表不同参数名时,会报错警告
可以避开一些函数误操作
如
int substract(int y, int x);
...int substract(int x, int y) {return y - x;
}...int x = 100, y = 10;
assert(substract(y, x) == (y - x));
misc-static-assert
在C/C++可能会使用格式化打印函数如printf
,sprintf
,snprintf
等待。如果格式名与输入参数类型不匹配可能会出现严重错误
int x = 1024;
printf("%s \n",x); // 程序可能会崩溃
例子
Checks: '-*,readability-inconsistent-declaration-parameter-name,misc-static-assert'HeaderFilterRegex: '.*'