Back to Gitlabhq

Rapport de couverture

doc-locale/fr-fr/ci/testing/code_coverage/coverage_reporting.md

19.3.08.9 KB
Original Source

{{< details >}}

  • Édition : Gratuite, GitLab Premium, GitLab Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

Utilisez le mot-clé coverage pour extraire un pourcentage de couverture depuis la sortie du job log de votre test et l'afficher dans les merge requests et les analyses.

Ce mot-clé affiche uniquement un pourcentage de couverture. Il ne produit pas d'annotations ligne par ligne dans le diff de la MR. Pour afficher les annotations de ligne, configurez artifacts:reports:coverage_report séparément.

Configurer le rapport de couverture {#configure-coverage-reporting}

Pour configurer le rapport de couverture :

  1. Ajoutez le mot-clé coverage à votre job avec une expression régulière correspondant à la sortie de votre outil de test :

    yaml
    test:
      script:
        - pytest --cov
      coverage: '/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
    
  2. Pour agréger la couverture de plusieurs jobs, ajoutez le mot-clé coverage à chaque job.

Modèles d'expressions régulières de couverture {#coverage-regex-patterns}

Les modèles d'expressions régulières suivants correspondent à la sortie des outils de couverture de test courants. Testez-les soigneusement, car les formats de sortie des outils peuvent changer au fil du temps.

{{< tabs >}}

{{< tab title="Python and Ruby" >}}

OutilLangageCommandeModèle d'expression régulière
pytest-covPythonpytest --cov/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
Simplecov-htmlRubyrspec spec/Line\sCoverage:\s\d+\.\d+%/

{{< /tab >}}

{{< tab title="C/C++ and Rust" >}}

OutilLangageCommandeModèle d'expression régulière
gcovrC/C++gcovr/^TOTAL.*\s+(\d+\%)$/
tarpaulinRustcargo tarpaulin/^\d+.\d+% coverage/

{{< /tab >}}

{{< tab title="Java and JVM" >}}

OutilLangageCommandeModèle d'expression régulière
JaCoCoJava/Kotlin./gradlew test jacocoTestReport/Total.*?([0-9]{1,3})%/
ScoverageScalasbt coverage test coverageReport/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/

{{< /tab >}}

{{< tab title="Node.js" >}}

OutilCommandeModèle d'expression régulière
taptap --coverage-report=text-summary/^Statements\s*:\s*([^%]+)/
nycnyc npm test/All files[^|]*|[^|]*\s+([\d\.]+)/
jestjest --ci --coverage/All files[^|]*|[^|]*\s+([\d\.]+)/
node:testnode --experimental-test-coverage --test/all files[^|]*|[^|]*\s+([\d\.]+)/

{{< /tab >}}

{{< tab title="PHP" >}}

OutilCommandeModèle d'expression régulière
pestpest --coverage --colors=never/Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/
phpunitphpunit --coverage-text --colors=never/^\s*Lines:\s*\d+.\d+\%/

{{< /tab >}}

{{< tab title="Go" >}}

OutilCommandeModèle d'expression régulière
go test (single)go test -cover/coverage: \d+.\d+% of statements/
go test (project)go test -coverprofile=cover.profile && go tool cover -func cover.profile/total:\s+\(statements\)\s+\d+.\d+%/

{{< /tab >}}

{{< tab title=".NET and PowerShell" >}}

OutilLangageCommandeModèle d'expression régulière
OpenCover.NETAucune/(Visited Points).*\((.*)\)/
dotnet test.NETdotnet test/Total\s*|*\s(\d+(?:\.\d+)?)/
PesterPowerShellAucune/Covered (\d{1,3}(\.|,)?\d{0,2}%)/

{{< /tab >}}

{{< tab title="Elixir" >}}

OutilCommandeModèle d'expression régulière
excoverallsAucune/\[TOTAL\]\s+(\d+\.\d+)%/
mixmix test --cover/\d+.\d+\%\s+|\s+Total/

{{< /tab >}}

{{< /tabs >}}

Ajouter une règle d'approbation de vérification de couverture {#add-a-coverage-check-approval-rule}

{{< details >}}

  • Édition : Premium, Ultimate

{{< /details >}}

Vous pouvez demander à des utilisateurs spécifiques ou à un groupe d'approuver les merge requests qui réduisent la couverture de test du projet.

Prérequis :

  • Configurez le rapport de couverture.

Pour ajouter une règle d'approbation Coverage-Check :

  1. Dans la barre supérieure, sélectionnez Rechercher ou aller à et trouvez votre projet.
  2. Dans la barre latérale gauche, sélectionnez Paramètres > Requêtes de fusion.
  3. Sous Approbations des requêtes de fusion, effectuez l'une des opérations suivantes :
    • À côté de la règle d'approbation Coverage-Check, sélectionnez Activer.
    • Pour une configuration manuelle, sélectionnez Ajouter une règle d'approbation, puis saisissez Coverage-Check comme Nom de la règle.
  4. Sélectionnez une Branche cible.
  5. Définissez le Nombre requis d'approbations.
  6. Sélectionnez les Utilisateurs ou les Groupes chargés de fournir l'approbation.
  7. Sélectionnez Sauvegarder les modifications.

[!note] La règle d'approbation Coverage-Check requiert une approbation lorsque le pipeline de base de fusion ne contient aucune donnée de couverture, même si la merge request améliore la couverture globale.

Afficher l'historique de couverture {#view-coverage-history}

Vous pouvez suivre les tendances de couverture de votre projet ou groupe au fil du temps.

Pour un projet {#for-a-project}

  1. Dans la barre supérieure, sélectionnez Rechercher ou aller à et trouvez votre projet.
  2. Dans la barre latérale gauche, sélectionnez Analyse > Données d'analyse du dépôt.
  3. Dans la liste déroulante, sélectionnez le job pour lequel vous souhaitez afficher les données historiques.
  4. facultatif. Pour télécharger les données, sélectionnez Télécharger les données brutes (.csv).

Pour un groupe {#for-a-group}

{{< details >}}

  • Édition : Premium, Ultimate

{{< /details >}}

  1. Dans la barre supérieure, sélectionnez Rechercher ou aller à et trouvez votre groupe.
  2. Dans la barre latérale gauche, sélectionnez Analyse > Données d'analyse du dépôt.
  3. facultatif. Pour télécharger les données, sélectionnez Télécharger les données de couverture de test historisées (.csv).

Afficher les badges de couverture {#display-coverage-badges}

Pour ajouter un badge de couverture à votre projet, consultez les badges de rapport de couverture de test.

Dépannage {#troubleshooting}

Lorsque vous utilisez le rapport de couverture, vous pouvez rencontrer les problèmes suivants.

Le pourcentage de couverture n'apparaît pas dans le widget MR {#coverage-percentage-does-not-appear-in-the-mr-widget}

Le mot-clé coverage extrait un pourcentage depuis la sortie du job log de votre job à l'aide d'une expression régulière. Si le pourcentage n'apparaît pas :

  • Vérifiez que votre expression régulière correspond à la sortie réelle de votre outil. Copiez une ligne depuis le job log et testez-la avec votre expression régulière.

  • Certains outils produisent des codes de couleur ANSI qui perturbent la correspondance par expression régulière. Si votre outil ne prend pas en charge la désactivation de la sortie en couleur, supprimez les codes avant l'analyse :

    shell
    lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'
    
  • Vérifiez que le job s'est terminé avec succès. La couverture est extraite uniquement des jobs réussis.

  • La sortie de couverture des pipelines enfants n'est pas enregistrée. Pour plus de détails, consultez l'issue 280818.

[!note] Le mot-clé coverage affiche uniquement un pourcentage dans le widget MR. Pour les annotations ligne par ligne dans le diff, configurez artifacts:reports:coverage_report séparément.