Skip to content

Commit 220f251

Browse files
golowanowkartben
authored andcommitted
twister: coverage: Group command line arguments
Group Twister code coverage command line arguments for better usability. Add more details in descriptions. Signed-off-by: Dmitrii Golovanov <[email protected]>
1 parent 1b23b91 commit 220f251

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

scripts/pylib/twister/twisterlib/environment.py

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ def add_parse_arguments(parser = None) -> argparse.ArgumentParser:
114114
title="Memory footprint",
115115
description="Collect and report ROM/RAM size footprint for the test instance images built.")
116116

117+
coverage_group = parser.add_argument_group(
118+
title="Code coverage",
119+
description="Build with code coverage support, collect code coverage statistics "
120+
"executing tests, compose code coverage report at the end.\n"
121+
"Effective for devices with 'HAS_COVERAGE_SUPPORT'.")
122+
117123
test_plan_report_xor.add_argument(
118124
"-E",
119125
"--save-tests",
@@ -342,10 +348,6 @@ def add_parse_arguments(parser = None) -> argparse.ArgumentParser:
342348
If not provided, seed in generated by system.
343349
Used only when --shuffle-tests is provided.""")
344350

345-
parser.add_argument("-C", "--coverage", action="store_true",
346-
help="Generate coverage reports. Implies "
347-
"--enable-coverage.")
348-
349351
parser.add_argument(
350352
"-c", "--clobber-output", action="store_true",
351353
help="Cleaning the output directory will simply delete it instead "
@@ -355,27 +357,38 @@ def add_parse_arguments(parser = None) -> argparse.ArgumentParser:
355357
"--cmake-only", action="store_true",
356358
help="Only run cmake, do not build or run.")
357359

358-
parser.add_argument("--coverage-basedir", default=ZEPHYR_BASE,
359-
help="Base source directory for coverage report.")
360+
coverage_group.add_argument("--enable-coverage", action="store_true",
361+
help="Enable code coverage collection using gcov.")
360362

361-
parser.add_argument("--coverage-platform", action="append", default=[],
362-
help="Platforms to run coverage reports on. "
363-
"This option may be used multiple times. "
364-
"Default to what was selected with --platform.")
363+
coverage_group.add_argument("-C", "--coverage", action="store_true",
364+
help="Generate coverage reports. Implies "
365+
"--enable-coverage to collect the coverage data first.")
365366

366-
parser.add_argument("--coverage-tool", choices=['lcov', 'gcovr'], default='gcovr',
367-
help="Tool to use to generate coverage report.")
367+
coverage_group.add_argument("--gcov-tool", type=Path, default=None,
368+
help="Path to the 'gcov' tool to use for code coverage reports. "
369+
"By default it will be chosen in the following order:"
370+
" using ZEPHYR_TOOLCHAIN_VARIANT ('llvm': from LLVM_TOOLCHAIN_PATH),"
371+
" gcov installed on the host - for 'native' or 'unit' platform types,"
372+
" using ZEPHYR_SDK_INSTALL_DIR.")
368373

369-
parser.add_argument(
370-
"--coverage-formats",
371-
action="store",
372-
default=None, # default behavior is set in run_coverage
373-
help="Output formats to use for generated coverage reports, as a comma-separated list. " +
374-
"Valid options for 'gcovr' tool are: " +
375-
','.join(supported_coverage_formats['gcovr']) + " (html - default)." +
376-
" Valid options for 'lcov' tool are: " +
377-
','.join(supported_coverage_formats['lcov']) + " (html,lcov - default)."
378-
)
374+
coverage_group.add_argument("--coverage-basedir", default=ZEPHYR_BASE,
375+
help="Base source directory for coverage report.")
376+
377+
coverage_group.add_argument("--coverage-platform", action="append", default=[],
378+
help="Platforms to run coverage reports on. "
379+
"This option may be used multiple times. "
380+
"Default to what was selected with --platform.")
381+
382+
coverage_group.add_argument("--coverage-tool", choices=['lcov', 'gcovr'], default='gcovr',
383+
help="Tool to use to generate coverage report (%(default)s - default).")
384+
385+
coverage_group.add_argument("--coverage-formats", action="store", default=None,
386+
help="Output formats to use for generated coverage reports " +
387+
"as a comma-separated list without spaces. " +
388+
"Valid options for 'gcovr' tool are: " +
389+
','.join(supported_coverage_formats['gcovr']) + " (html - default)." +
390+
" Valid options for 'lcov' tool are: " +
391+
','.join(supported_coverage_formats['lcov']) + " (html,lcov - default).")
379392

380393
parser.add_argument(
381394
"--test-config",
@@ -402,9 +415,6 @@ def add_parse_arguments(parser = None) -> argparse.ArgumentParser:
402415
help="Specify tags of tests that should not run. "
403416
"Default is to run all tests with all tags.")
404417

405-
parser.add_argument("--enable-coverage", action="store_true",
406-
help="Enable code coverage using gcov.")
407-
408418
parser.add_argument(
409419
"--enable-lsan", action="store_true",
410420
help="""Enable leak sanitizer to check for heap memory leaks.
@@ -437,10 +447,6 @@ def add_parse_arguments(parser = None) -> argparse.ArgumentParser:
437447
help="Do not filter based on toolchain, use the set "
438448
" toolchain unconditionally")
439449

440-
parser.add_argument("--gcov-tool", type=Path, default=None,
441-
help="Path to the gcov tool to use for code coverage "
442-
"reports")
443-
444450
footprint_group.add_argument(
445451
"--create-rom-ram-report",
446452
action="store_true",

0 commit comments

Comments
 (0)