feat: add clang-tidy configuration file#20
Merged
Sunrisepeak merged 1 commit intomainfrom Mar 7, 2026
Merged
Conversation
Sunrisepeak
approved these changes
Mar 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
本 PR 为项目新增
.clang-tidy配置文件,用于统一项目的静态代码分析规则。
该配置采用白名单策略(whitelist),仅启用经过筛选的高价值检查,以提升代码质量、正确性、性能和可移植性,同时避免过于激进或风格化的规则。
适用场景:
启用的检查类别
1. 编译器诊断
启用:
作用:
2. Clang 静态分析器
启用:
提供更深入的静态分析能力,例如:
3. Bug 检测
启用:
用于发现常见编程错误,例如:
4. 性能优化建议
启用:
检测潜在性能问题,例如:
5. 现代 C++ 改进
启用:
用于建议使用现代 C++ 特性,例如:
nullptroverrideusing= default/= deleteemplace为了避免过度激进的修改,禁用了以下规则:
6. 通用检查
启用:
提供一些通用且误报较少的检查,例如:
7. 可移植性检查
启用:
用于检测潜在的跨平台问题,提高代码在不同编译器和平台上的兼容性。
8. 部分可读性检查
启用规则:
主要用于:
auto声明可读性clang‑tidy 示例
以下示例展示 clang‑tidy 在实际代码中的效果。
示例 1:缺少大括号
修改前
clang-tidy 提示
修改后
优势:
示例 2:不必要的拷贝
修改前
clang-tidy 提示
修改后
优势:
示例 3:use-after-move
修改前
clang-tidy 提示
修改后
优势:
示例 4:现代 C++ 改进
修改前
clang-tidy 提示
修改后
优势:
未启用的规则
以下规则未启用,原因包括:
未启用规则:
此外还禁用了部分生态特定规则:
这些规则主要针对特定项目代码风格,不适用于通用 C++ 项目。
设计原则
后续计划
未来可能考虑进一步评估并引入以下规则组:
可能在后续PR中陆续添加。
关于命名规范(PascalCase、UPPER_CASE、camelCase等)自动检查方面:
由于配置复杂,后续PR中添加。