Skip to main content

Configurar la cobertura de código para tu repositorio

Ofrece a tus equipos visibilidad sobre la cobertura del código directamente en las pull requests, sin tener que pagar ni mantener un servicio externo de cobertura.

¿Quién puede utilizar esta característica?

Propietarios de repositorios, propietarios de la organización y usuarios con el rol de administrador

GitHub Team o GitHub Enterprise Cloud

Puede configurar la cobertura de código para el repositorio de dos maneras:

  • Configuración automática: Use el agente con tecnología de IA para generar automáticamente un flujo de trabajo. Elija esta opción si:
    • Quiere empezar a trabajar rápidamente sin escribir la configuración de YAML.
    • El proyecto usa marcos de pruebas comunes y patrones de compilación.
    • Se siente cómodo iterando en un flujo de trabajo generado por ia.
  • Configuración manual: Configure el flujo de trabajo de CI usted mismo. Elija esta opción si:
    • Necesita un control preciso sobre el proceso de cobertura.
    • Tiene requisitos complejos de CI (como registros privados o pasos de compilación personalizados).
    • Quiere comprender exactamente cómo se configura la cobertura.

Configuración automática

Puede usar la opción de configuración automática para generar un flujo de trabajo de cobertura de código sin crear manualmente la configuración de CI. Un agente analiza el repositorio, identifica el marco de pruebas y abre una solicitud de incorporación de cambios con un flujo de trabajo de cobertura listo para su revisión.

Nota:

La configuración automática usa IA para generar el archivo de flujo de trabajo. No hay ningún costo adicional para usar esta característica.

Requisitos previos para la configuración automática

  • Code Quality está habilitado en tu repositorio. Consulte Habilitar GitHub Code Quality.
  • El repositorio tiene un conjunto de pruebas existente.

Generación de un flujo de trabajo de cobertura automáticamente

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. Debajo del nombre del repositorio, haz clic en Settings. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la barra lateral, en "Seguridad", haga clic Calidad del código para mostrar la página "Calidad del código".

  4. En la sección "Análisis de cobertura de código", haga clic en el cuadro desplegable Configurar .

  5. En la lista, seleccione Generar flujo de trabajo con IA. Espere a que el agente analice el repositorio. El agente abre una solicitud de incorporación de cambios de borrador y publica una lista de comprobación de los pasos que está trabajando.

  6. Para revisar la solicitud de incorporación de cambios, haga clic en Revisar solicitud de incorporación de cambios. Revise la solicitud de incorporación de cambios una vez que el agente complete su trabajo. La descripción de la solicitud de incorporación de cambios resume los cambios, incluidas las actualizaciones de configuración del proyecto, los cambios de archivo de flujo de trabajo y la configuración de salida de cobertura.

  7. Si el flujo de trabajo se ejecuta correctamente en CI y la cobertura se carga correctamente, combine la solicitud de incorporación de cambios.

    Si el flujo de trabajo necesita ajustes, consulte Configuración automática de cobertura de código para obtener instrucciones sobre los distintos resultados y cómo iterar.

Para obtener más información sobre cómo funciona el agente y qué esperar, consulte Configuración automática de cobertura de código.

Configuración manual

La cobertura de código integrada te permite hacer un seguimiento de hasta qué punto tus pruebas cubren tu código, sin tener que añadir un servicio de terceros a tu cadena de herramientas ni a tu presupuesto. En los procedimientos siguientes, generará un informe XML de obertura a partir de su conjunto de pruebas, lo cargará en GitHub y verá los resultados de cobertura en sus solicitudes de incorporación de cambios.

Requisitos previos para la configuración manual

  • Code Quality está habilitado en tu repositorio.
  • El repositorio tiene un conjunto de pruebas que se ejecuta en GitHub Actions.
  • Su marco de pruebas puede generar un informe de cobertura en formato XML Cobertura.

Paso 1: Generar un informe XML de cobertura

Configura el marco de pruebas para generar un informe de cobertura en formato XML de Cobertura. La cobertura de código funciona con cualquier lenguaje de programación que pueda generar este formato.

  1. Identifique la herramienta de cobertura del idioma de la tabla siguiente.
  2. Añada el comando o la configuración adecuados al flujo de trabajo de CI para que se genere un archivo XML de Cobertura cada vez que se ejecuten las pruebas.
IdiomaMarco de trabajo / HerramientaCómo generar Cobertura XML
Pythonpytest + pytest-covpytest --cov=. --cov-report=xml
JavaJaCoCoUtilice el script cover2cover.py o el complemento de Gradle/Maven JaCoCo-to-Cobertura
JavaScript/TypeScriptEstambul / nycnyc report --reporter=cobertura
RubySimpleCovAgregue SimpleCov::Formatter::CoberturaFormatter.
Gogo test + gocover-coberturago test -coverprofile=cover.out && gocover-cobertura < cover.out > coverage.xml

