.. _codechecker:
CodeChecker support
###################
`CodeChecker `__ is a static analysis infrastructure.
It executes analysis tools available on the build system, such as
`Clang-Tidy `__,
`Clang Static Analyzer `__ and
`Cppcheck `__. Refer to the analyzer's websites for installation
instructions.
Installing CodeChecker
**********************
CodeChecker itself is a python package available on `pypi `__.
.. code-block:: shell
pip install codechecker
Running with CodeChecker
************************
To run CodeChecker, :ref:`west build ` should be
called with a ``-DZEPHYR_SCA_VARIANT=codechecker`` parameter, e.g.
.. code-block:: shell
west build -b mimxrt1064_evk samples/basic/blinky -- -DZEPHYR_SCA_VARIANT=codechecker
Configuring CodeChecker
***********************
To configure CodeChecker or analyzers used, arguments can be passed using the
``CODECHECKER_ANALYZE_OPTS`` parameter, e.g.
.. code-block:: shell
west build -b mimxrt1064_evk samples/basic/blinky -- -DZEPHYR_SCA_VARIANT=codechecker \
-DCODECHECKER_ANALYZE_OPTS="--config;$CODECHECKER_CONFIG_FILE;--timeout;60"
Storing CodeChecker results
***************************
If a CodeChecker server is active the results can be uploaded and stored for tracking purposes.
Storing is done using the optional ``CODECHECKER_STORE=y`` or ``CODECHECKER_STORE_OPTS="arg;list"``
parameters, e.g.
.. code-block:: shell
west build -b mimxrt1064_evk samples/basic/blinky -- -DZEPHYR_SCA_VARIANT=codechecker \
-DCODECHECKER_STORE_OPTS="--name;build;--url;localhost:8001/Default"
.. note::
If ``--name`` isn't passed to either ``CODECHECKER_ANALYZE_OPTS`` or ``CODECHECKER_STORE_OPTS``,
the default ``zephyr`` is used.
Exporting CodeChecker reports
*****************************
Optional reports can be generated using the CodeChecker results, when passing a
``-DCODECHECKER_EXPORT=`` parameter. Allowed types are: ``html,json,codeclimate,gerrit,baseline``.
Multiple types can be passed as comma-separated arguments.
Optional parser configuration arguments can be passed using the
``CODECHECKER_PARSE_OPTS`` parameter, e.g.
.. code-block:: shell
west build -b mimxrt1064_evk samples/basic/blinky -- -DZEPHYR_SCA_VARIANT=codechecker \
-DCODECHECKER_EXPORT=html,json -DCODECHECKER_PARSE_OPTS="--trim-path-prefix;$PWD"