Skip to main content

Alertas de varredura de código de triagem em pull requests

Quando code scanning identifica um problema em um pull request, você poderá revisar o código destacado e resolver o alerta.

Quem pode usar esse recurso?

If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve code scanning alerts for that repository.

A Code scanning está disponível para todos os repositórios públicos do GitHub.com. Para usar code scanning em um repositório privado pertencente a uma organização, você precisa ter um licença do GitHub Advanced Security. Para obter mais informações, confira "Sobre a Segurança Avançada do GitHub".

Sobre os resultados de code scanning em pull requests

Em repositórios onde code scanning está configurado como uma verificação de pull request, code scanning verifica o código no pull request. Por padrão, isso é limitado a pull requests que visam o branch-padrão ou branches protegidos, mas você pode alterar esta configuração em GitHub Actions ou em um sistema de CI/CD de terceiros. Se as linhas de código alteradas na solicitação de pull gerarem alertas do code scanning, os alertas serão relatados nos locais a seguir na solicitação de pull.

  • Verificar os resultados na solicitação de pull
  • A guia Conversa da solicitação de pull, que faz parte de uma revisão de solicitação de pull
  • A guia Arquivos alterados da solicitação de pull

Se você tiver permissão de gravação no repositório, poderá ver todos os alertas existentes da code scanning na guia Segurança. Para obter informações sobre os alertas do repositório, confira "Gerenciamento de alertas de varredura de código para seu repositório".

Nos repositórios em que a code scanning estiver configurada para verificar o código sempre que ele é enviado por push, a code scanning também mapeará os resultados a qualquer solicitação de pull aberta e adicionará os alertas como anotações nos mesmos lugares que as outras verificações de solicitação de pull. Para obter mais informações, confira "Como personalizar sua configuração avançada para a verificação de código".

Se a solicitação de pull for direcionada a um branch protegido que usa code scanning e o proprietário do repositório tiver configurado as verificações de status necessárias, a verificação de "resultados do Code scanning" deverá ser aprovada para que você possa mesclar a solicitação de pull. Para obter mais informações, confira "Sobre branches protegidos".

Sobre code scanning como uma verificação de pull request

Há muitas opções para configurar code scanning como uma verificação de solicitação de pull. Portanto, a configuração exata de cada repositório irá variar e alguns terão mais de uma verificação.

Verificação de resultados do Code scanning

Para todas as configurações do code scanning, a verificação que contém os resultados do code scanning é: Resultados do Code scanning . Os resultados de cada ferramenta de análise utilizada são mostrados separadamente. Os novos alertas nas linhas de código alteradas na solicitação de pull serão mostrados como anotações.

Para ver o conjunto completo de alertas do branch analisado, clique em Exibir todos os alertas do branch. Isso abre a exibição completa de alerta onde você pode filtrar todos os alertas sobre o branch por tipo, gravidade, tag, etc. Para saber mais, confira "Gerenciamento de alertas de varredura de código para seu repositório".

Captura de tela da verificação de resultados de Code scanning em uma solicitação de pull. O link "Exibir todos os alertas do branch" está realçado com um contorno laranja escuro.

Falhas de verificação de resultados do Code scanning

Se a verificação de resultados de code scanning encontrar problemas com uma severidade error, critical ou high, a verificação falhará e o erro será relatado nos resultados da verificação. Se todos os resultados encontrados por code scanning tiverem gravidades menores, os alertas serão tratados como avisos ou observações e a verificação será considerada bem-sucedida.

Captura de tela da caixa de mesclagem de uma solicitação de pull. Ao lado da verificação "Resultados da verificação de código/CodeQL", a mensagem "1 novo alerta, incluindo 1 segurança de alta gravidade v…" é exibida

Você pode substituir o comportamento padrão nas configurações do repositório especificando o nível de severidades e as severidades de segurança que causarão falha da solicitação de pull. Para obter mais informações, confira "Como personalizar sua configuração avançada para a verificação de código".

Outras verificações de code scanning

Dependendo da sua configuração, você poderá ver verificações adicionais em execução em pull requests com code scanning configurados. Estes são geralmente fluxos de trabalho que analisam o código ou que fazem o upload dos resultados de code scanning. Essas verificações são úteis para a resolução de problemas em caso de problemas com a análise.

