繁体   English   中英

Clang vs Clang tidy 是否检测到相同的警告和错误?

[英]Do Clang vs Clang tidy detect the same warnings and errors ?

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

是的,它们是不同的,也是共同点。 让我从共同点开始:它们都是 LLVM 项目的一部分,众所周知,该项目提供基于它构建的库和可执行文件。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM