Loading snippets/collect-coverage.sh 0 → 100644 +75 −0 Original line number Diff line number Diff line #!/usr/bin/env bash set -euo pipefail usage() { cat <<'EOF' Usage: coverage_cli.sh --obj-dir DIR --output-file FILE --output-dir DIR --title STRING Generates lcov coverage, removes "apps" and "lib_util" from coverage, normalizes paths, and produces an HTML report with a title. Required arguments: --obj-dir Directory containing object files (.gcno/.gcda) --output-file Path to lcov tracefile (.info) --output-dir Directory to write HTML report --title Title suffix for HTML report EOF } obj_dir="" output_file="" output_dir="" title="" # Parse arguments while [[ $# -gt 0 ]]; do case "$1" in --obj-dir) obj_dir="${2:-}" shift 2 ;; --output-file) output_file="${2:-}" shift 2 ;; --output-dir) output_dir="${2:-}" shift 2 ;; --title) title="${2:-}" shift 2 ;; -h | --help) usage exit 0 ;; *) echo "Unknown option: $1" >&2 usage exit 1 ;; esac done # Validate required args if [[ -z "$obj_dir" || -z "$output_file" || -z "$output_dir" || -z "$title" ]]; then echo "Error: missing required arguments." >&2 usage exit 1 fi # Capture coverage lcov -c -d "$obj_dir" -o "$output_file" # Remove apps and lib_util files from coverage lcov -r "$output_file" "*apps*" -o "$output_file" lcov -r "$output_file" "*lib_util*" -o "$output_file" commit_sha="$(git rev-parse HEAD)" # Replace absolute path with '.' to ease merging of .info files (assumes GNU sed) sed -i "s|$(pwd)|.|g" "$output_file" # Generate HTML report genhtml "$output_file" -o "$output_dir" -t "$title @ $commit_sha" Loading
snippets/collect-coverage.sh 0 → 100644 +75 −0 Original line number Diff line number Diff line #!/usr/bin/env bash set -euo pipefail usage() { cat <<'EOF' Usage: coverage_cli.sh --obj-dir DIR --output-file FILE --output-dir DIR --title STRING Generates lcov coverage, removes "apps" and "lib_util" from coverage, normalizes paths, and produces an HTML report with a title. Required arguments: --obj-dir Directory containing object files (.gcno/.gcda) --output-file Path to lcov tracefile (.info) --output-dir Directory to write HTML report --title Title suffix for HTML report EOF } obj_dir="" output_file="" output_dir="" title="" # Parse arguments while [[ $# -gt 0 ]]; do case "$1" in --obj-dir) obj_dir="${2:-}" shift 2 ;; --output-file) output_file="${2:-}" shift 2 ;; --output-dir) output_dir="${2:-}" shift 2 ;; --title) title="${2:-}" shift 2 ;; -h | --help) usage exit 0 ;; *) echo "Unknown option: $1" >&2 usage exit 1 ;; esac done # Validate required args if [[ -z "$obj_dir" || -z "$output_file" || -z "$output_dir" || -z "$title" ]]; then echo "Error: missing required arguments." >&2 usage exit 1 fi # Capture coverage lcov -c -d "$obj_dir" -o "$output_file" # Remove apps and lib_util files from coverage lcov -r "$output_file" "*apps*" -o "$output_file" lcov -r "$output_file" "*lib_util*" -o "$output_file" commit_sha="$(git rev-parse HEAD)" # Replace absolute path with '.' to ease merging of .info files (assumes GNU sed) sed -i "s|$(pwd)|.|g" "$output_file" # Generate HTML report genhtml "$output_file" -o "$output_dir" -t "$title @ $commit_sha"