doc/develop/sca/index.rst
.. _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 <env_vars>.
Use -DZEPHYR_SCA_VARIANT=<tool>, 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:{SCA_ROOT}/cmake/sca/{tool}/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
<sca_root>/ # Custom SCA root └── cmake/ └── sca/ └── <tool>/ # 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=<sca_root>, or added by a Zephyr module in its :file:module.yml
file, see :ref:Zephyr Modules - Build settings <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 :glob: