#!/bin/bash # Script to remove generated files from coverage/lcov.info # Generated files include: .g.dart, .freezed.dart, .mocks.dart # # Usage: # ./scripts/remove_generated_from_coverage.sh # # This script: # 1. Creates a backup of the original coverage file # 2. Removes all entries for generated files (.g.dart, .freezed.dart, .mocks.dart) # 3. Saves the cleaned file back to coverage/lcov.info set -e # Exit on error COVERAGE_FILE="coverage/lcov.info" BACKUP_FILE="coverage/lcov.info.backup" # Get the script directory and project root SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" cd "$PROJECT_ROOT" # Check if coverage file exists if [ ! -f "$COVERAGE_FILE" ]; then echo "Error: $COVERAGE_FILE not found" echo "Please run 'flutter test --coverage' first to generate the coverage file" exit 1 fi # Create backup cp "$COVERAGE_FILE" "$BACKUP_FILE" echo "Backup created: $BACKUP_FILE" # Remove entries for generated files # This uses awk to process the lcov.info file # It skips entries that start with SF: and contain .g.dart, .freezed.dart, or .mocks.dart awk ' BEGIN { skip_entry = 0 } /^SF:/ { # Check if this is a generated file # Matches: .g.dart, .freezed.dart, .mocks.dart if ($0 ~ /\.(g|freezed|mocks)\.dart$/) { skip_entry = 1 } else { skip_entry = 0 } } { if (!skip_entry) { print } } /^end_of_record$/ { skip_entry = 0 } ' "$BACKUP_FILE" > "$COVERAGE_FILE.tmp" # Replace original file with cleaned version mv "$COVERAGE_FILE.tmp" "$COVERAGE_FILE" # Count removed entries REMOVED=$(grep -c "^SF:.*\.\(g\|freezed\|mocks\)\.dart$" "$BACKUP_FILE" 2>/dev/null || echo "0") echo "Removed $REMOVED generated file entries from coverage/lcov.info" echo "Cleaned file saved to: $COVERAGE_FILE" echo "" echo "To restore the original file, run:" echo " cp $BACKUP_FILE $COVERAGE_FILE"