Clang vs Clang整洁地检测到相同的警告和错误吗?

时间:2018-08-29 20:56:22

标签: c++ linux clang clang-tidy

据我所知,部落可以进行这些检查https://clang.llvm.org/extra/clang-tidy/checks/list.html 除了默认检查设置(clang-analyser) 而且Clang也可以检测错误和警告 https://clang.llvm.org/docs/DiagnosticsReference.html 他们可以检测到不同的错误或警告列表吗?
Clang-Tidy是否在后台使用Clang? 两者之间有联系吗?

1 个答案:

答案 0 :(得分:1)

是的,它们是区别和共同点。让我从一个共同点开始:它们都是LLVM项目的一部分,众所周知,LLVM项目是在其基础上提供库和可执行文件。

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

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

通常,编译器警告很便宜,并且几乎不包含误报。 lang整洁的支票价格昂贵,或者误报风险更大。后者还包含较不常用的检查或样式检查。

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

通常,我喜欢启用所有警告,并禁用以后应修复的警告。编译时将检查是否有副作用。 Clang-tidy通常在进度(预提交或CI)中运行得较晚。