Files
yara/tests/gcov-summary
Simon Hardy-Francis 242f9b43db Code coverage build (#1374)
* Add gcov code coverage configure option
2020-10-08 11:52:55 +02:00

40 lines
1.0 KiB
Bash
Executable File

#!/bin/sh
# pseudo code:
# - find all .c files in libyara/
# - run gcov --preserve-paths <each .c file>
# - fold gcov output into single summary line output
# - remember files not executed, and percentages
# - at end: output grand total percentage
# - at end: output files not executed
cd libyara/
find . -type f | egrep "\.c$" | perl -lane '
if (-e $_) {
$cmd = qq[gcov --preserve-paths $_];
$out = `$cmd 2>&1`;
$out =~ s~(Creating|[^\n]+cannot open notes) [^\n]+\s+~~gs;
@out = split(m~\n~, $out);
foreach(reverse @out) {
if (m~assuming not executed~) {
push @assume, $_;
next;
}
if (m~Lines executed:([\d\.]+). of (\d+)~) {
$loc_tot += $2;
$loc_exe += ($2 * $1 / 100);
}
printf qq[%-32s%s], $_, m~^Lines~ ? q[] : qq[\n];
}
}
sub END {
if ($loc_tot) {
printf qq[Lines executed:%.2f%% of %u total lines in all executed code\n\n], $loc_exe / $loc_tot * 100, $loc_tot;
}
foreach(@assume) {
printf qq[%s\n], $_;
}
}'
exit 0