1da0c48c4Sopenharmony_ci#! /usr/bin/env bash 2da0c48c4Sopenharmony_ci 3da0c48c4Sopenharmony_ciif [ "x$1" = "x-v" ]; then 4da0c48c4Sopenharmony_ci verbose=yes 5da0c48c4Sopenharmony_cielse 6da0c48c4Sopenharmony_ci verbose=no 7da0c48c4Sopenharmony_cifi 8da0c48c4Sopenharmony_ci 9da0c48c4Sopenharmony_cicd .. 10da0c48c4Sopenharmony_ci 11da0c48c4Sopenharmony_cifor d in lib libasm libdw libdwfl libebl libelf backends src debuginfod; do 12da0c48c4Sopenharmony_ci tmp=$d-data 13da0c48c4Sopenharmony_ci cd $d 14da0c48c4Sopenharmony_ci unused=0 15da0c48c4Sopenharmony_ci unused_files= 16da0c48c4Sopenharmony_ci for f in *.gcno; do 17da0c48c4Sopenharmony_ci base="$(basename $f .gcno)" 18da0c48c4Sopenharmony_ci if [ -f "$base.c" ]; then fc="$base.c"; else fc="$base.cxx"; fi 19da0c48c4Sopenharmony_ci gcda="$base.gcda" 20da0c48c4Sopenharmony_ci if [ -f "$gcda" ]; then 21da0c48c4Sopenharmony_ci gcov -n -a "$fc" | 22da0c48c4Sopenharmony_ci gawk "/$d.$fc/ { getline; co=gensub(/.*:(.*)% .*/, \"\\\\1\", \"g\"); co=co+0.0; li=\$4+0; printf \"%-35s %6.2f %5d\n\", \"$d/$fc\", co, li } " >> $tmp 23da0c48c4Sopenharmony_ci else 24da0c48c4Sopenharmony_ci unused=$(($unused + 1)) 25da0c48c4Sopenharmony_ci unused_files="$unused_files $fc" 26da0c48c4Sopenharmony_ci fi 27da0c48c4Sopenharmony_ci done 28da0c48c4Sopenharmony_ci if [ -f $tmp ]; then 29da0c48c4Sopenharmony_ci gawk "{ copct=\$2; co=(\$3*copct)/100; toco+=(co+0); toli += (\$3+0); } END { printf \"%-12s %6.2f%% covered unused files: %3d\n\", \"$d\", (toco*100)/toli, \"$unused\" }" $tmp 30da0c48c4Sopenharmony_ci rm -f $tmp 31da0c48c4Sopenharmony_ci else 32da0c48c4Sopenharmony_ci printf "%-12s 0.00%% covered unused files: %3d\n" "$d" $unused 33da0c48c4Sopenharmony_ci fi 34da0c48c4Sopenharmony_ci if [ $verbose = yes ]; then 35da0c48c4Sopenharmony_ci for f in $unused_files; do 36da0c48c4Sopenharmony_ci printf '%-42s%s\n' '' $f 37da0c48c4Sopenharmony_ci done 38da0c48c4Sopenharmony_ci fi 39da0c48c4Sopenharmony_ci cd .. 40da0c48c4Sopenharmony_cidone 41