This commit brings support for additional GCC static analyzer options with 'GCC_SCA_OPTS=...' Linked to discussion on 'ccache' side effect on analyzer file generation[1] [1] https://github.com/zephyrproject-rtos/zephyr/discussions/86196 Signed-off-by: Alex Fabre <alex.fabre@rtone.fr>
71 lines
2.3 KiB
ReStructuredText
71 lines
2.3 KiB
ReStructuredText
.. _gcc:
|
|
|
|
GCC static analysis support
|
|
###########################
|
|
|
|
Static analysis was introduced in `GCC <https://gcc.gnu.org/>`__ 10 and it is enabled
|
|
with the option ``-fanalyzer``. This option performs a much more expensive and thorough
|
|
analysis of the code than traditional warnings.
|
|
|
|
Run GCC static analysis
|
|
***********************
|
|
|
|
To run GCC static analysis, :ref:`west build <west-building>` should be
|
|
called with a ``-DZEPHYR_SCA_VARIANT=gcc`` parameter, e.g.
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/userspace/hello_world_user
|
|
:board: qemu_x86
|
|
:gen-args: -DZEPHYR_SCA_VARIANT=gcc
|
|
:goals: build
|
|
:compact:
|
|
|
|
Configuring GCC static analyzer
|
|
*******************************
|
|
|
|
GCC static analyzer can be controlled using specific options.
|
|
|
|
* `Options controlling the
|
|
analyzer <https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html>`__
|
|
* `Options controlling the diagnostic message
|
|
formatting <https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html>`__
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Parameter
|
|
- Description
|
|
* - ``GCC_SCA_OPTS``
|
|
- A semicolon separated list of GCC analyzer options.
|
|
|
|
These parameters can be passed on the command line, or be set as environment variables.
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/hello_world
|
|
:board: stm32h573i_dk
|
|
:gen-args: -DZEPHYR_SCA_VARIANT=gcc -DGCC_SCA_OPTS="-fdiagnostics-format=json;-fanalyzer-verbosity=3"
|
|
:goals: build
|
|
:compact:
|
|
|
|
.. note::
|
|
|
|
GCC static analyzer is under active development, and each new release comes with new options.
|
|
This `page <https://gcc.gnu.org/wiki/StaticAnalyzer>`__ gives an overview of options and fix
|
|
introduced with each new release of the analyzer.
|
|
|
|
|
|
Latest version of the analyzer
|
|
******************************
|
|
|
|
Since the Zephyr toolchain may not include the most recent version of the GCC static analyzer,
|
|
the GCC static analysis can be run with a more recent `GNU Arm embedded toolchain
|
|
<https://docs.zephyrproject.org/latest/develop/toolchains/gnu_arm_embedded.html>`__
|
|
to take advantage of the latest analyzer version.
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/hello_world
|
|
:board: stm32h573i_dk
|
|
:gen-args: -DZEPHYR_SCA_VARIANT=gcc -DZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb -DGNUARMEMB_TOOLCHAIN_PATH=...
|
|
:goals: build
|
|
:compact:
|