qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: cota@braap.org, famz@redhat.com, berrange@redhat.com,
	f4bug@amsat.org, richard.henderson@linaro.org, balrogg@gmail.com,
	aurelien@aurel32.net, agraf@suse.de
Cc: pbonzini@redhat.com, qemu-devel@nongnu.org,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: [Qemu-devel] [PATCH v2 06/21] travis: add gcovr summary for GCOV build
Date: Fri, 29 Jun 2018 21:52:17 +0100	[thread overview]
Message-ID: <20180629205232.27190-7-alex.bennee@linaro.org> (raw)
In-Reply-To: <20180629205232.27190-1-alex.bennee@linaro.org>

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: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
v2
  - pushed finagling into scripts/coverage-summary.sh
    - dropped r-b as a big change
---
 .travis.yml                 |  3 +++
 scripts/coverage-summary.sh | 27 +++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)
 create mode 100755 scripts/coverage-summary.sh

diff --git a/.travis.yml b/.travis.yml
index 32188d51f1..aa850c913c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -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/coverage-summary.sh
       compiler: gcc
     # We manually include builds which we disable "make check" for
     - env: CONFIG="--enable-debug --enable-tcg-interpreter"
diff --git a/scripts/coverage-summary.sh b/scripts/coverage-summary.sh
new file mode 100755
index 0000000000..d7086cf9ca
--- /dev/null
+++ b/scripts/coverage-summary.sh
@@ -0,0 +1,27 @@
+#!/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
-- 
2.17.1

  parent reply	other threads:[~2018-06-29 20:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-29 20:52 [Qemu-devel] [PATCH v2 00/21] Travis, Code Coverage and Cross Build updates Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 01/21] travis: do not waste time cloning unused submodules Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 02/21] travis: test out-of-tree builds Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 03/21] build-system: remove per-test GCOV reporting Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 04/21] .gitignore: add .gcov files Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 05/21] docker: add gcovr to travis image Alex Bennée
2018-06-29 20:52 ` Alex Bennée [this message]
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 07/21] build-system: add clean-coverage target Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 08/21] build-system: add coverage-report target Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 09/21] linux-user: introduce preexit_cleanup Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 10/21] linux-user: add gcov support to preexit_cleanup Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 11/21] docker: filter out linux-user builds for mingw Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 12/21] docker: ubuntu: Update the package list before installing new ones Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 13/21] docker: ubuntu: Use SDL2 Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 14/21] docker: Clean the MXE base image Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 15/21] docker: Do not run tests in 'intermediate' images Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 16/21] docker: add env parser to docker.py build step Alex Bennée
2018-07-02 13:28   ` Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 17/21] docker: drop QEMU build-dep from bootstrap Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 18/21] docker: add special handling for FROM:debian-%-user targets Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 19/21] docker: add special rule for deboostrapped images Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 20/21] docker: add linux-user powered cross builder for QEMU Alex Bennée
2018-06-29 20:52 ` [Qemu-devel] [PATCH v2 21/21] .shippable.yml: add linux-user cross-build for ppc-softmmu Alex Bennée
2018-07-01 21:26   ` Alex Bennée
2018-07-02  1:53 ` [Qemu-devel] [PATCH v2 00/21] Travis, Code Coverage and Cross Build updates no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180629205232.27190-7-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=agraf@suse.de \
    --cc=aurelien@aurel32.net \
    --cc=balrogg@gmail.com \
    --cc=berrange@redhat.com \
    --cc=cota@braap.org \
    --cc=f4bug@amsat.org \
    --cc=famz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).