当前位置: 首页 > news >正文

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

作者:gentle_zhou

原文链接: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/

相关文章:

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

作者:gentle_zhou 原文链接:cl 和 "clangtidy"分别是什么?是同一样东西吗?-云社区-华为云 先说结论:这两个是不同的工具,cl是编译器,clangtidy是代码检查工具,它们不是一…...

ubuntu22.04开机自启动Eureka服务

ubuntu22.04开机自启动Eureka服务 1、创建启动脚本eurekaService.sh #我们把启动脚本放在/usr/software目录下 cd /usr/software vim eurekaService.sheurekaService.sh内容为 #!/bin/sh # this is a eurekaService shell to startup at the mechian power on.echo "eu…...

【 OpenGauss源码学习 —— 列存储(analyze)(三)】

列存储(analyze) acquire_sample_rows 函数RelationGetNumberOfBlocks 函数BlockSampler_Init 函数anl_init_selection_state 函数BlockSampler_GetBlock 函数ReadBufferExtendedPageGetMaxOffsetNumber 函数HeapTupleSatisfiesVacuum 函数heapCopyTuple…...

Element Plus table formatter函数返回html内容

查看 Element Plus table formatter 支持返回 类型为string 和 VNode对象; 若依全局直接用h函数,无需引用 下面普通基本用法:在Element Plus中,你可以使用自定义的formatter函数来返回VNode对象,从而实现更灵活的自定…...

c++ mutable

mutable 可变的,易变的 跟 constant(既C中的const)是反义词作用: 保持常量对象中大部分数据成员仍然是“只读”的情况下,实现对个别数据成员的修改使类的const函数可以修改对象的mutable数据成员。 注意事项&#xff…...

element-plus 踩的坑

原来node版本是16.17.0,装element-plus死活装不上,结果要把node版本升级到18以上,真坑呀,也没人告诉我要这么干...

Python、Rust中的协程

协程 协程在不同的堆栈上同时运行,但每次只有一个协程运行,而其调用者则等待: F启动G,但G并不会立即运行,F必须显式的恢复G,然后 G 开始运行。在任何时候,G 都可能转身并让步返回到 F。这会暂停 G 并继续…...

Vuepress样式修改内容宽度

1、相关文件 一般所在目录node_modules\vuepress\theme-default\styles\wrapper.styl 2、调整宽度,截图中是已经调整好的,在我电脑上显示刚刚好。...

Vue2电商前台项目——项目的初始化及搭建

Vue2电商前台项目——项目的初始化及搭建 Vue基础知识点击此处——Vue.js 文章目录 Vue2电商前台项目——项目的初始化及搭建一、项目初始化1、脚手架目录介绍2、项目的其他配置 二、项目的路由分析及搭建1、项目的路由分析2、开发项目的步骤3、非路由组件的搭建4、路由组件的搭…...

递归算法学习——N皇后问题,单词搜索

目录 ​编辑 一,N皇后问题 1.题意 2.解释 3.题目接口 4.解题思路及代码 二,单词搜索 1.题意 2.解释 3.题目接口 4.思路及代码 一,N皇后问题 1.题意 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上…...

【SpringBoot】mockito+junit 单元测试

1.POM 引入以下依赖 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.springframework.b…...

webserver 同步 I/O 模拟 Proactor 模式的工作流程

服务器基本框架、I/O 模型、事件处理模式 一、服务器编程基本框架 虽然服务器程序种类繁多&#xff0c;但其基本框架都一样&#xff0c;不同之处在于逻辑处理。 二、五种 I/O 模型 阻塞/非阻塞、同步/异步&#xff08;网络IO&#xff09;_呵呵哒(&#xffe3;▽&#xffe3;)&…...

mysql8-基于docker搭建主从同步

一、环境信息 系统版本&#xff1a;CentOS Linux release 7.9.2009 (Core) cat /etc/centos-release Docker版本&#xff1a;Docker version 20.10.6, build 370c289 docker --version Docker-compose版本&#xff1a;Docker Compose version v2.10.2 docker-compose --versio…...

智能水表远程控制系统:引领节水新时代

随着科技的不断发展&#xff0c;物联网技术逐渐融入到我们的日常生活中。其中&#xff0c;智能水表远程控制系统成为一项重要创新&#xff0c;对于提高水资源利用率、实现绿色节水具有重要意义。下面小编就来为大家介绍下智能水表远程控制系统吧! 一、智能水表远程控制系统定义…...

【FusionInsight 迁移】HBase从C50迁移到6.5.1(03)6.5.1上准备Loader

【FusionInsight 迁移】HBase从C50迁移到6.5.1&#xff08;03&#xff09;6.5.1上准备Loader HBase从C50迁移到6.5.1&#xff08;03&#xff09;6.5.1上准备Loader登录新集群FusionInsight 6.5.1的Manager准备Loader服务准备Loader Role准备Loader User HBase从C50迁移到6.5.1&…...

redis多线程操作

今天更新一个redis多线程操作&#xff0c; 可直接搬运 import redis, os, threading, queue import pandas as pd# 创建一个任务队列 task_queue queue.Queue()def read_excel(folder_path):total_list []for filepath, dirnames, filenames in os.walk(folder_path):for fi…...

OpenCV(十七):拉普拉斯图像金字塔

