c++ - Clang 与 Clang tidy 是否检测到相同的警告和错误?

标签 c++ linux clang clang-tidy

据我所知,Clan-tidy 可以进行这些检查 https://clang.llvm.org/extra/clang-tidy/checks/list.html 超过默认检查集(clang-analyser) 并且 Clang 还可以检测错误和警告 https://clang.llvm.org/docs/DiagnosticsReference.html 他们能否检测到不同的错误或警告列表?
Clang-Tidy 在后台使用 Clang 吗? 两者之间有什么联系吗?

最佳答案

是的,他们既有区别又有共同点。让我从共同点开始:它们都是 LLVM 项目的一部分,该项目以提供构建于其之上的库和可执行文件而闻名。

在这种情况下,clang 编译器使用前端创建 AST 并在那时创建编译器警告。它通过优化和代码生成进行了扩展。

Clang-tidy 使用相同的前端,然后在其上运行 AST 匹配器来检测问题。

一般来说,编译器警告的检查成本很低,并且(几乎)不包含误报。 Clang-tidy 有昂贵的支票或误报风险更高的支票。后者还包含不太常见的检查或风格检查。

有些检查确实很相似,例如缺少覆盖,然而,tidy 捕获所有情况,当文件中未使用覆盖时警告被抑制。

一般来说,我喜欢启用所有警告并禁用那些应该稍后修复的警告。这将在编译时被检查为副作用。 Clang-tidy 通常在进度的后期运行(预提交或 CI)。

关于c++ - Clang 与 Clang tidy 是否检测到相同的警告和错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085962/

相关文章:

xcode - xcrun clang --sysroot 找不到 stdio.h

c++ - 删除的构造函数 - MSVC 报告错误,Clang 没有

cmake - 是否可以使用 gold 链接器编译和链接 Clang/LLVM?

c++ - 为 Visual Studio C++ 静态库强制导出名称

C++ 概念 : CRTP

linux - Perl匿名管道没有输出

linux - 将次要版本从内核提取到 bash 变量

c++ - 导入 3d 模型 - 我是否必须使用自定义顶点类型进行索引?

c++循环在每次迭代时变慢

regex - 如何使用 grep 和正则表达式从字符串中提取数字