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.