1c0abf9e6Sopenharmony_ci#!/usr/bin/env bash 2c0abf9e6Sopenharmony_ci 3c0abf9e6Sopenharmony_ciset -e 4c0abf9e6Sopenharmony_ci 5c0abf9e6Sopenharmony_ciif [[ $# -lt 2 ]]; then 6c0abf9e6Sopenharmony_ci echo "Usage: ./generate-gcov-report.sh <rel-target-dir> <srcdir> [<srcdir> ... ]" 7c0abf9e6Sopenharmony_ci exit 1 8c0abf9e6Sopenharmony_cifi 9c0abf9e6Sopenharmony_ci 10c0abf9e6Sopenharmony_citarget_dir=$1 11c0abf9e6Sopenharmony_cishift 12c0abf9e6Sopenharmony_cisource_dirs=$* 13c0abf9e6Sopenharmony_ci 14c0abf9e6Sopenharmony_ciif [[ "${target_dir:0:1}" != '/' ]]; then 15c0abf9e6Sopenharmony_ci target_dir="$PWD/$target_dir" 16c0abf9e6Sopenharmony_cifi 17c0abf9e6Sopenharmony_cisummary_file="$target_dir/summary.txt" 18c0abf9e6Sopenharmony_ci 19c0abf9e6Sopenharmony_cimkdir -p "$target_dir" 20c0abf9e6Sopenharmony_cirm -f "$target_dir"/*.gcov 21c0abf9e6Sopenharmony_ci 22c0abf9e6Sopenharmony_cifor dir in $source_dirs; do 23c0abf9e6Sopenharmony_ci pushd "$dir" > /dev/null 24c0abf9e6Sopenharmony_ci for file in *.c; do 25c0abf9e6Sopenharmony_ci find ./ -name "*${file/\.c/.gcda}" -exec gcov {} \; > /dev/null 26c0abf9e6Sopenharmony_ci done 27c0abf9e6Sopenharmony_ci find ./ -name "*.gcov" \! -path "*/`basename "$target_dir"`/*" -exec mv {} "$target_dir" \; 28c0abf9e6Sopenharmony_ci popd > /dev/null 29c0abf9e6Sopenharmony_cidone 30c0abf9e6Sopenharmony_ci 31c0abf9e6Sopenharmony_ciecho "========== coverage report ========" > "$summary_file" 32c0abf9e6Sopenharmony_cifor file in "$target_dir"/*.gcov; do 33c0abf9e6Sopenharmony_ci total=`grep -v " -:" "$file" | wc -l` 34c0abf9e6Sopenharmony_ci missing=`grep "#####" "$file" | wc -l` 35c0abf9e6Sopenharmony_ci hit=$((total - missing)); 36c0abf9e6Sopenharmony_ci percent=$((($hit * 100)/$total)) 37c0abf9e6Sopenharmony_ci fname=`basename "$file"` 38c0abf9e6Sopenharmony_ci printf "%-32s total lines: %4s not tested: %4s (%3s%%)\n" "$fname" "$total" "$missing" "$percent">> "$summary_file" 39c0abf9e6Sopenharmony_cidone 40c0abf9e6Sopenharmony_ciecho "========== =============== ========" >> "$summary_file" 41