Skip to main content

Configurando a cobertura de código para seu repositório

Dê às equipes visibilidade da cobertura de código diretamente em pull requests, sem pagar por nem manter um serviço de cobertura de terceiros à parte.

Quem pode usar esse recurso?

Proprietários de repositório, proprietários da organização e usuários com a função de administrador

GitHub Team ou GitHub Enterprise Cloud

Você pode configurar a cobertura de código para seu repositório de duas maneiras:

  • Configuração automática: Use o agente alimentado por IA para gerar um fluxo de trabalho automaticamente. Escolha essa opção se:
    • Você deseja começar rapidamente sem escrever a configuração do YAML.
    • Seu projeto usa estruturas de teste comuns e padrões de build.
    • Você está confortável em iterar em um fluxo de trabalho gerado por IA.
  • Configuração manual: Configure seu fluxo de trabalho de CI por conta própria. Escolha essa opção se:
    • Você precisa de controle preciso sobre o processo de cobertura.
    • Você tem requisitos complexos de CI (como registros privados ou etapas de build personalizadas).
    • Você deseja entender exatamente como a cobertura está configurada.

Configuração automática

Você pode usar a opção de instalação automática para gerar um fluxo de trabalho de cobertura de código de trabalho sem criar manualmente a configuração de CI. Um agente analisa seu repositório, identifica sua estrutura de teste e abre uma solicitação de pull com um fluxo de trabalho de cobertura pronto para revisão.

Observação

A instalação automática usa a IA para gerar o arquivo de fluxo de trabalho. Não há custo adicional para usar esse recurso.

Pré-requisitos para configuração automática

Gerando um fluxo de trabalho de cobertura automaticamente

  1. Em GitHub, acesse a página principal do repositório.

  2. No nome do repositório, clique em Settings. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na barra lateral, em "Segurança", clique Qualidade do código para exibir a página "Qualidade do código".

  4. Na seção "Análise de cobertura de código", clique na caixa suspensa Instalação .

  5. Na lista, selecione Gerar fluxo de trabalho com IA. Aguarde até que o agente analise seu repositório. O agente abre uma solicitação de pull de rascunho e posta uma lista de verificação das etapas pelas qual está trabalhando.

  6. Para examinar a solicitação de pull, clique em Examinar solicitação de pull. Examine a solicitação de pull assim que o agente concluir seu trabalho. A descrição da solicitação de pull resume as alterações, incluindo atualizações de configuração de projeto, alterações de arquivo de fluxo de trabalho e configurações de saída de cobertura.

  7. Se o fluxo de trabalho for executado com êxito na CI e a cobertura for carregada corretamente, mescle a solicitação de pull.

    Se o fluxo de trabalho precisar de ajustes, consulte Configuração automática de cobertura de código para obter diretrizes sobre os diferentes resultados e como iterar.

Para obter mais informações sobre como o agente funciona e o que esperar, consulte Configuração automática de cobertura de código.

Configuração manual

A cobertura de código integrada permite acompanhar com que profundidade seus testes exercitam o código, sem precisar adicionar um serviço de terceiros ao seu conjunto de ferramentas nem ao orçamento. Nos procedimentos a seguir, você gerará um relatório de cobertura no formato Cobertura XML a partir do seu conjunto de testes, fará upload dele para GitHub e visualizará os resultados da cobertura em seus pull requests.

Pré-requisitos para configuração manual

  • Code Quality está habilitado para seu repositório.
  • Seu repositório possui uma suíte de testes executada em GitHub Actions.
  • Sua estrutura de teste pode produzir um relatório de cobertura no formato Cobertura XML .

Etapa 1: gerar um relatório de cobertura Cobertura XML

Configure seu framework de testes para gerar um relatório de cobertura no formato Cobertura XML. A cobertura de código funciona com qualquer linguagem de programação que possa produzir esse formato.

  1. Identifique a ferramenta de cobertura do seu idioma na tabela abaixo.
  2. Adicione o comando ou a configuração apropriada ao fluxo de trabalho de CI para que um arquivo XML do Cobertura seja gerado sempre que os testes forem executados.
LinguagemEstrutura/FerramentaComo gerar Cobertura XML
Pythonpytest + pytest-covpytest --cov=. --cov-report=xml
JavaJaCoCoUsar o script cover2cover.py ou o plug-in JaCoCo-to-Cobertura Gradle/Maven
JavaScript/TypeScriptIstambul/ nycnyc report --reporter=cobertura
RubySimpleCovAdicionar SimpleCov::Formatter::CoberturaFormatter
Gogo test + gocover-coberturago test -coverprofile=cover.out && gocover-cobertura < cover.out > coverage.xml

Dica

Se o seu framework não estiver listado acima, verifique na documentação dele se há suporte para saída no formato Cobertura. Muitas ferramentas têm suporte nativo a esse formato ou podem converter de outros formatos para o XML Cobertura.

Etapa 2: Carregar o relatório de cobertura

Depois que seus testes gerarem um relatório Cobertura XML, faça upload dele para GitHub para que os resultados de cobertura apareçam nos pull requests.

  1. Abra o arquivo de fluxo de trabalho ci do repositório (por exemplo, .github/workflows/ci.yml).

  2. Adicione a seguinte etapa após a etapa que executa seus testes e gere o relatório 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. Substitua os seguintes valores:

    • COVERAGE-FILE-PATH.xml: o caminho para o relatório XML do Cobertura (por exemplo, coverage.xml ou target/site/jacoco/cobertura.xml).
    • LANGUAGE: o idioma principal do código que está sendo coberto (por exemplo, Python, Java, JavaScript).
    • LABEL: um rótulo opcional para identificar este relatório de cobertura (por exemplo, code-coverage/pytest).
  4. Confirme e envie por push a alteração do fluxo de trabalho.

Exemplo de fluxo de trabalho completo

Este exemplo executa Python testes com pytest-cov e carrega o relatório 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

Etapa 3: Exibir os resultados de cobertura em pull requests

  1. Abra uma solicitação de pull (ou envie por push para uma existente) que dispare o fluxo de trabalho configurado.
  2. Após a conclusão do fluxo de trabalho, procure um comentário de github-code-quality[bot] na pull request. O comentário inclui:
    • A porcentagem de cobertura agregada da ramificação da pull request em comparação com a ramificação padrão.
    • Um detalhamento por arquivo mostrando quais arquivos ganharam ou perderam a cobertura.

Próximas Etapas