[vlc-commits] [Git][videolan/vlc][master] extras: ci: ignore vlc_qrc.cpp coverage
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Sat Feb 24 15:32:36 UTC 2024
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
d58a95d8 by Alexandre Janniaux at 2024-02-24T15:07:01+00:00
extras: ci: ignore vlc_qrc.cpp coverage
When parsing the coverage with the Qt module enabled, gcovr was failing
to parse the output for qt5-vlc_qrc.cpp, leading to the following error.
$ gcovr -r build-meson --json gcovr.cov.json 130 ↵
(INFO) Reading coverage data...
(WARNING) Unrecognized GCOV output for /home/alexandre/workspace/videolabs/vlc-master/build-meson/modules/gui/qt/qt5-vlc_qrc.cpp
37:60736-block 0
37:60751-block 0
37:60759-block 0
37:60767-block 0
37:60768-block 0
This is indicative of a gcov output parse error.
Please report this to the gcovr developers
at <https://github.com/gcovr/gcovr/issues>.
(WARNING) Exception during parsing:
UnknownLineType: 37:60736-block 0
(WARNING) Exception during parsing:
UnknownLineType: 37:60751-block 0
(WARNING) Exception during parsing:
UnknownLineType: 37:60759-block 0
(WARNING) Exception during parsing:
UnknownLineType: 37:60767-block 0
(WARNING) Exception during parsing:
UnknownLineType: 37:60768-block 0
(ERROR) Exiting because of parse errors.
You can run gcovr with --gcov-ignore-parse-errors
to continue anyway.
(ERROR) Trouble processing 'vlc/build-meson/modules/libqt_plugin.so.p/meson-generated_.._gui_qt_qt5-vlc_qrc.cpp.gcda' with working directory '/home/alexandre/workspace/videolabs/vlc-master/build-meson'.
Stdout of gcov was >>File 'modules/gui/qt/qt5-vlc_qrc.cpp'
Lines executed:100.00% of 13
No branches
Calls executed:100.00% of 5
Creating 'qt5-vlc_qrc.cpp##1ea0d75896cd542c555451d8b8bb4a44.gcov'
Previously, it was trying to merge lines and triggered a negative hit,
leading to the introduction of the gcovr parameter:
--gcov-ignore-parse-errors=negative_hits.warn_once_per_file.
(INFO) - MainThread - Reading coverage data...
(WARNING) - Thread-29 (worker) - Unrecognized GCOV output for /builds/alexandre-janniaux/vlc/modules/codec/subsdec.c
branch 2 taken -1 (fallthrough)
This is indicative of a gcov output parse error.
Please report this to the gcovr developers
at <https://github.com/gcovr/gcovr/issues>.
(WARNING) - Thread-29 (worker) - Exception during parsing:
NegativeHits: Got negative hit value in gcov line 'branch 2 taken -1 (fallthrough)' caused by a bug in gcov tool, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68080. Use option --gcov-ignore-parse-errors with a value of negative_hits.warn, or negative_hits.warn_once_per_file.
(ERROR) - Thread-29 (worker) - Exiting because of parse errors.
You can run gcovr with --gcov-ignore-parse-errors
to continue anyway.
This option seems to still be needed since it is impacted by how
coverage is computed by GCC.
Issue #28490 also mentioned the following assertion:
AssertionError: Got function MainUI::getComponent() const on multiple lines: 26, 27.
You can run gcovr with --merge-mode-functions=MERGE_MODE.
The available values for MERGE_MODE are described in the documentation.
This assertion was due to --merge-mode-functions[^1] not being accounted,
which it now does in gcovr 7.0[^2], and files using Q_OBJECT and the MOC
code generator, duplicating some inline functions from headers.
class MainUI : public QObject {
Q_OBJECT
public:
/* The line below duplicates a function definition at two different
* locations because of MOC. */
inline QQmlComponent* getComponent() const {return m_component;}
We don't need this file to have its coverage checked since it's
generated from an XML file, so let's just ignore it from the coverage
entirely.
[^1]: https://github.com/gcovr/gcovr/pull/700
[^2]: https://github.com/gcovr/gcovr/pull/844
Fixes #28533 #28490
- - - - -
1 changed file:
- extras/ci/gitlab-ci.yml
Changes:
=====================================
extras/ci/gitlab-ci.yml
=====================================
@@ -362,7 +362,10 @@ debian-meson:
- |
# We split in two different commands to handle the case where
# the coverage will be generated on different jobs later.
- gcovr -r "${CI_PROJECT_DIR}/" --json "${CI_PROJECT_DIR}/${CI_JOB_NAME}.cov.json" -j$NCPU --gcov-ignore-parse-errors=negative_hits.warn_once_per_file
+ # Note: qt5-vlc_qrc.cpp needs to be remove from the report since its
+ # coverage should not be checked. It leads to gcovr having trouble
+ # parsing the coverage otherwise.
+ gcovr -r "${CI_PROJECT_DIR}/" --json "${CI_PROJECT_DIR}/${CI_JOB_NAME}.cov.json" -j$NCPU --gcov-ignore-parse-errors=negative_hits.warn_once_per_file --exclude build-meson/modules/gui/qt/qt5-vlc_qrc.cpp
- mkdir html-coverage
- >
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/d58a95d8fbca9ee2cb5c4dd1a76ae4e6044e4cd4
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/d58a95d8fbca9ee2cb5c4dd1a76ae4e6044e4cd4
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list