summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@osg.samsung.com>2016-03-04 12:25:19 +0100
committerStefan Schmidt <stefan@osg.samsung.com>2016-03-04 12:44:29 +0100
commit0dca76798ef83672f3c1f90ed024de55086d346e (patch)
treea25a8baa2167b377b63b05cc4b57b0a80731cc8f
parente26fcbb1dc588c5130e477bf832c59386b1c1951 (diff)
build: finally enable branch coverage in our lcov-check target
This has been a long standing issue and I finally figured out the details to get this working. Since we started with coverage there always have been some problems to get branch coverage work (problems with older gcc versions, lcov not taking them into account, etc) The last detail that made me go nuts was that in my lcov version (1.10) there is a bug which leads to geninfo not applying the config file and thus not enabling the branch coverage like I defined in the config. I added the --rc option to work around this case. In my local run I get this now from lcov-check: Overall coverage rate: lines......: 35.5% (65814 of 185169 lines) functions..: 44.6% (7661 of 17195 functions) branches...: 22.7% (31492 of 138942 branches) So we have 22.7% branch coverage right now. The vivid followers of my QA mails will also see the difference in numbers for line and function coverage if one comapres my local results and the one on Jenkins. This is another long standing issue and I need to figure out these details next. :)
-rw-r--r--.lcov-config4
-rw-r--r--Makefile.am10
2 files changed, 8 insertions, 6 deletions
diff --git a/.lcov-config b/.lcov-config
index bb631ac58f..ef201f5c5f 100644
--- a/.lcov-config
+++ b/.lcov-config
@@ -1 +1,3 @@
-geninfo_auto_base = 1
+geninfo_auto_base=1
+lcov_branch_coverage=1
+genhtml_branch_coverage=1
diff --git a/Makefile.am b/Makefile.am
index 08d87016d0..9aecc454d4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -430,11 +430,11 @@ lcov-reset:
lcov-report:
$(MKDIR_P) $(top_builddir)/coverage
- lcov --capture --compat-libtool --no-external --config-file .lcov-config --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir)
- lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info
- lcov --remove $(top_builddir)/coverage/coverage.cleaned.info '*/tests/*' --output-file $(top_builddir)/coverage/coverage.cleaned2.info
- lcov --remove $(top_builddir)/coverage/coverage.cleaned2.info '*NONE*' --output-file $(top_builddir)/coverage/coverage.cleaned3.info
- genhtml --legend -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned3.info
+ lcov --capture --compat-libtool --no-external --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir) --config-file .lcov-config --rc lcov_branch_coverage=1
+ lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info --config-file .lcov-config --rc lcov_branch_coverage=1
+ lcov --remove $(top_builddir)/coverage/coverage.cleaned.info '*/tests/*' --output-file $(top_builddir)/coverage/coverage.cleaned2.info --config-file .lcov-config --rc lcov_branch_coverage=1
+ lcov --remove $(top_builddir)/coverage/coverage.cleaned2.info '*NONE*' --output-file $(top_builddir)/coverage/coverage.cleaned3.info --config-file .lcov-config --rc lcov_branch_coverage=1
+ genhtml --config-file .lcov-config --legend -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned3.info
@echo "Coverage Report at $(top_builddir)/coverage/html"
endif