Commit 0708e647 authored by Alex Bennée's avatar Alex Bennée
Browse files

travis: add gcovr summary for GCOV build



This gives a more useful summary, sorted by descending % coverage,
after the tests have run. The final numbers will give an idea if our
coverage is getting better or worse.

To keep the width sane we need to post process the file that the old
gcovr tool generates. This is done with a mix of sed, awk and column
in the scripts/coverage-summary.sh script.

As quite a lot of lines don't get covered at all we filter out all the
0% lines. If the file doesn't appear it is not being exercised.

Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
parent 95f7aabf
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ addons:
      - libvte-2.90-dev
      - sparse
      - uuid-dev
      - gcovr

# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
# to prevent IRC notifications from forks. This was created using:
@@ -86,6 +87,8 @@ matrix:
      compiler: clang
    # gprof/gcov are GCC features
    - env: CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
      after_success:
        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
      compiler: gcc
    # We manually include builds which we disable "make check" for
    - env: CONFIG="--enable-debug --enable-tcg-interpreter"
+1 −0
Original line number Diff line number Diff line
@@ -2166,6 +2166,7 @@ R: Philippe Mathieu-Daudé <f4bug@amsat.org>
L: qemu-devel@nongnu.org
S: Maintained
F: .travis.yml
F: scripts/travis/
F: .shippable.yml
F: tests/docker/
F: tests/vm/
+27 −0
Original line number Diff line number Diff line
#!/bin/sh
#
# Author: Alex Bennée <alex.bennee@linaro.org>
#
# Summerise the state of code coverage with gcovr and tweak the output
# to be more sane on Travis hosts. As we expect to be executed on a
# throw away CI instance we do spam temp files all over the shop. You
# most likely don't want to execute this script but just call gcovr
# directly. See also "make coverage-report"
#
# This code is licensed under the GPL version 2 or later.  See
# the COPYING file in the top-level directory.

# first generate the coverage report
gcovr -p -o raw-report.txt

# strip the full-path and line markers
sed s@$PWD\/@@ raw-report.txt | sed s/[0-9]\*[,-]//g > simplified.txt

# reflow lines that got split
awk '/.[ch]$/ { printf("%s", $0); next } 1' simplified.txt > rejoined.txt

# columnify
column -t rejoined.txt > final.txt

# and dump, stripping out 0% coverage
grep -v "0%" final.txt