Fazer o upload de arquivo SARIF para o GitHub

Você pode carregar arquivos SARIF de ferramentas de análise estáticas de terceiros para o GitHub e ver Varredura de código alertas dessas ferramentas no seu repositório.

People with write permissions to a repository can upload Varredura de código data generated outside GitHub.

Varredura de código is available for all public repositories, and for private repositories owned by organizations where Segurança Avançada GitHub is enabled. Para obter mais informações, consulte "Sobre Segurança Avançada GitHub".

Sobre os uploads de arquivos SARIF para Varredura de código

O GitHub cria alertas de Varredura de código em um repositório usando informações de arquivos de Formato Intercâmbio de Resultados de Análise Estática (SARIF). Os arquivos SARIF podem ser enviados para um repositório usando a API ou GitHub Actions. Para obter mais informações, consulte "Gerenciar alertas de Varredura de código para o seu repositório".

Você pode gerar arquivos SARIF usando muitas ferramentas de teste de segurança de análise estática, incluindo CodeQL. Para fazer o upload dos resultados das ferramentas de terceiros, você deve usar o formato Intercâmbio de Resultados de Análise Estática (SARIF) 2.1.0. Para obter mais informações, consulte "Suporte SARIF para Varredura de código".

Você pode enviar os resultados usando GitHub Actions, a API de Varredura de código the CodeQL CLI, ou Executor do CodeQL. O melhor método de upload dependerá de como você gera o arquivo SARIF. Por exemplo, se você usar:

  • GitHub Actions para executar a ação CodeQL, não haverá nenhuma ação adicional necessária. A ação CodeQL faz o upload do arquivo SARIF automaticamente quando ele conclui a análise.
  • O arquivo SARIF pode ser gerado a partir de uma ferramenta de análise compatível com o SARIF, que você executa no mesmo fluxo de trabalho de GitHub Actions usado para fazer o upload do arquivo.
  • O CodeQL CLI para executar Varredura de código no seu sistema de CI, você pode usar a CLI para fazer o upload de resultados para GitHub (para mais informações, consulte "Executando CodeQL CLI no seu sistema de CI").
  • GitHub exibirá alertas de Varredura de código do arquivo SARIF carregado em seu repositório. Se você bloquear o upload automático, quando você estiver pronto para fazer o upload dos resultados, você poderá usar o comando enviar (para mais informações, ver "Executando Executor do CodeQL no seu sistema de CI").
  • Uma ferramenta que gera resultados como um artefato fora do seu repositório, você pode usar a API de Varredura de código para fazer o upload do arquivo (para mais informações, consulte "Enviar uma análise como dados do SARIF").

Observação: Para repositórios privados e internos, Varredura de código está disponível quando as funcionalidades de Segurança Avançada GitHub são habilitadas no repositório. Se você vir o erro dvanced Security must be enabled for this repository to use code scanning, verifique se Segurança Avançada GitHub está habilitado. Para obter mais informações, consulte "Gerenciar configurações de segurança e análise do seu repositório".

Fazer o upload uma análise de Varredura de código com GitHub Actions

Para fazer o upload de um arquivo SARIF de terceiros para GitHub, você precisará de um fluxo de trabalho de GitHub Actions. Para obter mais informações, consulte "Aprenda GitHub Actions".

O seu fluxo de trabalho precisará usar a ação upload-sarif, que tem parâmetros de entrada que você pode usar para configurar o upload. Ele tem parâmetros de entrada que você pode usar para configurar o upload. O parâmetro de entrada principal que você usará é sarif-file, que configura o arquivo ou diretório dos arquivos SARIF a serem carregados. O diretório ou caminho do arquivo é relativo à raiz do repositório. Para mais informações, consulte a ação upload-sarif.

A ação upload-sarif pode ser configurada para ser executada quando ocorrem o evento push e agendado. Para obter mais informações sobre eventos do GitHub Actions, consulte "Eventos que acionam fluxos de trabalho".

Se o seu arquivo SARIF não incluir partialFingerprints, a ação upload-sarif calculará o campo parcialFingerprints para você e tentará evitar alertas duplicados. O GitHub só pode criar partialFingerprints quando o repositório contiver o arquivo SARIF e o código-fonte usado na análise estática. Para obter mais informações sobre a prevenção de alertas duplicados, consulte "Sobre o suporte SARIF para a varredura de código".