Por exemplo, se o repositório usar o Fluxo de trabalho de análise do CodeQL, uma verificação CodeQL/Analisar (LINGUAGEM) será executada para cada linguagem antes que a verificação de resultados seja executada. A verificação de análise pode falhar se houver problemas de configuração ou se o pull request altera a criação para uma linguagem que a análise precisa para compilar (por exemplo, C/C++, C#, ou Java).

Assim como em outras verificações de solicitação de pull, você pode ver todos os detalhes da falha na verificação na guia Verificações. Para saber mais sobre configuração e solução de problemas, confira "Como personalizar sua configuração avançada para a verificação de código" ou "Solucionar problemas da varredura de código".

Visualizando um alerta no seu pull request

Você pode ver os alertas do code scanning que estão dentro da comparação das alterações introduzidos em uma solicitação de pull na guia Conversa. O Code scanning publica uma revisão da solicitação de pull que mostra cada alerta como uma anotação nas linhas de código que dispararam o alerta. Você pode comentar os alertas, ignorar os alertas e ver os caminhos para os alertas, diretamente nas anotações. Você pode ver os detalhes completos de um alerta clicando no link "Mostrar mais detalhes", que acessa a página de detalhes do alerta.

Captura de tela que mostra uma anotação de alerta na guia "Conversas" de uma solicitação de pull. O link "Mostrar mais detalhes" está realçado com um contorno laranja escuro.

Você também pode ver todos os alertas do code scanning que estão dentro da comparação das alterações introduzidas na solicitação de pull na guia Arquivos alterados.

Se você adicionar uma nova configuração de verificação de código na solicitação de pull, verá um comentário na solicitação de pull direcionando você para a guia Segurança do repositório para que você possa ver todos os alertas no branch da solicitação de pull. Para obter mais informações sobre como exibir os alertas de um repositório, confira "Gerenciamento de alertas de varredura de código para seu repositório".

Se você tiver permissão de gravação para o repositório, algumas anotações conterão links com contexto adicional para o alerta. No exemplo acima, na análise do CodeQL, clique no valor fornecido pelo usuário para ver em que ponto os dados não confiáveis entram no fluxo de dados (isso é conhecido como a origem). Nesse caso, você também pode ver o caminho completo do código-fonte do código que usa os dados (o coletor) clicando em Mostrar caminhos. Isto faz com que seja fácil verificar se os dados não são confiáveis ou se a análise não reconheceu uma etapa de sanitização de dados entre a fonte e o destino. Para obter informações sobre como analisar o fluxo de dados usando o CodeQL, confira "Sobre a análise de fluxo de dados".

Para ver mais informações sobre um alerta, os usuários com a permissão de gravação podem clicar no link Mostrar mais detalhes mostrado na anotação. Isso permite que você veja todos os contextos e metadados fornecidos pela ferramenta em uma exibição de alerta. No exemplo abaixo, você pode ver tags que mostram a gravidade, o tipo e as enumerações de fraquezas comuns relevantes (CWEs) para o problema. A vista mostra também quais commits introduziram o problema.

O status e os detalhes na página de alerta refletem apenas o estado do alerta no branch padrão do repositório, mesmo que o alerta exista em outros branches. Você pode ver o status do alerta em branches não padrão na seção Branches afetados no lado direito da página de alerta. Se um alerta não existir no branch padrão, o status do alerta será exibido como "na solicitação de pull" ou "no branch" e será cinza.

Na exibição detalhada de um alerta, algumas ferramentas da code scanning, como a análise do CodeQL, também incluem uma descrição do problema e um link Mostrar mais para obter diretrizes sobre como corrigir seu código.

Captura de tela que mostra a descrição de um alerta da code scanning. Um link rotulado "Mostrar mais" está realçado com um contorno laranja escuro.

Como comentar um alerta em uma solicitação de pull

Você pode comentar nos alertas do code scanning que aparecem em uma solicitação de pull. Os alertas aparecem como anotações na guia Conversa de uma solicitação de pull, fazendo parte de uma revisão de solicitação de pull, e também são mostrados na guia Arquivos alterados.

Você pode exigir que todas as conversas em uma solicitação de pull, incluindo as relacionadas a alertas de code scanning sejam resolvidas antes que a solicitação de pull possa ser mesclada. Para obter mais informações, confira "Sobre branches protegidos".

Corrigir de um alerta no seu pull request

Qualquer pessoa com acesso push a um pull request pode corrigir um alerta de code scanning que seja identificado nesse pull request. Se você fizer commit de alterações na solicitação do pull request, isto acionará uma nova execução das verificações do pull request. Se suas alterações corrigirem o problema, o alerta será fechado e a anotação removida.

Trabalhar com sugestões de correção automática para alertas

Observação: a correção automática do GitHub para o code scanning está em beta. A funcionalidade e a documentação estão sujeitas a alterações. Durante essa fase, o recurso está restrito a alertas JavaScript e TypeScript identificados pelo CodeQL. Se você tiver uma conta corporativa e usar o GitHub Advanced Security, poderá entrar na lista de espera para recursos de IA do GitHub Advanced Security.

A correção automática é uma expansão da plataforma AI de code scanning que fornece recomendações direcionadas para ajudar você a corrigir alertas de code scanning em solicitações de pull. As possíveis correções são geradas automaticamente por modelos de linguagem grande (LLMs) usando dados da base de código, da solicitação de pull e da análise do CodeQL.

Captura de tela da falha de verificação para um alerta de code scanning em uma solicitação de pull. O primeiro parágrafo da sugestão de "correção automática" para o alerta está destacado de laranja escuro.

Gerar sugestões de correção automática e publicar em uma solicitação de pull

Quando a correção automática está habilitada para um repositório, os alertas são exibidos em solicitações de pull normalmente e as informações de quaisquer alertas encontrados pelo CodeQL são enviadas automaticamente ao LLM para processamento. Quando a análise do LLM é concluída, todos os resultados são publicados como comentários sobre alertas relevantes. Para obter mais informações, confira "Sobre a correção automática da verificação de código do CodeQL".

Nota: A correção automática oferece suporte a um subconjunto de consultas do CodeQL. Quando a análise estiver concluída, todos os resultados relevantes serão publicados na solicitação de pull de uma só vez. Se pelo menos um alerta em sua solicitação de pull tiver uma sugestão de correção automática, você deve presumir que o LLM terminou de identificar possíveis correções para o seu código.

Normalmente, quando você sugere alterações em uma solicitação de pull, seu comentário contém alterações para um único arquivo que é alterado na solicitação de pull. A captura de tela a seguir mostra um comentário de correção automática que sugere alterações no arquivo index.js em que o alerta é exibido. Como a possível correção exige uma nova dependência no escape-html, o comentário também sugere adicionar essa dependência ao arquivo package.json, mesmo que a solicitação de pull original não faça alterações nesse arquivo.

Captura de tela da sugestão de correção automática para um alerta mostrando a explicação e a correção sugerida para o arquivo atual. As alterações sugeridas para um arquivo adicional, "package.json", são descritas em laranja escuro.

Avaliar e confirmar uma sugestão de correção automática

Cada sugestão de correção automática demonstra uma possível solução para um alerta de code scanning em sua base de código. Avalie as alterações sugeridas para determinar se elas são uma boa solução para sua base de código e para garantir que elas mantenham o comportamento pretendido. Para obter informações sobre as limitações de sugestões de correção automática, confira "Limitações de sugestões de correção automática" e "Atenuar as limitações de sugestões de correção automática" em "Sobre correção automática para code scanning do CodeQL".

  1. Clique em Editar para exibir as opções de edição e selecione o seu método preferencial.
    • Selecione Editar com codespaces para abrir um codespace mostrando sua ramificação com a correção sugerida aplicada.
    • Selecione Editar localmente com GitHub CLI para exibir instruções para aplicar a correção sugerida a qualquer repositório ou ramificação local.
  2. Teste e modifique a correção sugerida conforme necessário.
  3. Quando terminar de testar as alterações, confirme-as e envie-as para a ramificação.
  4. O envio das alterações para sua ramificação acionará todos os testes usuais para sua solicitação de pull. Confirme se os testes de unidade ainda são aprovados e se o alerta de code scanning agora foi corrigido.

Ignorar uma sugestão de correção automática

Se você decidir ignorar uma sugestão de correção automática, clique em Ignorar sugestão no comentário para ignorar a correção sugerida.

Ignorar um alerta no seu pull request

Uma forma alternativa de fechar um alerta é ignorá-lo. Você pode descartar um alerta se não acha que ele precisa ser corrigido. Por exemplo, um erro no código que é usado apenas para testes ou quando o esforço de corrigir o erro é maior do que o benefício potencial de melhorar o código. Se você tiver a permissão de gravação no repositório, um botão Ignorar alerta estará disponível nas anotações de código e no resumo de alertas. Quando você clicar em Ignorar alerta, precisará escolher um motivo para fechar o alerta.

Captura de tela da falha de verificação para um alerta de verificação de código em uma solicitação de pull. O botão "Ignorar alerta" na falha de verificação está realçado em laranja escuro. O menu suspenso "Ignorar alerta" é exibido. É importante escolher o motivo apropriado no menu suspenso, pois isso pode afetar se uma consulta continua sendo incluída em análise futura. Opcionalmente, você pode comentar sobre um alerta ignorado para registrar o contexto dele. O comentário sobre o alerta ignorado é adicionado à linha do tempo do alerta e pode ser usado como justificativa em auditorias e relatórios. Você pode recuperar ou definir um comentário usando a API REST de verificação de código. O comentário está contido no dismissed_comment do ponto de extremidade alerts/{alert_number}. Para obter mais informações, confira "Pontos de extremidade da API REST para varredura de código".

Se você ignorar um alerta de CodeQL como um falso resultado positivo, por exemplo, porque o código usa uma biblioteca de sanitização incompatível, considere contribuir para o repositório de CodeQL e melhorar a análise. Para obter mais informações sobre CodeQL, confira "Contribuir para CodeQL".

Para obter mais informações sobre ignorar alertas, consulte "Gerenciamento de alertas de varredura de código para seu repositório".