jest>=24.8.0, uniquement pour une exécution avec jest-circus
mocha>=5.2.0
cucumber-js>=7.0.0
Seule la couverture du code Istanbul est prise en charge.
Lorsque vos tests sont instrumentés avec Istanbul, le traceur Datadog transmet automatiquement la couverture du code sous le tag test.code_coverage.lines_pct pour vos sessions de test. Vous pouvez utiliser nyc pour instrumenter des tests avec Istanbul :
Pour transmettre la couverture totale du code de vos sessions de test, procédez comme suit :
Installez nyc :
npm install --save-dev nyc
Incorporez votre commande de test avec nyc :
{"scripts":{"test":"mocha","coverage":"nyc npm run test"}}
Remarque : Jest inclut par défaut Istanbul. Vous n'avez donc pas besoin d'installer nyc. Passez simplement --coverage.
{"scripts":{"coverage":"jest --coverage"}}
Exécutez votre test avec la nouvelle commande coverage :
NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-service npm run coverage
Lorsque la couverture du code est disponible, le traceur Datadog (v2.31.0+) la transmet sous le tag test.code_coverage.lines_pct pour vos sessions de test.
Si vous utilisez Coverlet pour calculer la couverture de votre code, indiquez le chemin vers le fichier du rapport dans la variable d’environnement DD_CIVISIBILITY_EXTERNAL_CODE_COVERAGE_PATH lors de l’exécution de dd-trace. Le fichier de rapport doit être au format OpenCover ou Cobertura. Sinon, vous pouvez activer le calcul de la couverture de code intégré au traceur Datadog avec la variable d’environnement DD_CIVISIBILITY_CODE_COVERAGE_ENABLED=true.
Vous pouvez exclure une méthode, une classe entière ou un assemblage de la couverture du code en créant et en appliquant l’attribut ExcludeFromCodeCoverage au sein de l’espace de nommage System.Diagnostics.CodeAnalysis.
Excluez d’autres attributs avec la propriété ExcludeByAttribute ainsi que le nom raccourci de l’attribut (le nom du type sans l’espace de nommage).
Les filtres permettent de choisir avec précision les éléments à exclure à l’aide d’expressions de filtre. Vous devez respecter la syntaxe suivante :
[<FILTRE_ASSEMBLAGE>]<FILTRE_TYPE>
Les wildcards sont pris en charge :
* correspond à zéro ou plusieurs caractères.
? signifie que le caractère préfixe est facultatif.
Exemples :
[*]* exclut tous les types de tous les assemblages (aucun élément n’est instrumenté).
[coverlet.*]Coverlet.Core.Coverage exclut la classe Coverage dans l’espace de nommage Coverlet.Core appartenant aux assemblages qui correspondent à coverlet.* (coverlet.core, par exemple).
[*]Coverlet.Core.Instrumentation.* exclut tous les types appartenant à l’espace de nommage Coverlet.Core.Instrumentation dans n’importe quel assemblage.
[coverlet.*.tests?]* exclut tous les types dans tout les assemblages commençant par coverlet. et se terminant par .test ou .tests (le symbole ? rend le caractère s facultatif).
[coverlet.*]*,[*]Coverlet.Core*\ exclut les assemblages correspondant à coverlet.* et exclut tous les types appartenant à l’espace de nommage Coverlet.Core dans n’importe quel assemblage.
<?xml version="1.0" encoding="utf-8"?><RunSettings><DataCollectionRunSettings><DataCollectors><DataCollectorfriendlyName="DatadogCoverage"><Configuration><!-- Configuration Coverlet --><ExcludeByAttribute>CompilerGeneratedAttribute</ExcludeByAttribute><ExcludeByFile>**/Fibonorial.cs</ExcludeByFile><Exclude>[myproject.*.tests?]*</Exclude><!-- Configuration de la couverture du code Visual Studio --><CodeCoverage><Attributes><Exclude><Attribute>^System\.ObsoleteAttribute$</Attribute></Exclude></Attributes><Sources><Exclude><Source>^MyFile\.cs$</Source></Exclude></Sources></CodeCoverage></Configuration></DataCollector></DataCollectors></DataCollectionRunSettings></RunSettings>
Lorsque la couverture du code est disponible, le traceur Datadog la transmet sous le tag test.code_coverage.lines_pct pour vos sessions de test.
La bibliothèque de couverture de code Jacoco est prise en charge.
Si Jacoco est déjà configuré pour votre projet, le traceur Datadog l’instrumente et transmet automatiquement les données sur la couverture à Datadog.
Sinon, vous pouvez configurer le traceur afin d’ajouter Jacoco à vos exécutions de test lors du runtime.
Utilisez la variable d’environnement DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION pour spécifier la version de Jacoco à injecter (par exemple, DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION=0.8.11).
Dans cet exemple, 85 correspond au pourcentage de lignes couvertes par vos tests. Cette valeur doit être générée avec un autre outil.
Le rapport de couverture du code doit être généré avec un processus distinct. Autrement, les importations de rapports JUnit ne généreront pas de rapports de couverture du code. Le nom de la métrique transmise doit correspondre à test.code_coverage.lines_pct.
Lorsque vos tests sont instrumentés avec coverage.py ou pytest-cov, le traceur Datadog transmet automatiquement la couverture du code sous le tag test.code_coverage.lines_pct pour vos sessions de test.
Pour transmettre la couverture totale du code de vos sessions de test avec coverage.py, procédez comme suit :
Installez coverage :
python3 -m pip install coverage
Exécutez votre test avec la nouvelle commande coverage :
DD_ENV=ci DD_SERVICE=my-python-service coverage run -m pytest
Sinon, pour transmettre la couverture totale du code de vos sessions de test avec pytest-cov, procédez comme suit :
Installez pytest :
python3 -m pip install pytest
Installez pytest-cov :
python3 -m pip install pytest-cov
Pour exécuter votre test, ajoutez le flag --cov à votre commande pytest :
La couverture du code est transmise via @test.code_coverage.lines_pct. Elle représente le pourcentage dans la facette. Cette valeur peut être représentée comme n’importe quelle autre mesure dans le CI Visibility Explorer.
Vous pouvez exporter votre graphique au sein d’un dashboard ou d’un notebook. Pour créer un monitor basé sur ce graphique, cliquez sur le bouton Export :
Vous pouvez également visualiser l’évolution de la couverture de code sur la page Branch Overview, afin de vérifier si la couverture augmente ou diminue :
Le commentaire de synthèse de test d’une pull request compare la couverture de code d’une pull request GitHub à celle de la branche par défaut et indique son évolution.
Bien que la fonctionnalité Intelligent Test Runner nécessite la couverture du code par test, elle ne fournit pas automatiquement des mesures de la couverture totale du code.