web-dev-qa-db-fra.com

Dans SonarQube, quelle est la différence de signification entre les mesures "Lines to Cover" et "Uncovered Lines"?

Je regarde le rapport de couverture dans l'onglet Mesures d'un projet C++ analysé par SonarQube. Sur cette page, mes informations récapitulatives sont les suivantes:

SonarQube Coverage Overview

Quelles sont les différences entre les mesures "Lignes à couvrir" et "Lignes non couvertes"?

J'ai regardé la page des définitions métriques du site Web sonarqube mais les deux entrées là-bas ne m'aident pas.

Lignes à couvrir - Nombre de lignes de code pouvant être couvertes par des tests unitaires (par exemple, les lignes vides ou les lignes de commentaires complets ne sont pas considérées comme des lignes à couverture).

Lignes non couvertes - Nombre de lignes de code qui ne sont pas couvertes par les tests unitaires.

La façon dont cela se lit, je m'attends à ce que les lignes non couvertes soient un nombre plus élevé que le nombre de lignes à couvrir, car le premier peut inclure des lignes vides. Si sonarqube comprenait quelque peu le code, il pourrait également exclure la gestion des exceptions du numéro "pourrait être couvert par des tests unitaires".

Les nombres donnés sont clairement l'inverse de cela, donc je ne dois pas en comprendre correctement le sens.


J'ai des tests unitaires exécutés dans le cadre du système CI et leur couverture de code est compilée en utilisant à la fois lcov et gcov. Les données lcov sont transmises via genhtml pour créer un rapport de couverture séparé qui donne actuellement des données dans certains cas, donc je peux avoir un problème de mauvaise configuration partielle ajoutant à la confusion.

8
TafT

Les "lignes à couvrir" sont les lignes totales de votre code de "production" pour lesquelles vous devriez, dans un monde dit parfait, faire des tests. Il s'agit de chaque ligne des fichiers de code source, qui n'est pas une ligne de commentaire, vierge ou similaire, non codée.

Dans le monde réel, vos tests ne couvriront que certains d'entre eux. Les lignes manquées sont les "lignes non couvertes".

En d'autres termes, vous pouvez exprimer "Couverture" comme:

"Coverage" = 100% - 100 * "Uncovered Lines" / "Lines to Cover"
7
Mureinik