clang-tidy是一个基于clang的静态代码分析框架,支持
C++/C/Objective-C/Objective-C++。
原理
基于Clang的AST(抽象语法树)进行分析,并能检测出许多常见的编码错误和代码风格问题。包括语法错误、逻辑错误、性能问题和风格问题。
能力
- 绝大部分lint工具只能在出现问题的代码地方给出提示,之后需要人为修改,而clang-tidy则能够自动修复功能(当然这个如何修复需要该check作者提供)
- clang-tidy采用模块化设计,非常容易扩展。如果用户想往clang-tidy添加一个新的检测功能,只需要编写一个clang-tidy check实现
- 每一个check检测一种问题,例如检测某个违反Code style的模式,检测某些API不正确使用的方法等等
检测内容
- 代码风格问题:例如缩进、空格、命名规范等。
- 可维护性问题:例如不必要的拷贝、错误的类型转换等。
- 潜在的编程错误:例如空指针引用、数组越界等。
- 性能问题:例如慢速算法、重复计算等。
安装
brew install llvm bear
路径一般在:/opt/homebrew/opt/llvm/bin/clang-tidy
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"