The latest development version of this page may be more current than this released 3.7.0 version.

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.