Clang-tidy 插件开发

一、 下载llvm-project源码

代码块

git clone https://github.com/llvm/llvm-project.git

二、编译llvm-project

如果我们需要添加自己的check,显然就需要手动修改llvm中clang-tidy部分的代码,然后重新编译该工具。下面介绍利用llvm源码编译生成clang以及clang-tidy的整体流程

我们可以首先下载llvm-project的最新源码:(from https://github.com/llvm/llvm-project)例如,可执行git clone https://github.com/llvm/llvm-project.git。由于网络原因,可能会下载超时失败,多试几次就好了

将分支切换到tag-16.0.6。本次开发是基于16.0.6版本

然后进入llvm-project目录,新建build目录并进入mkdir build && cd build

接下来执行:cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" ../llvm 通过cmake来生成编译所需的Makefile,这部分选项的含义可以查询llvm-project仓库中readme文件得知

然后,执行make -j N(分配的核心数量)来进行编译。然后就是漫长的编译时间,有条件的小伙伴尽量分配更多的内存和核心来提高编译速度以及避免因内存不足而编译失败

编译结束后,在build/bin/ 中会生成clang-tidy可执行程序,可以用用看

三、添加自定义规则

/llvm-project/clang-tools-extra/clang-tidy/ 目录下,执行​add_new_check.py所属类别 check名字,例如 ​add_new_check.py objc custom-check​​

例如,我希望在​objc分类中添加一个能够检测所有超过二级的指针声明,名为custom-check,那么我就在此目录下执行 ./add_new_check.py objc custom-check,就可以看到在objc目录下,自动生成了CustomCheck.h/cpp两个文件并填充了check的默认模板,我们只需要修改这两个文件,然后重复上文所述的编译过程,就可以用到自己的check啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fantongl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值