文章目錄
- 在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: '.*'