Compatibilidad
dd-trace>=4.45.0
y dd-trace>=5.21.0
.jest>=24.8.0
, sólo cuando se ejecuta con jest-circus
.mocha>=5.2.0
.cucumber-js>=7.0.0
.vitest>=2.0.0
.
Nota: El rastreador de DataDog no genera cobertura de código. Si tus tests se ejecutan con la cobertura de código activada, dd-trace
lo informa en la etiqueta test.code_coverage.lines_pct
para tus sesiones de tests automáticamente.
Mocha/Cucumber-js
Sólo se admite la cobertura de código Istanbul
para mocha
y cucumber-js
.
Para informar de la cobertura total del código de tus sesiones de test de mocha
y cucumber-js
, instala nyc
y envuelve tus comandos de test:
- Instala
nyc
:
npm install --save-dev nyc
- Envuelve tus comandos de test con
nyc
:
{
"scripts": {
"test": "mocha",
"coverage": "nyc npm run test"
}
}
Jest
Jest incluye Istanbul por defecto, por lo que no es necesario instalar nyc
. Basta con pasar --coverage
:
{
"scripts": {
"coverage": "jest --coverage"
}
}
El único coverageProvider
admitido es babel
, que es el predeterminado.
Vitest
Vitest requiere dependencias adicionales para ejecutarse con cobertura de código. Consulta documentación de vitest para más información. Una vez instaladas las dependencias, pasa --coverage
a tu comando de test:
{
"scripts": {
"coverage": "vitest run --coverage"
}
}
Después de modificar tus comandos de test, ejecuta tus tests con el nuevo comando coverage
:
NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-service npm run coverage
Compatibilidad
Cuando la cobertura del código está disponible, el rastreador de Datadog (v2.31.0 o posterior) informa de ella en la etiqueta test.code_coverage.lines_pct
para tus sesiones de test.
Si utilizas Coverlet para calcular la cobertura del código, indica la ruta del archivo de informe en la variable de entorno DD_CIVISIBILITY_EXTERNAL_CODE_COVERAGE_PATH
al ejecutar dd-trace
. El archivo de informe debe estar en los formatos OpenCover o Cobertura. Alternativamente, puedes activar el cálculo de cobertura de código integrado en el rastreador de Datadog con la variable de entorno DD_CIVISIBILITY_CODE_COVERAGE_ENABLED=true
.
Opciones avanzadas
La cobertura de código incorporada en el rastreador Datadog es compatible con las opciones Coverlet
y VS Code Coverage
a través del archivo .runsettings
.
Estructura del archivo
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="DatadogCoverage">
<Configuration>
<!-- Datadog Code Coverage settings -->
...
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Opciones de Coverlet
Opción | Resumen |
---|
ExcludeByAttribute | Excluir métodos, clases o ensamblados decorados con atributos de la cobertura de código. |
ExcludeByFile | Excluir archivos fuente específicos de la cobertura de código. |
Exclude | Excluir del análisis de cobertura de código mediante expresiones de filtro. |
Atributos
Puedes excluir un método, una clase entera o un ensamblado de la cobertura de código creando y aplicando el atributo ExcludeFromCodeCoverage
presente en el espacio de nombres System.Diagnostics.CodeAnalysis
.
Excluir atributos adicionales con la propiedad ExcludeByAttribute
y el nombre corto del atributo (el nombre del tipo sin el espacio de nombres).
Archivos fuente
Excluye archivos fuente específicos de la cobertura de código con la propiedad ExcludeByFile
.
- Utiliza una o varias rutas, separadas por comas.
- Utiliza la ruta del archivo o directorio con un comodín (
*
), por ejemplo: dir1/*.cs
.
Filtros
Los filtros proporcionan un control preciso sobre lo que se excluye utilizando expresiones de filtro con la siguiente sintaxis:
[<ASSEMBLY_FILTER>]<TYPE_FILTER>
Se admiten comodines:
*
=> coincide con cero o más caracteres?
=> el carácter prefijado es opcional
Ejemplos:
[*]*
=> excluye todos los tipos en todos los ensamblajes (no se instrumenta nada)[coverlet.*]Coverlet.Core.Coverage
=> excluye la clase Coverage
del espacio de nombres Coverlet.Core
perteneciente a cualquier ensamblaje que coincida con coverlet.*
(por ejemplo, coverlet.core
)[*]Coverlet.Core.Instrumentation.*
=> Excluye todos los tipos pertenecientes al espacio de nombres Coverlet.Core.Instrumentation
en cualquier ensamblaje[coverlet.*.tests?]*
=> excluye todos los tipos en cualquier ensamblaje que empiecen por coverlet.
y terminen por .test
o .tests
(el ?
hace que s
sea opcional)[coverlet.*]*,[*]Coverlet.Core*\
=> excluye los ensamblajes que coincidan con coverlet.*
y excluye todos los tipos pertenecientes al espacio de nombres Coverlet.Core
en cualquier ensamblaje
Opciones de cobertura de código VS
Consulta Personalizar el análisis de cobertura de código en la documentación de Microsoft para obtener información adicional.
Opción | Resumen |
---|
Attributes\Exclude | Excluye métodos, clases o ensamblados decorados con atributos de la cobertura de código. |
Sources\Exclude | Excluir archivos fuente específicos de la cobertura de código. |
Ejemplo de Runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="DatadogCoverage">
<Configuration>
<!-- Coverlet configuration -->
<ExcludeByAttribute>CompilerGeneratedAttribute</ExcludeByAttribute>
<ExcludeByFile>**/Fibonorial.cs</ExcludeByFile>
<Exclude>[myproject.*.tests?]*</Exclude>
<!-- VS Code Coverage configuration -->
<CodeCoverage>
<Attributes>
<Exclude>
<Attribute>^System\.ObsoleteAttribute$</Attribute>
</Exclude>
</Attributes>
<Sources>
<Exclude>
<Source>^MyFile\.cs$</Source>
</Exclude>
</Sources>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Compatibilidad
Cuando la cobertura de código está disponible, el rastreador de Datadog informa de ella en la etiqueta test.code_coverage.lines_pct
para tus sesiones de test.
Jacoco es compatible con la biblioteca de cobertura de código.
Si tu proyecto ya tiene Jacoco configurado, el rastreador de Datadog lo instrumenta e informa los datos de cobertura a Datadog automáticamente.
De lo contrario, puedes configurar el rastreador para añadir Jacoco a tus ejecuciones de tests en tiempo de ejecución.
Utiliza la variable de entorno DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION
para especificar qué versión de Jacoco deseas que se inyecte (por ejemplo: DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION=0.8.11
).
Compatibilidad
dd-trace>=2.5.0
.Python>=3.7
.coverage>=4.4.2
.pytest>=3.0.0
.pytest-cov>=2.7.0
.unittest>=3.8
.- Sólo se admiten las coberturas de código
coverage.py
y pytest-cov
.
Cuando los tests se instrumentan con coverage.py
o pytest-cov
, el rastreador de Datadog informa automáticamente de la cobertura de código bajo la etiqueta test.code_coverage.lines_pct
para tus sesiones de test.
Para informar de la cobertura total de código de tus sesiones de test con coverage.py
, sigue estos pasos:
- Instala
coverage
:
python3 -m pip install coverage
- Ejecuta tu test con el nuevo comando
coverage
:
DD_ENV=ci DD_SERVICE=my-python-service coverage run -m pytest
Alternativamente, para informar de la cobertura total de código de tus sesiones de test con pytest-cov
, sigue estos pasos:
- Instala
pytest
:
python3 -m pip install pytest
- Instala
pytest-cov
:
python3 -m pip install pytest-cov
- Ejecuta tu test añadiendo el indicador
--cov
a tu comando pytest
:
DD_ENV=ci DD_SERVICE=my-python-service pytest --cov
Compatibilidad
datadog-ci-rb>=1.7.0
simplecov>=0.18.0
.
Nota: Datadog biblioteca no genera la cobertura total del código. Si sus pruebas se ejecutan con la cobertura de código activada, Datadog-ci-rb informa de ello en
test.code_coverage.lines_pct
etiquetar para sus sesiones de prueba automáticamente.
Si tu proyecto tiene configurado simplecov, la biblioteca satadog-ci-rb lo instrumenta e informa los datos de cobertura a Datadog automáticamente bajo la etiqueta test.code_coverage.lines_pct
para tus sesiones de test.
Esta función está activada por defecto. Utiliza la variable de entorno DD_CIVISIBILITY_SIMPLECOV_INSTRUMENTATION_ENABLED
para desactivar esta función (por ejemplo: DD_CIVISIBILITY_SIMPLECOV_INSTRUMENTATION_ENABLED=0
).
Compatibilidad
Nota: La biblioteca de DataDog no genera cobertura total de código. Si tus tests se ejecutan con la cobertura de código activada, dd-trace-go
lo informa en la etiqueta test.code_coverage.lines_pct
para tus sesiones de tests automáticamente.
Si tus tests se ejecutan con el indicador -cover
, la biblioteca de Datadog lo instrumenta y automáticamente reporta los datos de cobertura a Datadog bajo la etiqueta test.code_coverage.lines_pct
para tus sesiones de test.
Compatibilidad
dd-sdk-swift-testing>=2.5.3
.Xcode>=14.3
.
Cuando la cobertura de código está activada, el rastreador de Datadog informa de ella en la etiqueta test.code_coverage.lines_pct
para tus sesiones de test.
Para habilitar la cobertura de código en proyectos Xcode puedes seguir esta guía de Apple: Habilitar la cobertura de código en tu plan de tests.
Para los tests SPM, añade el parámetro --enable-code-coverage
a tu invocación swift test
.
Compatibilidad
Puedes cargar un valor de porcentaje de cobertura de código cuando utilices la carga de informes JUnit:
datadog-ci junit upload --service <service_name> --report-measures=test.code_coverage.lines_pct:85 <path>
En este ejemplo, 85
es el porcentaje de líneas cubiertas por tus tests y debe generarse con una herramienta diferente.
El informe de cobertura de código debe generarse en un proceso diferente, de lo contrario las cargas de informes JUnit no generarán informes de cobertura de código. El nombre de la métrica informada debe ser test.code_coverage.lines_pct
.