Clang-Check:它还有用吗?

windows平台下clang_checker的使用 Windows平台下Clang Checker的使用写在最前为什么要写这篇博客呢,因为最近的一个项目涉及到了Clang编译器在Windows平台下的使用,我们原来都是在Linux平台下来对Clang编译器来做工作的,一旦涉及到了平台迁移的问题,可能就会出现很多意想不到的问题。果不其然,我们用了两个星期的时间才不算特别完美的解决了这个问题。就是希望将我们的做法都写出来,让以后想要使用的人少走一些弯路。 阅读详情

在现代软件开发中,静态分析工具的使用已经成为保障代码质量的重要一环。随着编译器技术的不断发展,LLVM 工具链中的不同工具为开发者提供了多种选择,其中 clang-check 是一款相对简单但实用的工具。然而,随着 clang-tidy 等更强大的工具出现,许多人不禁会问:clang-check 它还有用吗?本文将详细讲解 clang-check 的概念、历史、功能、与 clang-tidy 的关系,以及它在现代开发中的实际用途。

在这里插入图片描述

一、Clang-Check 的概念

clang-check 是 LLVM 项目中的一部分,主要用于静态分析 C/C++ 源代码。它是一个轻量级的工具,能够检查代码的语法和语义错误,并提供编译时的诊断信息。clang-check 使用 clang 编译器前端来解析代码,但不进行完整的编译。这使得开发者在编译前能快速检测代码中的问题,而无需等待编译器的完整编译过程。

二、Clang-Check 的历史

clang-check 的开发伴随着 LLVM 项目的快速扩展而开始。LLVM 项目于 2000 年由 Chris Lattner 在伊利诺伊大学启动,最初是为了提供一种模块化的编译器基础架构。随着 Clang 编译器的引入,LLVM 项目获得了一个强大的 C/C++/Objective-C 前端,而 clang-check 是其工具链的延伸,提供了快速代码检查功能。

早期的开发者在使用 clang 编译代码时,发现有时需要一种轻量级的方法来验证代码的语法和简单语义问题,而无需进行完整编译。于是,clang-check 作为这样一个快速检查工具应运而生。它填补了开发周期中需要轻量级代码验证的空白,特别是在开发早期或需要快速进行代码检测的场景下。

三、Clang-Check 的功能

clang-check 的核心功能是提供快速、轻量的代码检查。以下是它的一些主要功能:

  1. 语法检查:在不进行完整编译的情况下,快速验证 C/C++ 代码的语法是否正确。
  2. 基础语义分析:检查代码中的基础语义错误,如未定义的符号或类型不匹配等。
  3. 诊断输出:提供类似编译器的错误和警告信息,帮助开发者在编译前修复潜在问题。
  4. 依赖 compile_commands.json 文件:clang-check 可以通过读取 compile_commands.json 文件来获取编译器参数和路径,模拟实际编译环境进行检查。

虽然 clang-check 功能简单,但在需要快速验证代码时非常实用。它不会像完整的编译过程那样耗费大量时间,也不会像更复杂的工具那样引入额外的配置和性能开销。
在这里插入图片描述

四、Clang-Tidy 与 Clang-Check 的关系

clang-tidy 和 clang-check 都是 LLVM 工具链中的静态分析工具,但它们的功能和用途有所不同。

  • 相似之处:

    • 都是基于 Clang 前端的代码分析工具,使用 clang 编译器前端来解析 C/C++ 代码。
    • 都依赖 compile_commands.json 文件来获取编译信息,从而模拟真实的编译环境。
  • 不同之处:

    • 功能范围:clang-tidy 是一个更强大、更灵活的静态分析工具,支持多种检查器和自定义配置,涵盖了代码风格检查、性能优化、现代化建议和安全检查等。相比之下,clang-check 更简单,只提供基础的语法和语义检查。
    • 扩展能力:clang-tidy 支持用户定义和启用/禁用特定的检查器,并提供了自动修复代码问题的功能(-fix 选项)。clang-check 没有这样的扩展功能,它只能提供简单的诊断。
    • 使用场景:clang-check 更适合快速验证代码语法,而 clang-tidy 则适用于代码审查、性能优化和遵循代码最佳实践的场景。
五、实战用途

