跳到主要内容

C++ 代码静态分析

Apache Doris 支持使用 ClangdClang-Tidy 对 C++ 代码进行静态分析。两者均已内置在 LDB-toolchain 中,开发者也可自行安装或编译。

工具对比

工具作用配置文件
Clangd提供代码跳转、补全、悬停提示等 IDE 能力通过 clangd.arguments 传入
Clang-Tidy静态分析与代码质量检查(可由 Clangd 调用)Doris 根目录下的 .clang-tidy

相比 vscode-cpptools,Clangd 能提供更精准的代码跳转能力,并集成 Clang-Tidy 的诊断与快速修复功能。

Clang-Tidy 配置

Clang-Tidy 的检查规则集中在 Doris 根目录下的 .clang-tidy 文件中。可通过修改该文件来开启/关闭特定的检查项。

在 VSCode 中配置 Clangd

操作步骤

  1. 安装 clangd 插件。
  2. 在使用前先编译一次 be(RELEASE)be-ut(ASAN),以生成对应的 compile_commands.json 文件。
  3. settings.json 中编辑或直接在首选项中更改插件配置。

配置示例

{
"clangd.path": "ldb_toolchain/bin/clangd",
"clangd.arguments": [
"--background-index",
"--clang-tidy",
"--compile-commands-dir=doris/be/build_Release/",
"--completion-style=detailed",
"-j=5",
"--all-scopes-completion",
"--pch-storage=memory",
"--pretty",
"--query-driver=ldb_toolchain/bin/*"
],
"clangd.trace": "output/clangd-server.log"
}

关键参数说明

参数说明
clangd.pathClangd 可执行文件的路径
--background-index后台索引整个项目,加速符号查找
--clang-tidy开启 Clang-Tidy 静态检查
--compile-commands-dir指定 compile_commands.json 所在目录
--completion-style=detailed补全时展示详细信息
-j=5Clangd 分析文件的并行数
--query-driver编译器路径,用于解析系统头文件

FAQ

Q:clangd 报找不到头文件或符号该如何排查?

请确认已经先编译一次 BE 生成 compile_commands.json,并将 --compile-commands-dir 指向正确目录。