Static Code Analysis (SCA)
Support for static code analysis tools in Zephyr is possible through CMake.
The build setting ZEPHYR_SCA_VARIANT can be used to specify the SCA
tool to use. ZEPHYR_SCA_VARIANT
is also supported as
environment variable.
Use -DZEPHYR_SCA_VARIANT=<tool>
, for example -DZEPHYR_SCA_VARIANT=sparse
to enable the static analysis tool sparse
.
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 SCA_ROOT but the build system offers the possibility to add additional folders to the SCA_ROOT setting.
You can provide support for out of tree SCA tools by creating the following structure:
<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:
/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 SCA_ROOT.
SCA_TOOL can be set as a regular CMake setting using
-DSCA_ROOT=<sca_root>
, or added by a Zephyr module in its module.yml
file, see Zephyr Modules - Build settings
Native SCA Tool support
The following is a list of SCA tools natively supported by Zephyr build system.