cl 和 "clangtidy"分别是什么?是同一样东西吗?

举报
gentle_zhou 发表于 2023/08/27 16:52:35 2023/08/27
【摘要】 先说结论:这两个是不同的工具,cl是编译器,clangtidy是代码检查工具,它们不是一样东西。

先说结论:这两个是不同的工具,cl是编译器,clangtidy是代码检查工具,它们不是一样东西。而且,“clangtidy” 正确的写法是:clang-tidy。

cl是什么?

cl 是 Visual Studio 自带的 C/C++ 编译器,它遵循 Microsoft 的编译标准和规范,可以生成可在 Windows 平台上运行的可执行文件和库文件。cl支持在通过命令行或则visual studio中界面的形式来被调用,并支持接受多种参数和选项来控制编译过程。而且,cl虽说是VS自带的,但也支持与其他Visual Studio 的工具集成,如 IntelliSense, CodeLens, Code Analysis 等。

而Visual Studio则是一款用于开发、调试、测试和部署软件项目的集成开发环境IDE,支持多种编程语言,如C#,C++,VB.NET等。Visual Studio 提供了多种功能和工具,如代码编辑器、调试器、分析器、测试器、版本控制器、代码生成器等,让开发人员可以更方便地创建和管理自己的软件项目。

clang-tidy是什么?

clang-tidy 是一个基于 Clang 的 C/C++ 代码检查和格式化工具,它遵循 LLVM 的编译标准和规范,可以检测出代码中的错误、警告、风格问题等,并提供相应的修复建议或自动化修复功能。clang-tidy和一般SAST工具不同,它是基于AST开发的,在带来更精准性的同时,也会比基于正则表达式的静态检查工具慢一点;且因为它基于AST,所以clang-tidy运行的时候必须需要知道编译命令。
clang-tidy 支持通过命令行或者 IDE 插件的方式来调用,并支持接受多种参数和选项来控制检查过程。而且,clang-tidy 也可以与其他 Clang 工具集成(比如 ClangFormat, ClangCheck, ClangQuery 等),来提高代码质量和效率。

而clang 则是一个基于 LLVM 的 C/C++ 编译器,它遵循 LLVM 的编译标准和规范,可以生成可在多种平台上运行的可执行文件和库文件。clang 支持通过命令行或者 IDE 插件的方式来调用,也可以与其他 LLVM 工具集成,如 LLD, LLDB, LLVM IR, LLVM Passes 等,来提供更多的功能。

cl 和 clang-tidy有什么区别?

cl 和 clang-tidy 有不同的作用和目标,它们不能互相替代。clang-tidy 是一个用于检查和格式化 C/C++ 代码的工具,它可以发现和修复代码中的错误、警告、风格问题等。cl 则是一个用于编译 C/C++ 代码的工具,它可以生成可在 Windows 平台上运行的可执行文件和库文件。

clang-tidy因为遵循 LLVM 的编译标准和规范,可能与 cl 的编译标准和规范(cl遵循 Microsoft 的编译标准和规范来生成可在 Windows 平台上运行的可执行文件和库文件)不完全兼容,导致一些编译错误或警告。

参考资料

  1. https://en.wikipedia.org/wiki/Visual_Studio
  2. https://en.wikipedia.org/wiki/Clang
  3. https://code.visualstudio.com/docs/cpp/config-msvc
  4. https://devblogs.microsoft.com/cppblog/exploring-clang-tooling-part-2-examining-the-clang-ast-with-clang-query/
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。