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. :)
Stefan Schmidt 8 years ago
parent e26fcbb1dc
commit 0dca76798e
  1. 4
  2. 10

@ -1 +1,3 @@
geninfo_auto_base = 1

@ -430,11 +430,11 @@ lcov-reset:
$(MKDIR_P) $(top_builddir)/coverage
lcov --capture --compat-libtool --no-external --config-file .lcov-config --output-file $(top_builddir)/coverage/ --directory $(top_builddir)
lcov --remove $(top_builddir)/coverage/ '*.h' --output-file $(top_builddir)/coverage/
lcov --remove $(top_builddir)/coverage/ '*/tests/*' --output-file $(top_builddir)/coverage/
lcov --remove $(top_builddir)/coverage/ '*NONE*' --output-file $(top_builddir)/coverage/
genhtml --legend -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/
lcov --capture --compat-libtool --no-external --output-file $(top_builddir)/coverage/ --directory $(top_builddir) --config-file .lcov-config --rc lcov_branch_coverage=1
lcov --remove $(top_builddir)/coverage/ '*.h' --output-file $(top_builddir)/coverage/ --config-file .lcov-config --rc lcov_branch_coverage=1
lcov --remove $(top_builddir)/coverage/ '*/tests/*' --output-file $(top_builddir)/coverage/ --config-file .lcov-config --rc lcov_branch_coverage=1
lcov --remove $(top_builddir)/coverage/ '*NONE*' --output-file $(top_builddir)/coverage/ --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/
@echo "Coverage Report at $(top_builddir)/coverage/html"