C++(Qt)軟件調試---vscode配置clang-tidy靜態分析(30)

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++軟件調試 👈

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

  1. 搜索安裝C/C++插件,里面包含了clang-tidy工具;

    在這里插入圖片描述

  2. 安裝重啟后,按ctrl + ,快捷鍵打開【設置】,如下所示,在【C/C++】擴展中存在【代碼分析】功能;

    在這里插入圖片描述

  3. 在下圖中位置添加代碼檢查項或者禁止檢查項;

    在這里插入圖片描述

  4. 勾選下圖中選項,啟用clang tidy

    在這里插入圖片描述

  5. 創建一個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;
    }

    在這里插入圖片描述

    在這里插入圖片描述

  6. 或者鼠標打開代碼文件,鼠標右鍵選擇【在活動文件上運行代碼分析】;

    在這里插入圖片描述

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 市場


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96737.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每天自動備份oracle

oracle數據庫比其他數據庫都貴&#xff0c;但是自帶的管理工具卻很差&#xff0c;真不知道咋想的。想完成每天自動備份&#xff0c;只能自己動手(window環境)&#xff1a;1、創建個備份目錄&#xff0c;如D:\databack2、創建個腳本&#xff1a;backup.bat核心內容如下&#xff…

HBase Coprocessor:擴展HBase功能的利器

HBase Coprocessor&#xff1a;擴展HBase功能的利器 關鍵詞&#xff1a;HBase, Coprocessor, 協處理器, RegionServer, 分布式計算, 擴展功能, 二級索引 摘要&#xff1a;HBase作為Hadoop生態中的分布式列存儲數據庫&#xff0c;以高可靠性、高吞吐量和強一致性著稱&#xff0c…

【Java后端】Spring Boot 實現請求設備來源統計與UA解析全攻略

Spring Boot 實現請求設備來源統計與UA解析全攻略 在 Web 應用的實際場景中&#xff0c;我們經常需要知道 請求來自哪里 —— 是 Android 手機&#xff1f;還是 iOS&#xff1f;或者是 PC 瀏覽器&#xff1f; 這類信息往往可以通過 User-Agent (UA) 來統計&#xff0c;進而幫助…

技術框架搭建:支撐競拍全流程

純競拍的技術框架是一個多層協同的系統&#xff0c;從用戶交互到數據處理&#xff0c;每個環節都有專門的技術組件提供支持。?前端層是用戶與競拍系統交互的窗口&#xff0c;核心目標是提供流暢、實時、直觀的操作體驗。采用 React、Vue 等主流前端框架構建單頁應用&#xff0…

2025.8.18-2025.8.24第34周:有內耗有掙扎

&#x1f31f; 本周完成的3件亮點事情&#xff08;可具體寫過程&#xff09;&#xff1a; openvla debug起來了把上周的演講視頻發給了導師&#xff0c;人家幫我提了很多建議。羅永浩&#xff0c;李想4小時訪談看完了即興演講開始不內耗&#xff0c;直接講&#xff0c;這樣才能…

點播視頻預覽是怎么做到的?

看進度條上的小窗口&#xff0c;你有沒有想過&#xff0c;嗶哩嗶哩是如何在進度條上顯示視頻預覽的? 這個功能非常有用&#xff0c;尤其是在播放長視頻時。 如何才能實現? 實現這一點有三種方法。 預先為視頻生成 CSS sprites&#xff0c;并通過 API 獲取預先為視頻生成 W…

prometheus監控kubernetes集群并使用 grafana展示數據

目錄 Prometheus組成及架構 prometheus核心組件 1.Prometheus Server 2.Exporters 3.Alertmanager 4.Pushgateway 數據流程 在k8s中部署PrometheusGrafana釘釘告警郵件告警 將kube-Prometheus包下載后傳入虛擬機 tar -xzv kube-promethus.zip cd 進入 ll 顯示目錄 …

K8s 實戰:Pod 版本更新回滾 + 生命周期管控

一、版本更新與回滾實驗背景本實驗通過 Kubernetes 的 Deployment 資源演示應用的版本更新與回滾流程。Deployment 是 Kubernetes 中用于管理 Pod 和 ReplicaSet 的核心資源&#xff0c;支持滾動更新&#xff08;避免服務中斷&#xff09;和版本回滾&#xff08;應對更新故障&a…

靜電服漏檢率↓79%!陌訊多模態識別算法在智慧安檢的實戰解析

