代码风格检测规则知识库
文档说明
本知识库面向开源社区三维基础几何引擎的代码风格检测场景,整理了项目平台所采用的 Google C++ 代码风格 在 clang-format 与 clang-tidy 工具链下的可执行检测规则、Google 预设的关键配置取值,以及对应的违规知识条目。
工具边界(重要):
clang-format只负责排版/格式(缩进、空格、换行、大括号、对齐、#include排序),不检查命名、不改语义。- 命名约定、头文件保护宏、语义性可读性由
clang-tidy的readability-identifier-naming、google-*、llvm-header-guard、readability-*等检查负责。- 因此本文按"检测器(detector)"维度标注每条规则归属的工具,避免误以为
clang-format能拦截命名问题。
规则结构概 览
| 模块 | 规则范围 | 主检测器 | 条目数 | 说明 |
|---|---|---|---|---|
| 命名约定 | CF-N.x | clang-tidy readability-identifier-naming / google-* | 8 | 类型/函数/变量/成员/常量/命名空间/宏/文件名 |
| 缩进与空白 | CF-I.x | clang-format | 5 | 缩进宽度、Tab、访问修饰符、case、行尾空白 |
| 列宽与换行 | CF-W.x | clang-format | 3 | 80 列、参数打包、模板换行 |
| 大括号与控制流 | CF-B.x | clang-format | 3 | 大括号附着、短语句单行、初始化列表 |
| 指针与空格 | CF-S.x | clang-format | 3 | 指针左对齐、控制语句空格、行尾注释空格 |
| 头文件组织 | CF-H.x | clang-format / clang-tidy | 3 | include 顺序与分组、保护宏 |
| 注释风格 | CF-C.x | clang-format / clang-tidy | 2 | // 注释、行尾注释对齐 |
| 合计 | CF-* | — | 27 | 风格检测规则与知识条目统一来源 |
目录
- 1 工具链与流水线
- 2 Google 预设关键配置取值(
clang-format -style=google -dump-config) - 3 命名约定(CF-N)
- 4 缩进与空白(CF-I)
- 5 列宽与换行(CF-W)
- 6 大括号与控制流(CF-B)
- 7 指针与空格(CF-S)
- 8 头文件组织(CF-H)
- 9 注释风格(CF-C)
- 10 标准知识条目列表
1 工具链与流水线
| 环节 | 工具 | 职责 | CI 命令(示例) |
|---|---|---|---|
| 格式校验 | clang-format | 排版一致性,差异即违规 | clang-format --dry-run --Werror -style=file <files> |
| 格式修复 | clang-format | 自动重排 | clang-format -i -style=file <files> |
| 命名/语义 | clang-tidy | 命名、保护宏、可读性 | clang-tidy -p build <files> |
| 增量校验 | git-clang-format | 仅校验改动行 | git clang-format --diff <base> |
- 规则配置以仓库根目录
.clang-format(BasedOnStyle: Google)与.clang-tidy为唯一事实来源,CI 与本地共用同一份配置。 - 检测日志中
clang-format以统一 diff呈现违规;clang-tidy以file:line:col: warning: ... [check-name]呈现,方括号内即规则编号。