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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…