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