据我所知,Clan-tidy 可以在默认检查集(clang-analyser)之上进行这些检查 https://clang.llvm.org/extra/clang-tidy/checks/list.html
并且 Clang 也可以检测错误和警告
https://clang.llvm.org/docs/DiagnosticsReference.html
他们能检测到不同的错误或警告列表吗?
Clang-Tidy 在后台使用 Clang 吗?两者之间有什么联系吗?
问问题
1653 次
1 回答
2
是的,它们是不同的,也是共同的。让我从共同点开始:它们都是 LLVM 项目的一部分,该项目提供基于其构建的库和可执行文件。
在这种情况下,clang 编译器使用前端创建 AST 并在那时创建编译器警告。它通过优化和代码生成进行了扩展。
Clang-tidy 使用相同的前端并在其上运行 AST 匹配器来检测问题。
一般来说,编译器警告检查起来很便宜,并且(几乎)不包含误报。Clang-tidy 有昂贵的检查或误报风险更大的检查。后者还包含不太常见的检查或风格检查。
一些检查确实相似,例如缺少覆盖,但是,整洁的捕获所有情况,当文件中未使用覆盖时,警告被抑制。
一般来说,我喜欢启用所有警告并禁用以后应该修复的警告。这将在编译时作为副作用进行检查。Clang-tidy 通常在进程的后期运行(预提交或 CI)。
于 2018-08-29T22:03:40.127 回答