要理解 clang-check 是否仍然有用,我们需要了解它在实际开发中的使用场景和优势。

5.1 开发早期的快速验证

在项目开发早期,开发者需要快速验证代码是否有基本的语法和语义错误,而不进行完整编译。clang-check 在这类场景下非常有用。例如:

clang-check main.cpp -- -std=c++17

这条命令会检查 main.cpp 文件的语法和基础语义问题,并输出相关的诊断信息。开发者可以快速发现和修复常见的语法错误,而无需等待完整编译。

5.2 与 CI/CD 集成

在某些 CI/CD 管道中,clang-check 可以用作初步的代码验证工具,帮助开发团队在提交代码时快速捕捉一些基础错误。虽然 clang-tidy 提供了更全面的检查,clang-check 作为更轻量的替代方案在某些情况下仍然适用,特别是当需要快速反馈时。

5.3 开发者的调试工具

对于需要快速定位代码问题的开发者,clang-check 是一个有效的工具。它可以在不编译整个项目的情况下提供代码诊断,这在大型项目中尤为有用。

六、Clang-Tidy 的崛起,Clang-Check 还有用吗?

clang-tidy 的出现无疑为开发者提供了更全面的代码检查和改进能力,它的可扩展性和丰富的检查器让其成为了静态分析的首选工具。然而,这并不意味着 clang-check 完全没有用处。

  • 轻量和速度:clang-check 更轻量,可以在需要快速进行代码检查时派上用场。对于简单的语法验证,它比 clang-tidy 更快、更易用。
  • 学习和调试:对于想要学习 Clang 前端基础用法的开发者,clang-check 是一个入门的好选择。

尽管 clang-tidy 具有更强的功能,clang-check 在某些轻量级场景中仍有用武之地,尤其是当开发者只需要快速验证代码的语法和基础错误时。

七、总结

clang-check 是一个简单而高效的工具,适用于快速验证 C/C++ 代码的语法和基础语义问题。虽然 clang-tidy 的功能更强大,并逐渐成为代码分析和改进的主流工具,clang-check 仍然在某些特定场景中发挥着重要作用。对于开发者来说,选择使用哪种工具取决于项目需求、开发阶段和所需的分析深度。

所以,clang-check 它还有用吗?答案是肯定的。尽管它的功能有限,但它的轻量性和简洁性使其在需要快速代码验证的场景中仍然是一个值得使用的工具。

深入研究Clang(十三) clang-tidy简介 最近几天在关注clang-tidy,有一些体会,简单做一些笔记。分享给感兴趣的朋友们,也是给将来的自己看。 1、clang-tidy是基于AST的静态检查工具。因为它基于AST,所以要比基于正则表达式的静态检查工具更为精准,但是带来的缺点就是要比基于正则表达式的静态检查工具慢一点。也是因为它基于AST,所以clang-tidy运行的时候需要知道编译命令。 2、clang-tidy不仅仅可以做静... 阅读详情

相关推荐

vscode please install clang or check configuration 解决办法

1.安装clang command     第一步:首先打开VScode编辑器     第二步:点击左侧“应用商店”栏     第三步:在“应用商店搜索拓展”栏输入关键字“clang”     第四步:安装提示的“C/c++ clang command”插件 2. 安装clang 访问网址:http://releases.llvm.org/download.html下载 C...

dingdongkk~博客 2万+

C++静态检查工具总结

C++静态检查工具总结 最近在尝试做代码审查,发现很多时候我们把时间花在了低级的规范性错误上面,为了节省这一部分的时间,我尝试了各种静态检查工具,这里做个简单的汇总,方便日后的查看。 clang-format 严格来说,它不是静态检查工具,而是代码格式化的工具,类似的工具还有astyle,但是相对来说,clang-format会好用一些,支持的配置参数也多一些。它的使用请参考Clang-Format Style Options。 使用统一的代码格式化工具,可以极大的代码格式上面的问题,在多人合作

Android 系统开发 3202

clang-format-checker:检查范围中的每个提交以获取正确的格式

