.. _sca: Static Code Analysis (SCA) ########################## Support for static code analysis tools in Zephyr is possible through CMake. The build setting :makevar:`ZEPHYR_SCA_VARIANT` can be used to specify the SCA tool to use. :envvar:`ZEPHYR_SCA_VARIANT` is also supported as :ref:`environment variable `. Use ``-DZEPHYR_SCA_VARIANT=``, for example ``-DZEPHYR_SCA_VARIANT=sparse`` to enable the static analysis tool ``sparse``. .. _sca_infrastructure: SCA Tool infrastructure *********************** Support for an SCA tool is implemented in a file:`sca.cmake` file. The file:`sca.cmake` must be placed under file:`/cmake/sca//sca.cmake`. Zephyr itself is always added as an :makevar:`SCA_ROOT` but the build system offers the possibility to add additional folders to the :makevar:`SCA_ROOT` setting. You can provide support for out of tree SCA tools by creating the following structure: .. code-block:: none / # Custom SCA root └── cmake/ └── sca/ └── / # Name of SCA tool, this is the value given to ZEPHYR_SCA_VARIANT └── sca.cmake # CMake code that configures the tool to be used with Zephyr To add ``foo`` under ``/path/to/my_tools/cmake/sca`` create the following structure: .. code-block:: none /path/to/my_tools └── cmake/ └── sca/ └── foo/ └── sca.cmake To use ``foo`` as SCA tool you must then specify ``-DZEPHYR_SCA_VARIANT=foo``. Remember to add ``/path/to/my_tools`` to :makevar:`SCA_ROOT`. :makevar:`SCA_TOOL` can be set as a regular CMake setting using ``-DSCA_ROOT=``, or added by a Zephyr module in its :file:`module.yml` file, see :ref:`Zephyr Modules - Build settings ` .. _sca_native_tools: Native SCA Tool support *********************** The following is a list of SCA tools natively supported by Zephyr build system. .. toctree:: :maxdepth: 1 codechecker sparse gcc cpptest