Clang-tidy
Clang-tidy is a tool that performs static code analysis on C++ code, identifying code smells, potential bugs, and other common issues.
$ sudo apt install clang-tidy
Basic usage
Common commands
We can use clang-tidy without a compilation database, but in such cases, it may result in errors.
$ clang-tidy source.cpp # output report
$ clang-tidy *.cpp > report.txt # save in a file
$ clang-tidy -fix *.cpp # run automated fixes
.clang-tidy
Clang-tidy can be configured in a .clang-tidy
file.
Checks: >
-*, # remove all
google-*, # add all from google
-google-runtile-int # but remove this one
# WarningsAsErrors: "*"
# Tune some checks
CheckOptions:
- { key: name, value: xxx }
- key: name
value: xxx
compile_commands.json
For more complex projects, we generate compile_commands.json
which defines the command to compile each file. This file can be generated automatically using CMake:
$ cat compile_commands.json
[{
"directory": "src",
"command": "g++ src/source.cpp",
"file": "source.cpp"
}]
$ clang-tidy -p . [...]
β οΈ If the folder with the compile_commands.json
file is different from the current folder (.
) and there is no compile_commands.json
in the current folder, it will be copied in the current folder.