lang格式 包含git和clang的最小docker镜像以运行git-clang-format 。 提供check-format.sh ,它将任何git ref作为参数: check-format.sh将在每个单独的提交上运行git-clang-format --diff ,并且如果创建任何diff都将失败。 .gitlab-ci.yml示例用法: stages : - check # ... clang-format : stage : check image : rechenknecht:5000/clang-format:latest script : - check-format.sh ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME} tags : - docker

使用 Clang Tools —— ClangCheck

本文为译文,点击此处查看原文。 ClangCheck 是一个围绕 LibTooling 的小的 wrapper,可以用来进行基本的错误检查和 AST 转储。 $ cat <<EOF > snippet.cc > void f() { > int a = 0 > } > EOF $ ~/clang/build/bin/clang-check snippe...

梦在哪里的博客 2302

贝塞尔曲线原理--曲线生成--路径规划--matlab代码

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.

bob595078694的博客 1万+

RHCSA Linux环境搭建

安装Linux操作系统一般有三种方式:为了便捷方便高效,因此本人选择通过虚拟机来使用Linux操作系统。先在官网(Download VMware Workstation Pro)下载好VMware workstation pro软件,下载安装完成后,需要激活打开。下载版本不同,所需激活码也不同(激活码可在网络上查找)

weixin_68256171的博客 1419

clang入门大全以及clang全家桶介绍

Clang 项目为LLVM 项目的类 C 语言家族(C、C++、Objective C/C++、OpenCL、CUDA 和 RenderScript)中的语言提供语言前端和工具基础设施,所有的一切,完全开源,而且具有丰富的文档,非常棒!!!提供了关于编译器方面的各种基础库(源代码api)和工具(编译好的可执行文件,称为全家桶),所以模块化非常好,用户可以组合它们,从而自己做出一些有意思的工具,或者定制化自己的编译器。Clang可以作为一个完整的编译器(clang.exe等),也可以提供api库。

biao2488890051的博客 1万+

SAP 银企直连实战:从零构建 DMEEX 格式树的配置与调试指南

本文详细介绍了SAP银企直连中DMEEX格式树的配置与调试方法,涵盖从基础认知到实战技巧的全流程。通过具体案例解析,帮助财务顾问快速掌握建设银行付款报文的格式树搭建、字段映射及调试优化,提升企业支付效率与准确性。

weixin_42526015的博客 566

告别编译错误!ESP-IDF项目中clang-check静态分析全攻略:从配置到疑难解决

你是否还在为ESP-IDF项目中的隐藏bug焦头烂额?编译通过却运行异常的问题是否频繁出现?本文将带你掌握clang-check静态分析工具在ESP-IDF环境中的完整配置流程,解决90%的常见配置难题,让代码缺陷在编译前无所遁形。读完本文你将获得: - 3分钟快速上手的clang-check环境配置方案 - 针对ESP-IDF项目结构的分析规则定制方法 - 5类常见错误的诊断与修复实例 - 自动...

gitblog_00934的博客 561

[QMT和ptrade量化交易小白入门]-109、小市值选股的基础上用六脉神剑评分,回测年化可到132%

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1859

概念解析 | 事件相机的原理 (含仿真代码)

在我们熟悉的世界里,传统相机就像一个勤勉的绘画师,每隔固定的时间就为我们勾勒出一幅完整的画面。但是,大自然中有太多瞬息万变的精彩场景,这种"定时绘画"的方式往往难以捕捉。于是,一种全新的"观察者"应运而生 -事件相机(Event Camera)。事件相机,就像是一群极其敏感的"像素哨兵",它们不再按部就班地等待指令,而是主动感知周围的变化,只有在光线强度发生显著变化时才会发出信号。这种革命性的设计,让事件相机拥有了传统相机难以企及的优势:超高的时间分辨率、极低的延迟、宽广的动态范围,以及出色的能效比。

NLOS的博客 1422

llvm/clang编译器添加航天子集区域限制的制导#pragma as-check

一.实现效果 输入:添加制导的源程序*.c 输出:打印每个函数对应的是否在制导范围内,如果在制导范围内,对应的规则号 输出格式为 函数名:[0,1,2](1 表示有 as-check 制导 rule1,2 表示有制导 rule2, 0 表示没有)每个函数一行 。 例如: 示例输入example.c 示例输出 二.算法流程: 1、当 Lexer 认出”#pragma”时调用 ...

