Back to Gitlabhq

Visualisation de la couverture JaCoCo

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

19.3.04.6 KB
Original Source

{{< details >}}

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

{{< /details >}}

{{< history >}}

{{< /history >}}

Utilisez les rapports de couverture JaCoCo pour afficher les annotations de couverture ligne par ligne dans les diffs de merge request. GitLab lit le rapport XML JaCoCo et annote chaque ligne modifiée comme couverte (vert) ou non couverte (rouge).

La visualisation de la couverture utilise le mot-clé artifacts:reports:coverage_report. Elle n'affiche pas de pourcentage de couverture dans le widget de merge request et ne renseigne pas les graphiques d'historique de couverture. Pour afficher un pourcentage de couverture, configurez le mot-clé coverage séparément.

[!note] Les rapports agrégés provenant de projets multi-modules ne sont pas pris en charge. Pour contribuer à la prise en charge des rapports agrégés, consultez le ticket 491015.

Ajouter un job de couverture JaCoCo {#add-a-jacoco-coverage-job}

Ajoutez un job de couverture JaCoCo lorsque vous souhaitez afficher les annotations de couverture ligne par ligne dans les diffs de merge request.

Prérequis :

Pour ajouter un job de couverture JaCoCo :

  1. Ajoutez un job à votre fichier .gitlab-ci.yml avec artifacts:reports:coverage_report défini sur jacoco. Par exemple :

    yaml
    test-jdk11:
      stage: test
      image: maven:3.6.3-jdk-11
      script:
        - mvn $MAVEN_CLI_OPTS clean org.jacoco:jacoco-maven-plugin:prepare-agent test jacoco:report
      artifacts:
        reports:
          coverage_report:
            coverage_format: jacoco
            path: target/site/jacoco/jacoco.xml
    
  2. Définissez path sur l'emplacement du rapport XML JaCoCo généré.

Si le job génère plusieurs rapports, utilisez un caractère générique dans le chemin de l'artefact.

Indicateurs de couverture {#coverage-indicators}

La visualisation JaCoCo utilise les instructions (couverture C0), représentées par ci (instructions couvertes) dans les rapports.

Une fois le pipeline terminé, la couverture s'affiche dans la vue des diffs de merge request avec ces indicateurs :

  • Instructions couvertes (vert) : lignes comportant au moins une instruction couverte (ci > 0)
  • Aucune instruction couverte (rouge) : lignes sans aucune instruction couverte (ci = 0)
  • Aucune information de couverture : lignes non incluses dans le rapport de couverture

Par exemple, avec cette sortie de rapport :

xml
<line nr="83" mi="2" ci="0" mb="0" cb="0"/>
<line nr="84" mi="2" ci="0" mb="0" cb="0"/>
<line nr="85" mi="2" ci="0" mb="0" cb="0"/>
<line nr="86" mi="2" ci="0" mb="0" cb="0"/>
<line nr="88" mi="0" ci="7" mb="0" cb="1"/>

La vue des diffs de merge request affiche la couverture comme suit :

Dans cet exemple, les lignes 83 à 86 affichent des barres rouges pour le code non couvert, la ligne 88 affiche une barre verte pour le code couvert, et les lignes 87, 89 à 90 ne disposent d'aucune donnée de couverture.

Dépannage {#troubleshooting}

Pour résoudre les problèmes liés à la visualisation de la couverture, notamment les échecs de résolution de chemin et les annotations qui ne s'affichent pas comme prévu, consultez le dépannage de la visualisation de la couverture.

Donner un retour {#give-feedback}

La visualisation de la couverture JaCoCo est activement améliorée. Pour signaler des problèmes ou suggérer des améliorations, laissez votre retour dans le ticket 479804.