深入研究Clang(五) Clang Lexer代码阅读笔记之Lexer

本文是关于Clang词法分析器(Lexer)的深入研究,主要探讨了Lexer的源码位置,包括clang/lib/Lex和clang/include/clang/Lex目录下的头文件。作者指出Lexer是PreprocessorLexer的子类,并提到了clangBasic库在分析Lexer代码中的作用。文章重点分析了Lexer.h和PreprocessorLexer.h中的相关定义,并预告了后续将继续对Preprocessor类的复杂实现进行探讨。
摘要由CSDN通过智能技术生成

作者:史宁宁(snsn1984)


Clang的Lexer(词法分析器)的源码的主要位置如下:

clang/lib/Lex    这里是主要的Lexer的代码;

clang/include/clang/Lex   这里是Lexer的头文件代码的位置;

同时,Lexer还使用了clangBasic库,所以要分析Lexer的代码,clangBasic(clang/lib/Basic)的一些代码也会用到。


首先从Lexer入手。


clang/include/clang/Lex/Lexer.h

clang::Lexer:

00057   //===--------------------------------------------------------------------===//
00058   // Context-specific lexing flags set by the preprocessor.
00059   //
00060
00061   /// ExtendedTokenMode - The lexer can optionally keep comments and whitespace
00062   /// and return them 
Clang-Tidy 是一个基于 Clang 的静态代码分析工具,它能够帮助开发者检查和改进代码质量。使用 Clang-Tidy 进行测试代码的检查,通常涉及到配置规则来运行特定的检查,并可能根据规则的结果自动生成修复建议或直接执行修复。 以下是使用 Clang-Tidy 配置和编写测试代码的基本步骤: 1. **安装和配置**: 安装 Clang 编译器Clang-Tidy。确保在项目中添加了 Clang-Tidy 的支持,可以通过 `.clang-tidy` 文件来配置规则集。 ```bash # 如果尚未安装,通过包管理器安装(如 apt-get 或 brew) sudo apt-get install clang-format clang-tidy ``` 2. **创建`.clang-tidy`文件**: 在项目的根目录下创建一个 `.clang-tidy` 文件,这里配置你喜欢的检查规则。例如,你可以禁用某个规则或启用特定的规则组。 ```ini [Experimental] # Disables a specific check (example) -disable=cppcoreguidelines-pro-type-const-cast [cppcoreguidelines] # Enables checks under the cppcoreguidelines group CheckLevel = Enable ``` 3. **运行检查**: 使用 `clang-DCMAKE_CXX_FLAGS=-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCLANG_TIDY_EXTRA_ARGS='-- -checks=*cppcoreguidelines*'` 参数。 ```bash ninja clang-tidy ``` 4. **处理警告和错误**: 根据 Clang-Tidy 输出的结果,修改代码以消除警告或者按照规则进行调整。对于自动修复功能,你可以在规则中设置 `-apply-replacements=fix`。 5. **持续集成(CI)**: 将 Clang-Tidy 集成到 CI/CD 流程中,确保每次提交前都能进行代码质量检查。 相关问题-- 1. Clang-Tidy有哪些内置的代码质量检查规则? 2. 如何在GitHub Actions中集成Clang-Tidy? 3. 如何处理Clang-Tidy生成的代码修复建议?
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值