Sugerencia

Si tu framework no aparece en la lista anterior, consulta su documentación para ver si admite la salida en formato Cobertura. Muchas herramientas lo admiten directamente o pueden convertir a Cobertura XML desde otros formatos.

Paso 2: Cargar el informe de cobertura

Una vez que las pruebas generen un informe XML de cobertura, cárguelo en GitHub para que los resultados de cobertura aparezcan en las solicitudes de incorporación de cambios.

  1. Abra el archivo de flujo de trabajo de CI del repositorio (por ejemplo, .github/workflows/ci.yml).

  2. Agregue el paso siguiente después del paso que ejecuta las pruebas y genere el informe de cobertura:

    YAML
    - name: Upload coverage report
      if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
      uses: actions/upload-code-coverage@v1
      with:
        file: COVERAGE-FILE-PATH.xml
        language: LANGUAGE
        label: LABEL
    
  3. Reemplace los valores siguientes:

    • COVERAGE-FILE-PATH.xml: ruta de acceso al informe XML de Cobertura (por ejemplo, coverage.xml o target/site/jacoco/cobertura.xml).
    • LANGUAGE: el lenguaje principal del código que se trata (por ejemplo, Python, Java, JavaScript).
    • LABEL: etiqueta opcional para identificar este informe de cobertura (por ejemplo, code-coverage/pytest).
  4. Confirme y envíe el cambio en el flujo de trabajo.

Ejemplo de flujo de trabajo completo

En este ejemplo se ejecutan pruebas Python con pytest-cov y se carga el informe de cobertura:

YAML
name: Code Coverage

This workflow runs your test suite, generates a Cobertura XML coverage report, and uploads it to GitHub. Once this workflow is committed, coverage results appear automatically on every pull request.

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

Run on pushes to the default branch (to establish the baseline) and on pull requests (to compare against it). Code Quality compares PR branch coverage to the default branch, so both triggers are needed.

permissions:
  contents: read
  code-quality: write
jobs:
  test:
    runs-on: ubuntu-latest
    steps:

The code-quality: write permission is required to upload coverage data. No other elevated permissions are needed.

      - uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha || github.sha }}

Check out the PR head commit (not the merge commit) so coverage line numbers map correctly to the diff.

      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          pip install pytest pytest-cov

Replace this step with whatever language setup your project uses (Node.js, Java, Go, etc.). The upload action works with any language that produces a Cobertura XML report.

      - name: Run tests with coverage
        run: pytest --cov=. --cov-report=xml

Adapt this step for your test framework. The key requirement is producing a Cobertura XML file. For other languages, see the framework table earlier in this article.

      - name: Upload coverage report
        if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
        uses: actions/upload-code-coverage@v1
        with:
          file: coverage.xml
          language: Python
          label: code-coverage/pytest

This step replaces any third-party coverage upload (Codecov, Coveralls, etc.). After this runs, the github-code-quality[bot] bot posts a coverage summary directly on the pull request.

# This workflow runs your test suite, generates a Cobertura XML coverage report, and uploads it to GitHub. Once this workflow is committed, coverage results appear automatically on every pull request.
name: Code Coverage

# Run on pushes to the default branch (to establish the baseline) and on pull requests (to compare against it). Code Quality compares PR branch coverage to the default branch, so both triggers are needed.
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

# The `code-quality: write` permission is required to upload coverage data. No other elevated permissions are needed.
permissions:
  contents: read
  code-quality: write

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      # Check out the PR head commit (not the merge commit) so coverage line numbers map correctly to the diff.
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha || github.sha }}

      # Replace this step with whatever language setup your project uses (Node.js, Java, Go, etc.). The upload action works with any language that produces a Cobertura XML report.
      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          pip install pytest pytest-cov

      # Adapt this step for your test framework. The key requirement is producing a Cobertura XML file. For other languages, see the framework table earlier in this article.
      - name: Run tests with coverage
        run: pytest --cov=. --cov-report=xml

      # This step replaces any third-party coverage upload (Codecov, Coveralls, etc.). After this runs, the `github-code-quality[bot]` bot posts a coverage summary directly on the pull request.
      - name: Upload coverage report
        if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
        uses: actions/upload-code-coverage@v1
        with:
          file: coverage.xml
          language: Python
          label: code-coverage/pytest

Paso 3: Ver los resultados de cobertura en las pull requests

  1. Abra una solicitud de incorporación de cambios (o inserte en una existente) que desencadene el flujo de trabajo que haya configurado.
  2. Una vez completado el flujo de trabajo, busque un comentario de github-code-quality[bot] en la solicitud de incorporación de cambios. El comentario incluye:
    • Porcentaje de cobertura total de la rama de la solicitud de incorporación de cambios en comparación con la rama predeterminada.
    • Desglose por archivo en el que se muestran los archivos obtenidos o perdidos de cobertura.

Pasos siguientes