Add the cmake files for running static code analysis with the Polyspace tools in the west build. The analysis leverages the compilation database. Options for the analysis are documented in doc/develop/sca/polyspace.rst. Analysis results are printed as command line output and provided as CSV. Manually tested on v4.0.0 with various sample applications. Signed-off-by: Martin Becker <mbecker@mathworks.com>
69 lines
2.1 KiB
ReStructuredText
69 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
|
|
eclair
|
|
polyspace
|