Lines Matching +full:get +full:- +full:coverage +full:- +full:files

3 Generating coverage reports
6 With Zephyr, you can generate code coverage reports to analyze which parts of
15 Test coverage reports in embedded devices or QEMU
20 `GCC GCOV <gcov_>`_ is a test coverage program
21 used together with the GCC compiler to analyze and create test coverage reports
25 In Zephyr, gcov collects coverage profiling data in RAM (and not to a file
32 There are 2 parts to enable this feature. The first is to enable the coverage for the
34 code coverage with gcov is a function of RAM available. Therefore ensure that the
35 device has enough RAM when enabling the coverage for it. For example a small device
37 cases which consume more RAM will crash when coverage is enabled.
39 To enable the device for coverage, select :kconfig:option:`CONFIG_HAS_COVERAGE_SUPPORT`
42 To report the coverage for the particular test application set :kconfig:option:`CONFIG_COVERAGE`.
44 Steps to generate code coverage reports
47 These steps will produce an HTML coverage report for a single application.
51 .. zephyr-app-commands::
53 :gen-args: -DCONFIG_COVERAGE=y -DCONFIG_COVERAGE_DUMP=y
58 the emulator with :kbd:`Ctrl-A X` for this to complete after the coverage dump
61 .. code-block:: console
63 $ ninja -Cbuild run | tee log.log
67 .. code-block:: console
69 $ ninja -Cbuild run | tee log.log
71 #. Generate the gcov ``.gcda`` and ``.gcno`` files from the log file that was
74 .. code-block:: console
76 $ python3 scripts/gen_gcov_files.py -i log.log
82 .. code-block:: console
84 $ find $ZEPHYR_SDK_INSTALL_DIR -iregex ".*gcov"
88 .. code-block:: console
90 $ mkdir -p gcov_report
92 #. Run ``gcovr`` to get the reports:
94 .. code-block:: console
96 …$ gcovr -r $ZEPHYR_BASE . --html -o gcov_report/coverage.html --html-details --gcov-executable <gc…
100 Coverage reports using the POSIX architecture
112 When you run your application, ``gcov`` coverage data will be dumped into the
113 respective ``gcda`` and ``gcno`` files.
116 .. zephyr-app-commands::
117 :zephyr-app: samples/hello_world
118 :gen-args: -DCONFIG_COVERAGE=y
119 :host-os: unix
124 .. code-block:: console
128 $ lcov --capture --directory ./ --output-file lcov.info -q --rc lcov_branch_coverage=1
129 …$ genhtml lcov.info --output-directory lcov_html -q --ignore-errors source --branch-coverage --hig…
138 Coverage reports using Twister
142 generate a coverage report from the tests which were executed.
143 You just need to invoke it with the ``--coverage`` command line option.
147 .. code-block:: console
149 $ twister --coverage -p qemu_x86 -T tests/kernel
153 .. code-block:: console
155 $ twister --coverage -p native_sim -T tests/bluetooth
157 which will produce ``twister-out/coverage/index.html`` report as well as
158 the coverage data collected by ``gcovr`` tool in ``twister-out/coverage.json``.
160 Other reports might be chosen with ``--coverage-tool`` and ``--coverage-formats``
163 To generate code coverage report including Zephyr sources as well as your application
164 code outside of Zephyr repository (see :ref:`Application Types <zephyr-app-types>`)
165 call Twister from your project directory with ``--coverage-basedir $ZEPHYR_BASE``
168 .. code-block:: console
170 …$ $ZEPHYR_BASE/scripts/twister --coverage -p native_sim --coverage_basedir $ZEPHYR_BASE -T your_pr…
174 By default, Twister calls ``gcovr`` tool which filters source files assuming real paths
177 either your :ref:`ZEPHYR_BASE <important-build-vars>` should contain a real path,
179 option ``--coverage-tool lcov``.
184 .. code-block:: console
186 $ twister --coverage -p unit_testing -T tests/unit
188 which produces a report in the same location as non-unit testing.
191 https://github.com/gcovr/gcovr/blob/main/doc/source/guide/filters.rst#filters-for-symlinks
201 default for the Twister ``--gcov-tool`` argument default:
203 +-----------+-----------------------+
204 | Toolchain | ``--gcov-tool`` value |
205 +-----------+-----------------------+
207 +-----------+-----------------------+
208 | llvm | ``llvm-cov gcov`` |
209 +-----------+-----------------------+
211 +-----------+-----------------------+