shijiu2012的博客 1194

零件边界线提取处理原理详解

该程序提出了一种高效的点云边界提取方法,通过三阶段处理流程实现零件几何特征的精确提取。首先采用RANSAC算法进行坐标系标准化,包括主平面检测、点云分割和双重旋转对齐。接着使用凹包算法和RANSAC直线拟合提取底面边界。最后通过多方向密度切片分析(Z向100片、X向50片),自动选择高密度切片进行边界提取和直线拟合。算法具有鲁棒性强、处理效率高(支持OpenMP并行计算)和参数可配置等特点,能有效提取零件的几何边界特征,为后续质量检测提供基础。实验结果显示该方法能准确提取零件的多方向边界线。

weixin_45196569的博客 432

VSCODE 提示Please install clang or check configuration ‘clang.executable‘

VSCODE 提示Please install clang or check configuration ‘clang.executable’ 错误提示如下所示: 解决方法可以看我的另一篇博客,本来是要解决另一个问题的,链接地址

gxt_kt的博客 6099

LLaMA-Factory微调教程2:命令行sft微调

本文介绍了如何使用llama-factory项目在本地运行Qwen2-7B大语言模型进行对话。首先通过llamafactory-cli env查看环境配置,然后使用git lfs下载Qwen2-7B模型。创建配置文件qwen2_7b_instruct.yaml,修改模型路径和模板参数。最后通过llamafactory-cli chat命令启动对话服务,加载模型配置文件和tokenizer,完成环境初始化后即可进行交互式对话。

Cachel Wood的博客 8814

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

llvm-project 中编写 clang-tidy 自定义检查的完整开发指南:从 add_new_check.py 骨架到源码级原理

本文以 llvm-project 仓库(LLVM 官方 monorepo)中 [clang-tools-extra/docs/clang-tidy/Contributing.rst](https://link.gitcode.com/i/e42037a98b7b1081c7c9cf77e3873f14)(《Getting Involved》)为核心脉络,系统讲解如何为 :program:`clan

gitblog_00447的博客 416

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Please install [clang](http://clang.llvm.org/) or check configuration `clang.executable`

解决方法:   1.安装clang       第一步:首先打开VScode编辑器     第二步:点击左侧“应用商店”栏     第三步:在“应用商店搜索拓展”栏输入关键字“clang”     第四步:安装提示的“C/c++ clang command”插件             2.访问提示的网址:http://clang.llvm.org/下载 Clan...

dongbi0665的博客 3453

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Please install [clang](http://clang.llvm.org/) or check configuration `clang.executable` 解决方法

VScode中安装clang 插件

shouwangyunkai666的博客 1万+

check clang‘s search path

【代码】check clang‘s search path。

qq_38963393的博客 150

使用 Clang Tools —— 概述

概述1. Clang Tools 组织2. 核心 Clang Tools2.1 clang-check2.2 clang-format3. 扩展 Clang Tool3.1 clang-tidy4. 新工具的想法 本文为译文,点击此处查看原文。 Clang Tools是为 C++ 开发人员设计的独立命令行(可能还有GUI)工具,这些开发人员已经在使用 Clang 作为他们的编译器,并且很喜欢 Cl...

梦在哪里的博客 6488

【VS Code】“The ‘clang-format‘ command is not available. Please check your clang-format.executable“解决

在VS Code中对C语言进行代码格式化的时候发现’clang-format’插件一直在提示报错: The 'clang-format' command is not available. Please check your clang-format.executable user setting and ensure it is installed. 在网上找了很多方法,其中很多都在说配置文件.clang-format,但是我没整明白,最后在dynamsoft上得到了解决方案。 下载 Clang for

Reaper_MXBG的博客 8216

VScode在格式化代码时报错The ‘clang-format‘ command is not available. Please check your clang-format.execu

Visual Studio Code(VSCode)在尝试格式化代码时出现错误,提示。工具,或者 VSCode 无法找到它。这通常意味着您的开发环境中尚未安装。

wanghan125的博客 6634
上一篇: 神秘的LLVM,熟悉的GNU
下一篇: linux/scripts下有什么? — 内核的脚本工具
嵌入式孙老师
博客等级 码龄7年 5686粉丝 898原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值