From 3850a46d1d4138b80dbc20bbe4ac4342d6911ab0 Mon Sep 17 00:00:00 2001 From: skal Date: Wed, 4 Feb 2026 10:40:21 +0100 Subject: feat(tooling): Add directory filtering to coverage report script (Task #46) Updated gen_coverage_report.sh to accept an optional argument for targeting specific directories using lcov --extract. --- scripts/gen_coverage_report.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/gen_coverage_report.sh b/scripts/gen_coverage_report.sh index bae2141..b569251 100755 --- a/scripts/gen_coverage_report.sh +++ b/scripts/gen_coverage_report.sh @@ -7,12 +7,16 @@ set -e PROJECT_ROOT=$(cd "$(dirname "$0")/.." && pwd) BUILD_DIR="${PROJECT_ROOT}/build_coverage" REPORT_DIR="${PROJECT_ROOT}/build_coverage/coverage_report" +TARGET_FILTER="$1" # Common lcov options to handle AppleClang quirks LCOV_OPTS="--ignore-errors mismatch,inconsistent,gcov,format,unsupported,category" echo "=== Code Coverage Report Generator ===" echo "Project Root: ${PROJECT_ROOT}" +if [ -n "$TARGET_FILTER" ]; then + echo "Target Filter: ${TARGET_FILTER}" +fi # Check for lcov if ! command -v lcov &> /dev/null; then @@ -48,9 +52,16 @@ echo "--- Filtering Coverage Data ---" # Remove system headers and third-party libraries lcov --remove coverage.info '/usr/*' "${PROJECT_ROOT}/third_party/*" "${PROJECT_ROOT}/build_coverage/*" '*/test_*' --output-file coverage_filtered.info $LCOV_OPTS +# Apply target directory filter if provided +if [ -n "$TARGET_FILTER" ]; then + echo "--- Applying Target Filter: ${TARGET_FILTER} ---" + # We use '*' around the filter to match the absolute path + lcov --extract coverage_filtered.info "*${TARGET_FILTER}*" --output-file coverage_filtered.info $LCOV_OPTS +fi + echo "--- Generating HTML Report ---" genhtml coverage_filtered.info --output-directory "${REPORT_DIR}" $LCOV_OPTS echo "=== Coverage Report Generated ===" echo "Open the report with:" -echo "open ${REPORT_DIR}/index.html" +echo "open ${REPORT_DIR}/index.html" \ No newline at end of file -- cgit v1.2.3