このページでは

Clang コードモデル

コードモデルとは、アプリケーションの作成に使用している言語を理解するIDEの機能の一部です。これは、Qt Creator が以下のサービスを提供するための基盤となります:

Clang コードモデルプラグインは、Clangd を基盤として、C++ 向けにこれらの機能の一部を提供しています。

Clang コードモデルについて

Clangプロジェクトには、C言語ファミリーのソースファイルを解析するためのライブラリが用意されています。警告やエラーのマーカーを通じて得られるフィードバックは、コンパイラが提供するものと全く同じであり、組み込みのQt Creator コードモデルを使用する場合のように、不完全なセットや近似値ではありません。 Clangは診断のための詳細な情報に重点を置いており、例えばコードにタイプミスがある場合などに非常に役立ちます。私たちは、LSPサーバーを実装するclangdツールを介して、これらのライブラリを活用しています。

ClangはC++言語の進化に追随しています。本稿執筆時点では、C++98/03、C++11、C++14、C++17、C89、C99、Objective-C、およびObjective-C++をサポートしています。

欠点として、大規模なプロジェクトでは、Clangをコードモデルとして使用すると、組み込みのコードモデルを使用する場合よりも処理速度が低下します。Clangはオブジェクトファイルを生成する必要はありませんが、ソースファイルの解析と分析は依然として必要です。STLのみを使用する小規模なプロジェクトの場合、処理は比較的高速です。 しかし、複数のファイルを含む大規模なプロジェクトの場合、1つのファイルとそれにインクルードされたすべてのファイルを処理するには、ある程度の時間がかかることがあります。

Clang コードモデルプラグインは、現在、組み込みの C/C++ コードモデルと同様の機能の一部を提供しています:

  • コード補完
  • 構文および意味論的なハイライト
  • 診断
  • シンボルのアウトライン
  • ツールチップ
  • 以下のシンボル
  • シンボルの名前変更
  • シンボルの出現箇所の検索

代わりに組み込みのコードモデルを使用するには、[Preferences ] > [C++ ] > [clangd] を選択し、[Use clangd] のチェックを外します。この設定はプロジェクトレベルでも存在するため、Clang ベースのサービスを全般的に有効にしておきながら、特定のプロジェクトでは無効にしたり、その逆を行ったりすることができます。

Clangの診断は、以下の対象に対して設定できます:

Clangd インデックス作成

clangdインデックスは、参照の検索、カーソル下のシンボルの追跡、ロケーターの使用といったサービスに対して、複雑な構文であっても正確かつ完全な結果を提供します。プロジェクトを開くと、clangd はソースファイルをスキャンしてインデックスを生成します。 大規模なプロジェクトの場合、この処理には時間がかかることがありますが、インデックスは永続的であり、再スキャンは増分処理で行われるため、Qt Creator を閉じて再起動してもデータが失われることはありません。

グローバルインデックス作成を一時的に無効にするには、Toggle Progress Details (1) を選択し、プログレスバー上の「X 」を選択します。

進捗の詳細を表示/非表示

デフォルトでは、Qt Creator はプロジェクトごとに 1 つの clangd プロセスを実行します。関連するプロジェクトを含むセッションを作成している場合は、そのセッション内のプロジェクトを 1 つの clangd プロセスで管理するように指定できます。

アウトラインビューのドキュメント アウトラインは、clangd のドキュメントシンボル機能によってサポートされているため、以前よりも信頼性の高い結果が得られます。

「C++ コードモデルの構成」、「clangd 設定の指定」、「Clang ツール設定の指定」、「コンパイル データベースの使用」、「コード モデル」、および「clangdも参照してください

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.