C++(Qt)軟件調試—vscode配置clang-tidy靜態分析(30)
文章目錄
- C++(Qt)軟件調試---vscode配置clang-tidy靜態分析(30)
- @[toc]
- 1 概述
- 2 clang-tidy基本用法
- 3 目前已有檢查項
- 4 vscode配置clang-tidy
- 5 .clang-tidy配置文件
- 6 參考地址
文章目錄
- C++(Qt)軟件調試---vscode配置clang-tidy靜態分析(30)
- @[toc]
- 1 概述
- 2 clang-tidy基本用法
- 3 目前已有檢查項
- 4 vscode配置clang-tidy
- 5 .clang-tidy配置文件
- 6 參考地址
更多精彩內容 |
---|
👉內容導航 👈 |
👉C++軟件調試 👈 |
1 概述
clang-tidy 是一個由 LLVM 項目開發的 C/C++ 代碼靜態分析工具。它主要用于發現代碼中的潛在錯誤、風格問題、性能隱患,并可自動修復部分問題。clang-tidy 支持多種檢查項(checks),如現代化建議、內存安全、代碼規范等。
主要功能:
- 代碼風格檢查:檢查代碼是否符合特定的編碼規范
- 潛在錯誤檢測:發現可能導致運行時錯誤的問題
- 性能優化建議:識別可優化的代碼模式
- 現代 C++ 特性使用:推薦使用 C++11/14/17/20 等新特性
- 安全問題檢測:發現潛在的安全漏洞
集成方式:
- 可在命令行單獨運行
- 可集成到 IDE(如 VSCode、CLion、Qt Creator)
- 可與 CI/CD 流程結合,自動分析代碼質量
2 clang-tidy基本用法
-
clang-tidy.exe --help
:查看幫助信息; -
clang-tidy.exe -list-checks
:列出所有已啟用的檢查并退出; -
clang-tidy.exe -list-checks -checks=*
:列出所有可用選項。 -
clang-tidy.exe [代碼文件] -checks=[檢查項]
:設置要運行的檢查項,以逗號分隔,負號為刪除檢查項,沒有負號為添加檢查項,例如:clang-tidy.exe E:\test\untitled2\main.cpp -checks=-*,clang-*
表示關閉所有檢查項,添加clang-組所有的檢查項,檢查main.cpp文件。
-
--warnings-as-errors=[檢查項]
:可將設置的檢查項由警告升級為錯誤,使用如下所示clang-tidy.exe E:\test\untitled2\main.cpp -checks=-*,cppcoreguidelines-* --warnings-as-errors=cppcoreguidelines-*
3 目前已有檢查項
名稱前綴 | 描述 |
---|---|
abseil- | 與 Abseil 庫相關的檢查。` |
altera- | 與 FPGA 的 OpenCL 編程相關的檢查。 |
android- | 與 Android 相關的檢查。 |
boost- | 檢查與 Boost 庫相關的內容。 |
bugprone- | 檢查是否以容易出錯的代碼構造為目標。 |
cert- | 與 CERT 安全編碼指南相關的檢查。 |
clang-analyzer- | Clang Static Analyzer 檢查。 |
concurrency- | 與并發編程相關的檢查(包括 線、纖維、協程等)。 |
cppcoreguidelines- | 與 C++ 核心指南相關的檢查。 |
darwin- | 與達爾文編碼約定相關的檢查。 |
fuchsia- | 與 Fuchsia 編碼約定相關的檢查。 |
google- | 與 Google 編碼約定相關的檢查。 |
hicpp- | 與高完整性 C++ 編碼標準相關的檢查。 |
linuxkernel- | 與 Linux 內核編碼約定相關的檢查。 |
llvm- | 與 LLVM 編碼約定相關的檢查。 |
llvmlibc- | 與 LLVM-libc 編碼標準相關的檢查。 |
misc- | 我們沒有更好的類別的檢查。 |
modernize- | 提倡使用現代(當前為“現代”)的檢查 表示“C++11”)語言結構。 |
mpi- | 與 MPI(消息傳遞接口)相關的檢查。 |
objc- | 檢查與 Objective-C 編碼約定相關的內容。 |
openmp- | 與 OpenMP API 相關的檢查。 |
performance- | 檢查是否針對與性能相關的問題。 |
portability- | 檢查是否針對不針對可移植性相關問題 與任何特定的編碼風格相關。 |
readability- | 檢查是否針對與可讀性相關的問題,但不針對 與任何特定的編碼風格相關。 |
zircon- | 與 Zircon 內核編碼約定相關的檢查。 |
-
列出詳細檢查項如下所示(未顯示完全)
4 vscode配置clang-tidy
-
搜索安裝
C/C++
插件,里面包含了clang-tidy工具; -
安裝重啟后,按
ctrl + ,
快捷鍵打開【設置】,如下所示,在【C/C++】擴展中存在【代碼分析】功能; -
在下圖中位置添加代碼檢查項或者禁止檢查項;
-
勾選下圖中選項,啟用
clang tidy
; -
創建一個
main.cpp
文件,隨意編寫一段代碼,然后編譯運行就可以看見clang-tidy
檢查信息了;#include <iostream> #include <thread>using namespace std;void func(int a = 1) {// 延時1秒this_thread::sleep_for(chrono::seconds(1));cout << "Hello from thread" << endl; }int main(int argc, char const* argv[]) {cout << "開始:" << thread::hardware_concurrency() << endl;thread t(func, 123); // 創建線程// t.join();t.detach(); // 線程分離,主線程不等待子線程結束cout << "結束" << endl; // 主線程結束,子線程仍在運行return 0; }
-
或者鼠標打開代碼文件,鼠標右鍵選擇【在活動文件上運行代碼分析】;
5 .clang-tidy配置文件
-
除了在【設置】【擴展】【C/C++】【代碼分析】中設置檢查項目外,也支持
.clang-tidy
配置文件; -
在工程路徑下創建一個
.clang-tidy
文件,添加檢查項規則配置,.clang-tidy
配置文件優先級高于在【代碼分析】中設置的規則; -
例如下面
.clang-tidy
配置;Checks: >-google-*,llvm-*,cppcoreguidelines-*
6 參考地址
- 用于 Visual Studio Code 的 C/C++
- Clang-Tidy — Extra Clang Tools 18.0.0git documentation (llvm.org)
- C/C++ - Visual Studio 市場