68 lines
2.1 KiB
ReStructuredText
68 lines
2.1 KiB
ReStructuredText
.. _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
|
|
|
|
codechecker
|
|
sparse
|
|
gcc
|
|
cpptest
|