Clang-tidy 插件开发

Clang-tidy 插件开发

  • 一、 下载llvm-project源码
  • 二、编译llvm-project
  • 三、添加自定义规则

一、 下载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啦

你可能感兴趣的:(ios)