cland-tidy简介

最近几天在关注clang-tidy,有一些体会,简单做一些笔记。分享给感兴趣的朋友们,也是给将来的自己看。

1、clang-tidy是基于AST的静态检查工具。因为它基于AST,所以要比基于正则表达式的静态检查工具更为精准,但是带来的缺点就是要比基于正则表达式的静态检查工具慢一点。也是因为它基于AST,所以clang-tidy运行的时候需要知道编译命令。

2、clang-tidy不仅仅可以做静态检查,还可以做一些修复工作。

3、clang-tidy是基于LibTooling的工具。而LibTooling是一个库,这个库主要是为了基于Clang编写单独的工具。clang-tidy属于clang的extra tools,这个和clang的tools在不同层次的源码目录,是clang/tools和clang/tools/extra的差别。

4、clang-tidy通过添加check来添加检查规则,目前已经有一系列的check:Extra Clang Tools 10 documentation 通过clang-tidy -list-checks会列出默认开启的的check,clang-tidy-tidy -list-checks -checks=* 会列出所有的check。

5、clang-tidy每次针对一个TU,即单个cpp文件,无法跨TU处理。但是,可以使用clang-tidy/tool/源码目录之下的run-clang-tidy.py去批量检查文件。

6、clang-tidy还可以调用clang static analyzer的check.(clang-tidy has its own checks and can also run Clang static analyzer checks.)

7、clang-tidy因为需要知道编译命令,所以必须通过compile_commands.json获取编译命令,或者通过在clang-tidy后通过--添加编译选项。其中,compile_commands.json的生成可以参考文档LibTooling,可以理解为基于LibTooling的都需要去生成该文件。compile_commands.json主要是包含各个目录的编译命令,在cmake构建系统生成它可以通过-DCMAKE_EXPORT_COMPILE_COMMANDS=ON;在makefile构建系统生成它可以通过compiledb。其他构建系统我尝试了gn和ninja,gn可以通过gn gen . --export-compile-commands这种形式生成json文件,ninja可以通过ninja -t compdb cxx cc > compile_commands.json这种形式生成json文件。目前已经有人总结了更多的使用方式,可以参考MaskRay/cclsCompilation database这两篇文章。(感谢 小钻风 )

8、系统上clang-tidy可运行之后,run-clang-tidy.py可以直接copy到待测试目录使用。

9、clang-tidy基于C++开发。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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生成的代码修复建议?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值