clang-tidy
clang-tidy
is a clang
-based C++
“linter” tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis. clang-tidy
is modular and provides a convenient interface for writing new checks.
For further explanation on clang-tidy
please refer to it’s documentation.
First of all, if you wish to use clang-tidy
than you must install it first.
For instance, in conda-forge
clang-tidy
is packed within a recipe (package in conda
’s jargon) called clang-tools
.
Here is how to install clang-tidy
using conda-forge
.
conda install -c conda-forge clang-tools
Warning
clang-tidy
isn’t compatible with GNU
tools and libraries, i.e. it enforces the compiler to be clang
-based one.
So in order for clang-tidy
to work properly simply installing it wouldn’t be sufficient.
The proper installation of clang-tidy
using conda-forge
would be as follows:
conda install -c conda-forge clang-tools clang clangxx
Note
if you are using the conda
environment modern-cmake
managed from environment.yml
then you are good to go since it’s already being dealt with in that environment.
In addition clang-tidy
is already a part of the modern-cmake
conda
environment (listed in environment.yml
).
In this project we invoke clang-tidy
from within cmake
itself, it can be done by setting the ENABLE_CLANG_TIDY
option to ON
(default is OFF
).
For example you can use it like this:
cmake -S . -B bld -Wdev -Werror=dev -DCMAKE_FIND_ROOT_PATH=$CONDA_PREFIX -DENABLE_CLANG_TIDY=ON
cmake --build bld --target Fact
This will create & use a build directory called bld
and cmake
will invoke clang-tidy
on each C++
source file.
clang-tidy
is highly configurable tool and it’s current configuration can be found in a file called .clang-tidy
.