#!/bin/bash
# Generate HTML coverage report using lcov
set -e
OUTPUT_DIR="coverage_report"
# Check if lcov is installed
if ! command -v lcov &> /dev/null; then
echo "Error: lcov is not installed"
echo "Please install it with: sudo apt-get install lcov"
exit 1
fi
# Capture coverage data with branch coverage enabled
echo "Capturing coverage data..."
lcov --capture --directory . --output-file coverage.info --rc lcov_branch_coverage=1
# Filter out system headers if any exist
echo "Filtering coverage data..."
lcov --remove coverage.info '/usr/*' --output-file coverage.info --ignore-errors unused --rc lcov_branch_coverage=1 || cp coverage.info coverage.info.bak
# Generate HTML report
echo "Generating HTML report..."
genhtml coverage.info --output-directory "$OUTPUT_DIR" --branch-coverage --rc lcov_branch_coverage=1
# Clean up
rm -f coverage.info
echo "HTML report generated in $OUTPUT_DIR/"
echo "Open $OUTPUT_DIR/index.html in your browser"