?原創聲明??&#xff1a;本文技術方案引自《陌訊視覺算法技術白皮書V3.1》&#xff0c;實測數據來自工業場景部署驗證 一、行業痛點&#xff1a;靜電防護失效的隱形風險 據《電子制造業安防報告2025》統計&#xff0c;精密電子車間因靜電服穿戴不規范導致的次品率高達23%&a…

StarRocks不能啟動 ,StarRocksFe節點不能啟動問題 處理

StarRocks不能啟動 &#xff0c;StarRocksFe節點不能啟動問題 處理 問題描述 mysql:[Warning] Using a passwordon the command line interface can be insecureERROR 2003 (HYa00): Can’t connect to MysoL server on ‘192.168.5.128:9030’(111)Error: failed to query fE…

麒麟系統播放圖片 速度比較

pygame效果比opencv好&#xff0c;opencv有鋸齒&#xff1a;import pygame import os import timedef show_image_sdl(image_path):"""使用SDL2快速顯示圖片"""# 初始化pygamepygame.init()# 獲取屏幕信息info pygame.display.Info()screen_wid…

復雜場景橫幅識別準確率↑91%!陌訊多模態融合算法在智慧園區的實戰解析

一、行業痛點&#xff1a;園區違規橫幅識別的三重挑戰 據《2024智慧園區安防報告》&#xff08;來源&#xff1a;CCSA TC10&#xff09;統計&#xff1a; ??強光干擾??&#xff1a;玻璃幕墻反光導致文字識別錯誤率超50% ??形變干擾??&#xff1a;橫幅褶皺、飄動造成關…

Mybatis Plus - 代碼生成器簡單使用

1.引入依賴<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.12</version></dependency><dependency><groupId>com.baomidou</groupId><ar…

vue2騰訊地圖點擊地圖獲取地址經緯度web

注意&#xff1a;&#xff01;&#xff01;&#xff01;在做uniapp小程序導航功能時&#xff0c;拿到我們在后臺管理設置的經緯度&#xff0c;根據經緯度去導航到店的時候&#xff0c;最好用騰訊地圖來獲取經緯度&#xff0c;uniapp小程序那邊默認導航經緯度是騰訊系的&#xf…

7.6 殘差網絡

隨著我們設計越來越深的網絡&#xff0c;深刻理解 新添加的層如何提升神經網絡的性能&#xff0c;變得至關重要。更重要的是設計網絡的能力&#xff0c;在這種網絡中&#xff0c;添加層會使網絡更具有表達力&#xff0c;為了取得質的突破&#xff0c;需要一些數學基礎。7.6.1 函…

建模工具Sparx EA的多視圖協作教程

在傳統建模工具中&#xff0c;功能繁雜、界面混亂、窗口頻繁切換等問題長期困擾著架構師與開發人員&#xff0c;不僅拖慢設計節奏&#xff0c;更導致模型與文檔嚴重脫節。企業架構與建模平臺Sparx EA直面這些挑戰&#xff0c;通過現代化的Ribbon界面與多視圖協作機制&#xff0…

從聚類到集成,兩種實用算法框架分享

一、K-means&#xff1a;讓數據自己 “找組織”什么是聚類&#xff1f;聚類屬于無監督學習的范疇 —— 簡單說就是手里沒有標簽時&#xff0c;我們要把長得像的樣本分到一組。比如給一堆用戶數據&#xff0c;不需要提前知道 “高價值用戶”“潛在用戶” 這些標簽&#xff0c;聚…

Elasticsearch:什么是神經網絡?

神經網絡定義 神經網絡&#xff08;Neural networks&#xff09;是機器學習&#xff08;machine learning&#xff09;的一個子集&#xff0c;旨在模擬生物大腦的結構和功能。也稱為人工神經網絡 (artificial neural networks - ANNs)&#xff0c;神經網絡由互連的節點或人工神…

XTDrone——無人機基于2D激光Lidar進行二維運動規劃(細節提醒以及相關報錯解決)

參考XTDrone文檔&#xff1a; 二維激光SLAM&#xff08;HectorSLAM&#xff09; 語雀 二維運動規劃 語雀 相關ROS依賴庫&#xff1a; 本地基于的是20.04的ubuntu系統&#xff1a; sudo apt install -y ros-noetic-move-base \ ros-noetic-costmap-2d \ ros-noetic-dwa-l…

機器學習算法-樸素貝葉斯

樸素貝葉斯分類器就是根據貝葉斯公式計算結果進行分類的模型&#xff0c;“樸素”指事件之間相互獨立無影響. 例 如&#xff1a;有如下數據集&#xff1a;Text CategoryA great game&#xff08;一個偉大的比賽&#xff09;Sports&#xff08;體育運動&#xff09;The e…