1.拉普拉斯图像金字塔原理 拉普拉斯图像金字塔是一种多尺度图像表示方法&#xff0c;通过对高斯金字塔进行差分运算得到。它能够提供图像在不同尺度上的细节信息&#xff0c;常用于图像处理任务如图像增强、边缘检测等。 下面是拉普拉斯图像金字塔的原理和步骤&#xff1a; 构…...

OpenCL编程指南-10.2使用C++包装器API的矢量相加示例

选择OpenCL平台并创建一个上下文 建立OpenCL的第一步是选择一个平台。第2章介绍过&#xff0c;OpenCL使用了ICD模型&#xff0c;其中可以有多个OpenCL实现在一个系统上并存。类似于HelloWorld示例&#xff0c;这个矢量相加程序展示了选择OpenCL平台的一种最简单的方法&#xf…...

mysql数据库,字符串使用双引号““导致报错,使用单引号‘‘不报错,Unknown column ‘user-test‘ in ‘where clause‘

文章目录 一、完整报错二、报错数据三、报错原因四、解决方式1、更改执行sql2、更改sql数据校验模式&#xff08;改为默认校验&#xff09; 一、完整报错 > 1054 - Unknown column user-test in where clause二、报错数据 SELECT * FROM config_info WHERE config_info.da…...

[华为云云服务器评测] 华为云耀云服务器 Java、node环境配置

系列文章目录 第一章 [linux实战] 华为云耀云服务器L实例 Java、node环境配置 文章目录 系列文章目录前言一、任务拆解二、修改密码三、配置安全规则四、远程登录并更新apt五、安装、配置JDK环境5.1、安装openjdk,选择8版本5.2、检查jdk配置 六、安装、配置git6.1、安装git6.2…...

3步告别桌面混乱:开源免费的NoFences桌面分区管理工具

3步告别桌面混乱&#xff1a;开源免费的NoFences桌面分区管理工具 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要在杂乱无章的桌面图标中浪费宝贵时间&#x…...

usearch的内存泄漏自动化测试:在CI中集成泄漏检测

usearch的内存泄漏自动化测试&#xff1a;在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & &#x1f51c; Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...

电话号码定位开源工具实战完全指南:从部署到企业应用

电话号码定位开源工具实战完全指南&#xff1a;从部署到企业应用 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...

金仓数据库KingbaseES KSQL命令行工具实战指南:从基础操作到高级调优

1. KSQL命令行工具入门指南 第一次接触金仓数据库的KSQL命令行工具时&#xff0c;我完全被它强大的功能震撼到了。作为DBA日常运维的瑞士军刀&#xff0c;KSQL不仅能完成基本的数据库操作&#xff0c;还能进行深度性能分析和调优。记得刚开始使用时&#xff0c;我还在纠结要不要…...

WaveTools实战:鸣潮性能优化的5个技术秘诀

WaveTools实战&#xff1a;鸣潮性能优化的5个技术秘诀 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 问题定位&#xff1a;帧率异常的底层原因分析 作为《鸣潮》玩家&#xff0c;你是否遇到过这样的困扰…...

实战指南:在CentOS 8上部署与配置BIND DNS权威服务器

1. 为什么要在CentOS 8上搭建DNS服务器&#xff1f; 想象一下这样的场景&#xff1a;公司内部有几十台服务器&#xff0c;每次新同事入职都要发一份IP地址对照表&#xff1b;开发团队每次联调测试都要反复确认服务地址&#xff1b;运维人员排查问题时要在记事本里翻找各种192.1…...

终极指南:如何使用RPGMakerDecrypter轻松解密游戏资源

终极指南&#xff1a;如何使用RPGMakerDecrypter轻松解密游戏资源 【免费下载链接】RPGMakerDecrypter Tool for extracting RPG Maker XP, VX and VX Ace encrypted archives. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerDecrypter RPGMakerDecrypter是一款…...

革命性本地AI聊天应用ChatRTX:基于TensorRT-LLM和RAG的完整指南

革命性本地AI聊天应用ChatRTX&#xff1a;基于TensorRT-LLM和RAG的完整指南 【免费下载链接】trt-llm-rag-windows 项目地址: https://gitcode.com/gh_mirrors/tr/trt-llm-rag-windows ChatRTX是一款革命性的本地AI聊天应用程序&#xff0c;它基于NVIDIA的TensorRT-LLM…...

Qwen3.5-2B部署教程:Conda+Supervisor环境一键拉起,告别手动配置

Qwen3.5-2B部署教程&#xff1a;CondaSupervisor环境一键拉起&#xff0c;告别手动配置 1. 前言&#xff1a;认识Qwen3.5-2B轻量化模型 Qwen3.5-2B是Qwen3.5系列中的轻量化多模态基础模型&#xff0c;仅有20亿参数规模&#xff0c;专为低功耗、低门槛部署场景设计。这个模型特…...

【国家级智能制造项目核心代码解密】:Java实现的轻量级工业协议网关引擎(支持国密SM4加密+断线续传)

第一章&#xff1a;轻量级工业协议网关引擎总体架构设计轻量级工业协议网关引擎面向边缘侧资源受限场景&#xff0c;以低内存占用、高协议兼容性与热插拔扩展能力为核心设计目标。整体采用分层解耦架构&#xff0c;由运行时核心、协议适配层、数据路由层和管理接口层四大部分构…...