メインコンテンツまでスキップ
に最終更新

C++ 静的コード解析

Apache Doris では、Clangd と Clang-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-tidyClang-Tidy による静的チェックを有効にします
--compile-commands-dircompile_commands.json を含むディレクトリを指定します
--completion-style=detailed補完時に詳細情報を表示します
-j=5Clangd がファイルの解析に使用する並列ジョブ数
--query-driverシステムヘッダーファイルの解決に使用するコンパイラーへのパス

よくある質問​

Q: clangd がヘッダーファイルやシンボルが見つからないと報告する場合、どう調査すればよいですか?

BE を少なくとも一度コンパイルして compile_commands.json を生成したことと、--compile-commands-dir が正しいディレクトリを指していることを確認してください。