用途:在 Apache Doris 项目中对 BE 和 Cloud 模块新增或修改的 C++ 文件运行 clang-tidy 静态分析,使用项目自带的 .clang-tidy 配置。脚本通过解析 git diff 识别变更行范围,并尽量只报告这些行上的诊断,过滤掉未包含在 diff 中的头文件诊断,以减少既有代码噪声。
主要能力:默认检测未提交与已暂存的 C++ 变更文件,自动查找最新 BE 构建生成的 compile_commands.json,按文件分组报告警告,并跳过第三方与生成代码目录。支持 --base 指定对比分支、--files 指定文件、--full 报告全部警告、--build-dir 指定构建目录、--fix 应用自动修复。启用的检查包括 clang-diagnostic-、clang-analyzer-、bugprone-、modernize-、readability-、performance- 和 misc-redundant-expression。
使用方式:先构建相关模块,BE 用 ./build.sh --be -j${DORIS_PARALLELISM},Cloud 用 ./build.sh --cloud -j${DORIS_PARALLELISM},以生成 compile_commands.json。然后运行 build-support/run-clang-tidy.sh。若变更跨两个模块,需用不同 --build-dir 分别运行。修复后重新运行脚本验证。无法修复的警告可用 // NOLINT(check-name) 并附理由抑制。
适用场景:构建 BE 后、提交 C++ 变更前;CI 在 PR 上报告 clang-tidy 警告时;主动检查新代码中的常见缺陷与风格问题。
限制:需先完成对应模块构建并安装 clang-tidy(项目使用 LDB 工具链中的 clang-tidy)。单个编译数据库通常只覆盖一个模块。默认只报告变更行上的警告,--fix 的修复可能超出变更行。头文件中的警告仅在头文件也属于变更集时才应修复。部分边缘情况仍可能出现额外诊断。