最近几天在关注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-c