1# Coverage 2CONFIG(coverage) { 3 LIBS += -lgcov 4 QMAKE_CXXFLAGS += --coverage 5 QMAKE_LDFLAGS += --coverage 6 7 QMAKE_EXTRA_TARGETS += coverage cov 8 QMAKE_EXTRA_TARGETS += clean-gcno clean-gcda coverage-html \ 9 generate-coverage-html clean-coverage-html coverage-gcovr \ 10 generate-gcovr generate-coverage-gcovr clean-coverage-gcovr 11 12 clean-gcno.commands = \ 13 "@echo Removing old coverage instrumentation"; \ 14 "find -name '*.gcno' -print | xargs -r rm" 15 16 clean-gcda.commands = \ 17 "@echo Removing old coverage results"; \ 18 "find -name '*.gcda' -print | xargs -r rm" 19 20 coverage-html.depends = clean-gcda check generate-coverage-html 21 22 generate-coverage-html.commands = \ 23 "@echo Collecting coverage data"; \ 24 "lcov --directory $${TOP_SRC_DIR} --capture --output-file coverage.info --no-checksum --compat-libtool"; \ 25 "lcov --extract coverage.info \"*/src/*.cpp\" -o coverage.info"; \ 26 "lcov --remove coverage.info \"moc_*.cpp\" -o coverage.info"; \ 27 "LANG=C genhtml --prefix $${TOP_SRC_DIR} --output-directory coverage-html --title \"Code Coverage\" --legend --show-details coverage.info" 28 29 clean-coverage-html.depends = clean-gcda 30 clean-coverage-html.commands = \ 31 "lcov --directory $${TOP_SRC_DIR} -z"; \ 32 "rm -rf coverage.info coverage-html" 33 34 coverage-gcovr.depends = clean-gcda check generate-coverage-gcovr 35 36 generate-coverage-gcovr.commands = \ 37 "@echo Generating coverage GCOVR report"; \ 38 "gcovr -x -r $${TOP_SRC_DIR} -o $${TOP_SRC_DIR}/coverage.xml -e \".*/moc_.*\" -e \"tests/.*\" -e \".*\\.h\"" 39 40 clean-coverage-gcovr.depends = clean-gcda 41 clean-coverage-gcovr.commands = \ 42 "rm -rf $${TOP_SRC_DIR}/coverage.xml" 43 44 QMAKE_CLEAN += *.gcda *.gcno coverage.info coverage.xml 45} 46