.. _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 confgures 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

   sparse
