Cobertura de código para solicitudes de extracción
Azure Pipelines
La cobertura de código es una métrica de calidad importante y le ayuda a medir el porcentaje del código del proyecto que se está probando. Para asegurarse de que la calidad del proyecto mejora con el tiempo (o, al menos, no se revierte), es esencial que el nuevo código que se incluye en el sistema esté bien probado. Esto significa que cuando los desarrolladores realizan solicitudes de extracción, saber si sus cambios están cubiertos por pruebas le ayudará a conectar los huecos de prueba antes de que los cambios se combinen en la rama de destino. Es posible que los propietarios del repositorio también quieran establecer directivas para evitar la combinación de grandes cambios no probados.
Cobertura completa, cobertura de diferencias
Normalmente, la cobertura se mide para todo el código base de un proyecto. Se trata de una cobertura completa. Sin embargo, en el contexto de las solicitudes de extracción, los desarrolladores se centran en los cambios que están realizando y quieren saber si se tratan las líneas de código específicas que han agregado o cambiado. Se trata de la cobertura de diferencias.
Requisitos previos
Para obtener las métricas de cobertura de una solicitud de extracción, configure primero una canalización que valide las solicitudes de extracción. En esta canalización, configure la herramienta de prueba que usa para recopilar métricas de cobertura de código. A continuación, los resultados de la cobertura se deben publicar en el servidor para los informes.
Para más información sobre la recopilación y publicación de resultados de cobertura de código para el lenguaje que prefiera, consulte la sección Ecosistemas. Por ejemplo, recopile y publique la cobertura de código para aplicaciones de .NET Core.
Nota
Aunque puede recopilar y publicar resultados de cobertura de código para muchos lenguajes diferentes mediante Azure Pipelines, la característica cobertura de código para solicitudes de extracción que se describe en este documento solo está disponible actualmente para proyectos de .NET y .NET Core mediante el formato de resultados de cobertura de código de Visual Studio (extensión de archivo .coverage). La compatibilidad con otros lenguajes y formatos de cobertura se agregará en hitos futuros.
Estado de cobertura, detalles e indicadores
Una vez que haya configurado una canalización que recopila y publica la cobertura de código, publica un estado de cobertura de código cuando se genera una solicitud de extracción. De forma predeterminada, el servidor comprueba al menos el 70 % de las líneas modificadas que cubren las pruebas. El objetivo de umbral de cobertura de diferencias se puede cambiar a un valor de su elección. Consulte la sección configuración de configuración siguiente para obtener más información al respecto.

La comprobación de estado evalúa el valor de cobertura de diferencias para todos los archivos de código de la solicitud de extracción. Si desea ver el valor de cobertura de % de diferencias para cada uno de los archivos, puede activar los detalles como se mencionó en la sección de configuración. Al activar los detalles, se publica información como comentario en la solicitud de extracción.

En la vista de archivos modificados de una solicitud de extracción, las líneas que se cambian también se anotan con indicadores de cobertura para mostrar si esas líneas están cubiertas.

Nota
Aunque puede compilar código a partir de una amplia variedad de sistemas de control de versiones que Azure Pipelines admite, la cobertura de código para la característica de solicitudes de extracción que se describe en este documento solo está disponible actualmente para Azure Repos.
Configuración de las opciones de cobertura
Si desea cambiar la configuración predeterminada de la experiencia de cobertura de código para las solicitudes de extracción, debe incluir un archivo YAML de configuración denominado azurepipelines-coverage.yml en la raíz del repositorio. Establezca los valores deseados en este archivo y se usará automáticamente la próxima vez que se ejecute la canalización.
La configuración que se puede cambiar es la siguiente:
| Configuración | Descripción | Valor predeterminado | Valores permitidos |
|---|---|---|---|
| status | Indica si la comprobación de estado de cobertura de código debe publicarse en las solicitudes de extracción. Al desactivar esta opción, no se mostrarán comprobaciones de cobertura y las anotaciones de cobertura no aparecerán en la vista de archivos modificados. |
en | on, off |
| Destino | Se debe cumplir el valor de umbral de destino para la cobertura de diferencias para que se publique un estado de cobertura correcto. | 70% | Número de % deseado |
| comments | Indica si un comentario que contiene los detalles de cobertura de cada archivo de código debe publicarse en la solicitud de extracción. | apagado | on, off |
Configuración de ejemplo:
coverage:
status: # Code coverage status will be posted to pull requests based on targets defined below.
comments: on # Off by default. When on, details about coverage for each file changed will be posted as a pull request comment.
diff: # Diff coverage is code coverage only for the lines changed in a pull request.
target: 60% # Set this to a desired percentage. Default is 70 percent
Puede encontrar más ejemplos con detalles en el repositorio de ejemplos de YAMLde cobertura de código .
Nota
Los indicadores de cobertura se encienden en la vista de archivos modificados independientemente de si los detalles del comentario de la solicitud de extracción están activados.
Sugerencia
La configuración de cobertura de YAML es diferente de una canalización de YAML. Esto se debe a que la configuración de cobertura se aplica al repositorio y se usará independientemente de la canalización que compile el código. Esta separación también significa que si usa las canalizaciones de compilación basadas en diseñador clásico, se obtiene la comprobación del estado de cobertura de código para las solicitudes de extracción.
Protección de una rama mediante una directiva de cobertura de código
La comprobación del estado de cobertura de código para las solicitudes de extracción es solo una sugerencia para los desarrolladores y no impide que las solicitudes de extracción con cobertura de código baja se combinen en la rama de destino. Si mantiene un repositorio en el que desea evitar que los desarrolladores fusionen los cambios que no cumplen un umbral de cobertura, debe configurar una directiva de rama mediante la comprobación de estado de cobertura.
Sugerencia
El estado de cobertura de código publicado desde una canalización sigue la convención de nomenclatura {name-of-your-pipeline/codecoverage} .
Nota
Las directivas de rama Azure Repos (incluso las directivas opcionales) impiden que las solicitudes de extracción se completen automáticamente si se producirá un error. Este comportamiento no es específico de la directiva de cobertura de código.
Preguntas más frecuentes
¿Qué herramientas de cobertura y formatos de resultados se pueden usar para validar la cobertura de código en las solicitudes de extracción?
Actualmente, la cobertura de código para las solicitudes de extracción solo está disponible Visual Studio formatos de cobertura de código (.coverage). Esto se puede usar si publica cobertura de código mediante la tarea Visual Studio Test, el verbo de prueba de dotnet core task y la opción TRX de la tarea publicar resultados de pruebas. Se agregará compatibilidad con otras herramientas de cobertura y formatos de resultados en hitos futuros.
Si se desencadenan varias canalizaciones cuando se genera una solicitud de extracción, ¿se combinará la cobertura entre las canalizaciones?
Si se desencadenan varias canalizaciones cuando se genera una solicitud de extracción, la cobertura de código no se combinará. La funcionalidad está diseñada actualmente para una única canalización que recopila y publica la cobertura de código para las solicitudes de extracción. Si necesita la capacidad de combinar datos de cobertura entre canalizaciones, envíe una solicitud de característica en la comunidad de desarrolladores.
Ayuda y soporte técnico
- Vea la guía de solución de problemas
- Obtenga consejos sobre Stack Overflowy obtenga soporte técnico a través de la página developer Community