Note: SARIF upload supports a maximum of 5000 results per upload. Todos os resultados acima deste limite são ignorados. Se uma ferramenta gerar muitos resultados, você deverá atualizar a configuração para focar nos resultados para as regras ou consultas mais importantes.

Exemplo de fluxo de trabalho para arquivos SARIF gerados fora de um repositório

Você pode criar um novo fluxo de trabalho que faz o upload de arquivos SARIF após fazer o commit deles no seu repositório. Isso é útil quando o arquivo SARIF é gerado como um artefato fora do seu repositório.

Este exemplo de fluxo de trabalho é executado sempre que os commits são carregados no repositório. A ação usa a propriedade partialFingerprints para determinar se houve alterações. Além de executar quando os commits são carregados, o fluxo de trabalho está programado para ser executado uma vez por semana. Para obter mais informações, consulte "Eventos que acionam fluxos de trabalho".

Este fluxo de trabalho faz o upload do arquivo results.sarif localizado na raiz do repositório. Para obter mais informações sobre a criação de um arquivo de fluxo de trabalho, consulte "Aprender GitHub Actions".

Como alternativa, você pode modificar este fluxo de trabalho para fazer upload de um diretório de arquivos SARIF. Por exemplo, você pode colocar todos os arquivos SARIF em um diretório na raiz do seu repositório denominado sarif-output e definir o parâmetro de entrada da ação sarif_file como sarif-output.

name: "Upload SARIF"

# Run workflow each time code is pushed to your repository and on a schedule.
# The scheduled workflow runs every Thursday at 15:45 UTC.
on:
  push:
  schedule:
    - cron: '45 15 * * 4'

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      # This step checks out a copy of your repository.
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Upload SARIF file
        uses: github/codeql-action/upload-sarif@v1
        with:
          # Path to SARIF file relative to the root of the repository
          sarif_file: results.sarif

Exemplo de fluxo de trabalho que executa a ferramenta de análise ESLint

Se você gerar seu arquivo SARIF de terceiros como parte de um fluxo de trabalho de integração contínua (CI), você poderá adicionar a ação upload-sarif como um passo depois de executar seus testes de CI. Se você ainda não tiver um fluxo de trabalho de CI, você poderá criar um usando um modelo de GitHub Actions. Para obter mais informações, consulte o início rápido "GitHub Actions".

Este exemplo de fluxo de trabalho é executado sempre que os commits são carregados no repositório. A ação usa a propriedade partialFingerprints para determinar se houve alterações. Além de executar quando os commits são carregados, o fluxo de trabalho está programado para ser executado uma vez por semana. Para obter mais informações, consulte "Eventos que acionam fluxos de trabalho".

O fluxo de trabalho mostra um exemplo de execução da ferramenta de análise estática ESLint como uma etapa de um fluxo de trabalho. A etapa Executar ESLint executa a ferramenta ESLint e produz o arquivo results.sarif. Em seguida, o fluxo de trabalho faz o upload do arquivo results.sarif para GitHub usando a ação upload-sarif. Para obter mais informações sobre a criação de um arquivo de fluxo de trabalho, consulte "Introdução ao GitHub Actions".

name: "ESLint analysis"

# Run workflow each time code is pushed to your repository and on a schedule.
# The scheduled workflow runs every Wednesday at 15:45 UTC.
on:
  push:
  schedule:
    - cron: '45 15 * * 3'

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v2
      - name: Run npm install
        run: npm install
      # Runs the ESlint code analysis
      - name: Run ESLint
        # eslint exits 1 if it finds anything to report
        run: node_modules/.bin/eslint build docs lib script spec-main -f node_modules/@microsoft/eslint-formatter-sarif/sarif.js -o results.sarif || true
      # Uploads results.sarif to GitHub repository using the upload-sarif action
      - uses: github/codeql-action/upload-sarif@v1
        with:
          # Path to SARIF file relative to the root of the repository
          sarif_file: results.sarif

Leia mais

Esse documento ajudou você?Política de Privacidade

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.