|  | #! /usr/bin/env bash | 
|  | # Copyright 2023 Nordic Semiconductor ASA | 
|  | # SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | set -eu | 
|  |  | 
|  | function display_help(){ | 
|  | echo "\ | 
|  | _generate_coverage_report.sh [-help] | 
|  | Generate an html coverage report for BabbleSim tests | 
|  |  | 
|  | You can call it from the Zephyr top level as: | 
|  | tests/bsim/_generate_coverage_report.sh | 
|  |  | 
|  | Coverage files will be searched for in the folder pointed by | 
|  | the variable WORK_DIR which by default is | 
|  | ${ZEPHYR_BASE}/bsim_out | 
|  |  | 
|  | By default the output will be placed in \${WORK_DIR}/lcov_html/. | 
|  | You can override this by setting the variable OUTPUT_DIR | 
|  |  | 
|  | By default it takes all coverage information generated by all run tests | 
|  | but you can limit the search by setting WORK_DIR to some subfolder | 
|  |  | 
|  | You can also merge in the twister coverage report by setting | 
|  | the variable TWISTER_COVERAGE_FILE, for example as: | 
|  | TWISTER_COVERAGE_FILE=\${ZEPHYR_BASE}/twister-out/coverage.info | 
|  | after having run twister, for example as | 
|  | twister -p nrf52_bsim -T tests/bluetooth/ --coverage | 
|  |  | 
|  | Note: Generating a coverage report for many tests is a lengthy process | 
|  | " | 
|  | } | 
|  |  | 
|  | # Parse command line | 
|  | if [ $# -ge 1 ]; then | 
|  | if grep -Eiq "(\?|-\?|-h|help|-help|--help)" <<< $1 ; then | 
|  | display_help | 
|  | exit 0 | 
|  | fi | 
|  | fi | 
|  |  | 
|  | WORK_DIR="${WORK_DIR:-${ZEPHYR_BASE}/bsim_out}" | 
|  | OUTPUT_DIR="${OUTPUT_DIR:-${WORK_DIR}}" | 
|  | TWISTER_COVERAGE_FILE="${TWISTER_COVERAGE_FILE:-""}" | 
|  |  | 
|  | lcov --capture --directory ${WORK_DIR} --output-file ${OUTPUT_DIR}/coverage.pre.info \ | 
|  | -q --rc lcov_branch_coverage=1 | 
|  | lcov --remove ${OUTPUT_DIR}/coverage.pre.info *generated* \ | 
|  | --output-file ${OUTPUT_DIR}/coverage.info -q --rc lcov_branch_coverage=1 | 
|  | genhtml ${OUTPUT_DIR}/coverage.info ${TWISTER_COVERAGE_FILE} --output-directory \ | 
|  | ${OUTPUT_DIR}/lcov_html -q --ignore-errors source --branch-coverage --highlight --legend | 
|  |  | 
|  | echo -e "\033[0;32mGenerated: ${OUTPUT_DIR}/lcov_html/index.html\033[0m" |