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 poc 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 poc 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 Poc
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.