SuperAPI AI 工具集

be-code-style

编程与开发

查看项目

更新于 10-15 19:57

技能介绍

用途:修复 Apache Doris BE 与 Cloud 模块中 C++ 代码的格式问题,使用项目自带的 clang-format 配置(v16)。适用时机包括提交 BE/Cloud C++ 代码前、CI 报告 clang-format 失败时,以及需要检查或修复 C++ 代码风格时。

前提:需确认调用的 clang-format 主版本为 16。若环境默认版本不符,可尝试:若存在 .vscode/settings.json,使用其中的 clang-format.executable;若为 worktree 目录,使用主目录的 .vscode/settings.json;从 PATH、当前目录及主目录的 custom_env.sh 查找编译器工具链路径,在该路径及其父目录中寻找主版本号为 16 的 clang-format。

用法:第一步自动修复,运行 build-support/clang-format.sh,该脚本强制使用 clang-format v16,会就地格式化 be/src、be/test、cloud/src、cloud/test 下的所有 C++ 文件,并遵循 .clang-format 与 .clang-format-ignore。注意始终使用该脚本而非直接调用 clang-format,脚本会校验版本 16,版本不符会报错退出,使用其他版本会导致格式不一致。第二步仅检查不修改,运行 build-support/check-format.sh,输出违规 diff 并在存在违规时以非零状态退出。第三步审查并提交,运行 clang-format.sh 后用 git diff 确认仅格式变化,再暂存提交。

关键配置:.clang-format 为主格式规则(基于 Google,100 列,4 空格缩进);.clang-format-ignore 列出排除文件(第三方、生成文件);build-support/run_clang_format.py 为并行执行的 Python 包装器。排除目录包括 be/src/apache-orc/、be/src/clucene/、be/src/gutil/、be/src/glibc-compatibility/,以及特定第三方 vendored 文件(mustache、sse2neon、utf8_check)和 cloud/src/common/defer.h。

故障排查:找不到 clang-format 时安装 v16 或设置 CLANG_FORMAT_BINARY 环境变量;版本不是 16 时安装 v16,macOS 可执行 brew install llvm@16;文件未被格式化时检查 .clang-format-ignore 中的排除项。