Compatibilité
dd-trace>=3.20.0
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
Compatibilité
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
.
Options avancées
La couverture de code intégrée au traceur Datadog prend en charge les options Coverlet
et VS Code Coverage
par le biais du fichier .runsettings
.
Structure de fichier
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="DatadogCoverage">
<Configuration>
<!-- Paramètres de couverture du code Datadog -->
...
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Options Coverlet
Option | Rôle |
---|
ExcludeByAttribute | Exclut de la couverture du code les méthodes, classes ou assemblages dotés d’attributs. |
ExcludeByFile | Exclut de la couverture du code des fichiers source spécifiques. |
Exclude | Exclue des éléments de l’analyse de la couverture du code à l’aide d’expressions de filtre. |
Node.js
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).
Fichiers source
Excluez des fichiers source spécifiques de la couverture du code à l’aide de la propriété ExcludeByFile
.
- Utilisez un ou plusieurs chemins séparés par des virgules.
- Utilisez un wildcard (
*
) pour spécifier un chemin vers un fichier ou un répertoire. Exemple : dir1/*.cs
.
Filtres
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.
Options de couverture du code Visual Studio
Consultez la rubrique Personnaliser l’analyse de la couverture du code de la documentation Microsoft pour en savoir plus.
Option | Rôle |
---|
Attributes\Exclude | Exclut de la couverture du code les méthodes, classes ou assemblages dotés d’attributs. |
Sources\Exclude | Exclut de la couverture du code des fichiers source spécifiques. |
Exemple runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="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>
Compatibilité
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
).
Compatibilité
Vous ne pouvez pas importer une valeur de pourcentage de couverture de code si vous utilisez l’importation de rapports JUnit :
datadog-ci junit upload --service <nom_service> --report-metrics=test.code_coverage.lines_pct:85 <chemin>
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
.
Compatibilité
dd-trace>=2.5.0
Python>=3.7
coverage>=4.4.2
pytest>=3.0.0
pytest-cov>=2.7.0
unittest>=3.8
- Seule la couverture du code
coverage.py
et pytest-cov
est prise en charge.
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
:
DD_ENV=ci DD_SERVICE=my-python-service pytest --cov