[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