Clangd

Clang 项目拥有用于解析 C 语言族源文件并为您提供详细诊断的库。clangd索引可为代码补全等服务提供准确、完整的结果。

为 clangd 设置首选项:

  1. 选择首选项>C++ >Clangd >Use clangd

    C++ 偏好设置中的 Clangd 选项卡

  2. Path to executable 中,输入 clangd 第 14 版或更高版本的路径。
  3. Background indexing 字段中,选择Off 可使用比默认索引器速度更快但精度更低的内置索引器。在全局符号搜索过程中,根据搜索结果的准确性还是速度对您更重要来设置索引优先级。
  4. Per-project index location 中,选择为每个项目存储索引文件的文件夹。compile-commands.json 文件也存储在此文件夹中。
  5. Per-session index location 中,选择为每个会话存储索引文件的文件夹。
  6. Header/source switch mode 中,选择用于在头文件和源文件之间切换的 C/C++ 后端。虽然 clangd 实现比内置代码模型功能更强,但它往往会发现误报。如果内置代码模型未找到任何内容,Try Both 将使用 clangd。
  7. 默认情况下,clangd 会尝试使用所有未使用的内核。您可以在Worker thread count 中设置要使用的固定内核数。后台索引也会使用这么多的工作线程。
  8. 选择Insert header files on completion 可在完成符号时插入头文件。
  9. 选择Update dependent sources 可在编辑头文件时重新解析包含头文件的所有源文件。如果头文件包含在许多源文件中,这可能会导致 CPU 负荷过重。如果清除此选项,则只在保存头文件时重新解析源文件。
  10. 如果在代码完成过程中经常错过重要结果,请设置Completion results 的数量。将其设置为 0 可取消对补全结果数量的限制。将其设置为 0 或过高会导致代码自动完成速度变慢。
  11. Completion ranking model 中,选择用于排列完成建议的 clangd 模型。这将决定它们在选择列表中的顺序。Decision Forest 模型 (Default) 是预先训练的机器学习结果,通常比手工创建的Heuristic 模型效果更好。如果补全建议与您对代码库的期望偏离过大,请选择后者。
  12. Document update threshold 中,指定Qt Creator 向服务器发送文档更改前的等待时间。如果文档在等待期间再次更改,超时时间将被重置。
  13. 选择Ignore files greater than 可忽略大文件,从而加快解析速度。在复选框旁边的字段中指定要解析的文件的最大大小。
  14. Diagnostic configuration 字段显示要执行的 Clang 检查。选择该字段的值可选择和编辑要执行的检查。
  15. 选择Add 可选择应使用单个 clangd 进程进行索引的会话。

Clang 检查

选择Diagnostic configuration 字段的值可打开Diagnostic Configurations 对话框,在此可选择和编辑要执行的检查。

诊断配置对话框

除了使用内置检查外,还可以选择Copy 来创建检查副本,并根据需要对副本进行编辑。

  • Build-system warnings 显示构建系统指定的警告。
  • Checks for questionable constructs 结合 和 检查容易避免的可疑结构和一些其他问题。-Wall -Wextra

Clang 检查以-W 开始。每个检查都有一个以-Wno 开头的否定版本。

请注意,某些选项会开启其他选项。更多信息,请参阅 "请求或抑制警告的选项"或 GCC 或 Clang 手册页面。

另请参阅 指定 clangd 设置Clang 代码模型代码模型

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.