Correção automática do Copilot para verificação de código (Versão prévia)

Copilot Autofix é um recurso com tecnologia de IA do GitHub Advanced Security para Azure DevOps que gera correções sugeridas para alertas de verificação de código. Quando o CodeQL identifica uma vulnerabilidade ou erro de codificação, você pode gerar uma correção para o alerta diretamente da guia Segurança Avançada. Copilot Autofixo usa o agente de codificação Copilot para produzir a correção e abre uma solicitação pull com a alteração proposta, para que você possa revisá-la, editá-la e mesclá-la por meio do fluxo de trabalho normal de solicitação de pull.

Note

Esse recurso está em versão prévia pública limitada. Microsoft não está aceitando usuários adicionais para a versão prévia.

A funcionalidade pode ser alterada ou removida sem aviso prévio. Os recursos de visualização não têm SLA (Contrato de Nível de Serviço) e suporte limitado.

GitHub Advanced Security for Azure DevOps funciona com Azure Repos. Para usar a Segurança Avançada do GitHub com repositórios do GitHub, consulte a Segurança Avançada do GitHub.

Pré-requisitos

Categoria Requirements
Permissões – Para exibir um resumo de todos os alertas de um repositório: permissões de colaborador para o repositório.
– Para ignorar alertas na Segurança Avançada: permissões de administrador do projeto.
– Para gerenciar permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerenciar a permissão de configurações definida como Permitir.

Para obter mais informações sobre permissões de Segurança Avançada, consulte Gerenciar permissões de Segurança Avançada.

  • Verificação de código configurada para seu repositório, usando configuração padrão ou configuração avançada.
  • Pelo menos um alerta de análise de código do CodeQL.

Sobre Copilot Autofixo

Copilot Autofix combina o poder de análise do CodeQL com o grande modelo de linguagem que impulsiona o agente de programação do Copilot. Quando você gera uma correção para um alerta de análise de código com suporte, o Copilot Autofix analisa o alerta e o código ao redor e, em seguida, abre um pull request que contém:

  • Uma alteração de código sugerida que aborda a vulnerabilidade subjacente.
  • Uma descrição do alerta que está sendo corrigido, incluindo a ID do alerta, a gravidade e um resumo da alteração.

Como a correção sugerida considera o contexto mais amplo da base de código, a alteração pode abranger mais do que a única linha em que o alerta foi gerado e pode incluir alterações em outros arquivos quando necessário.

Note

Os dados tratados pelo Copilot Autofix não são usados para treinar grandes modelos de linguagem (LLMs).

Importante

As sugestões de correção automática do Copilot são geradas por um modelo de IA, e não há garantia de que estejam corretas, completas ou seguras. Sempre examine a solicitação de pull com cuidado, valide se ela resolve o alerta sem introduzir novos problemas e teste suas alterações antes de mesclá-las.

Idiomas com suporte

Copilot Autofixo dá suporte aos mesmos idiomas que o CodeQL analisa para verificação de código, incluindo C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby e Swift. Para obter a lista atual de idiomas compatíveis com CodeQL, consulte o suporte a idiomas e consultas.

Billing

O Copilot Autofix está incluído na sua licença do GitHub Advanced Security for Azure DevOps. A geração de uma correção consome créditos de IA do medidor de cobrança Azure da sua organização.

Cada geração de correção consome tokens, que incluem tokens de entrada para o contexto de código enviado ao modelo, tokens de saída para a alteração sugerida e tokens armazenados em cache que reutilizam o contexto existente.

Para manter a cobrança simples, esses tokens são convertidos em uma unidade padrão chamada GitHub crédito de IA, em que 1 crédito é igual a US$ 0,01. Os encargos são cobrados na assinatura Azure vinculada à sua organização Azure DevOps e aparecem como um medidor separado em Gerenciamento de Custos do Azure.

O custo de cada correção varia com o tamanho do contexto de código ao redor e a complexidade da alteração.

Para monitorar seus custos diários, acesse Assinatura>Gerenciamento de Custos>análise de custos no portal do Azure.

Habilitar Correção automática do Copilot

Você pode habilitar o Copilot Autofix no nível da organização, do projeto ou do repositório. Quando você habilita o Autofixo em um escopo mais amplo, a configuração se aplica a todos os repositórios dentro desse escopo. Escolha onde configurar o Autofixo com base nos repositórios aos quais você deseja que a configuração se aplique:

Scope Onde configurar o Autofixo
Organização Selecione Configurações da organização> para habilitar o Autofix em todos os repositórios da organização.
Projeto Selecione Configurações do projeto>Repositórios>Todos os repositórios para habilitar o Autofix em todos os repositórios do projeto.
Repositório Selecione Configurações do projeto> e, em seguida, selecione um repositório para habilitar o Autofix somente para esse repositório.

Para ativar o Copilot Autofix:

  1. Entre na sua organização do Azure DevOps (https://dev.azure.com/{yourorganization}).
  2. Vá para a página de configurações do escopo da organização, do projeto ou do repositório que você deseja configurar.
  3. Na seção Segurança Avançada , abra o painel de recursos de Segurança de Código .
  4. Selecione a caixa de seleção Autofix para alertas de verificação de código para criar correções automáticas para alertas de verificação de código, gerados pelo agente de codificação Copilot.
  5. Selecione Aplicar para salvar as alterações.

Captura de tela do painel de recursos de Segurança de Código com a caixa de seleção Correção automática para alertas de verificação de código realçada.

O CodeQL já deve estar em execução e gerando alertas para o repositório. Para obter mais informações, consulte Configurar a verificação de código e Configurar os recursos do GitHub Advanced Security.

Gerar uma solução para um alerta

Depois de ativar o Copilot Autofix, você pode gerar uma correção a partir de qualquer alerta de verificação de código compatível.

  1. Selecione Repos>Advanced Security.
  2. Selecione a guia Verificação de código e selecione um alerta para abrir sua exibição de detalhes.
  3. Examine a Localização, Descrição e Recomendação do alerta para entender a constatação.
  4. Selecione Gerar correção.

Captura de tela de uma exibição de detalhes de alerta de verificação de código com o botão Gerar correção no canto superior direito.

Enquanto o Copilot Autofix trabalha na correção, a visão detalhada do alerta mostra que a correção está em andamento. O Copilot Autofix abre um pull request assim que a correção estiver pronta.

Captura de tela da visualização de detalhes do alerta de análise de código mostrando o Copilot Autofix criando uma correção antes de abrir um pull request.

Copilot Autofix gera a correção e abre um pull request a partir de uma ramificação chamada copilot-autofix/.... A pull request recebe a tag Copilot Autofix, que você pode usar para identificar pull requests do Autofix na lista de pull requests.

Para alertas do CodeQL, a solicitação de pull é exibida automaticamente em solicitações de pull relacionadas no modo de exibição de detalhes do alerta e continua a ser atualizada conforme a geração e o progresso da conclusão, portanto, você não precisa atualizar a página.

Captura de tela da visão detalhada do alerta de varredura de código mostrando uma solicitação de pull ativa do Autofix em solicitações de pull relacionadas.

Se o Copilot Autofix não produzir nenhuma alteração de código para o alerta, ele não criará uma branch nem um pull request, e não vinculará um pull request na exibição de detalhes do alerta. Nesse caso, corrija o alerta manualmente. Para obter mais informações, consulte Correção não está disponível.

Revisar e mesclar a correção

A pull request que o Copilot Autofix abre se comporta como qualquer outra pull request do Azure Repos. Sua descrição resume o alerta que a correção aborda.

Captura de tela de um pull request criado pelo Copilot Autofix, mostrando o ID do alerta, a gravidade e os detalhes da correção na descrição.

O rótulo Copilot Autofix identifica solicitações de pull de correção automática.

  1. Abra a solicitação de pull na seção Solicitações de pull relacionadas do alerta ou em Repos>Solicitações de pull.
  2. Examine a alteração proposta na guia Arquivos em todos os arquivos afetados.
  3. Edite a alteração se precisar corresponder ao seu estilo de código, convenções de nomenclatura ou requisitos de projeto.
  4. Aprove e conclua a solicitação de pull por meio do fluxo de trabalho de revisão normal.

Depois que a solicitação de pull se mescla e a próxima execução de verificação de código for concluída, o alerta será fechado automaticamente se a correção remover a vulnerabilidade subjacente.

Dica

Uma correção gerada é um ponto de partida, não uma resposta final. Trate a solicitação de pull como qualquer outra alteração: examine-a, teste-a e solicite revisores adicionais conforme necessário antes de mesclar.

Solucionar problemas do Copilot Autofix

Uma correção foi gerada, mas não pôde ser confirmada ou enviada por push

Copilot Autofix usa noreply@dev.azure.com como o e-mail do autor do commit. Se uma política de validação do e-mail do autor do commit não permitir esse endereço, o Copilot Autofix poderá gerar a alteração no código, mas não poderá fazer o commit nem fazer push para criar o pull request.

A visualização de detalhes do alerta mostra um erro que identifica o email bloqueado do autor do commit.

Captura de tela de um alerta de verificação de código mostrando que Copilot Autofixo não pôde confirmar uma correção gerada porque o email do autor de confirmação não é permitido.

Adicione noreply@dev.azure.com aos padrões de e-mail permitidos na política de validação do e-mail do autor do commit:

  1. Selecione Configurações do projeto>Repositórios.
  2. Selecione Todos os Repositórios para atualizar a política no nível do projeto ou selecione o repositório que tem a política.
  3. Selecione Políticas.
  4. Em Políticas de Repositório, localize a Validação de email do autor do commit.
  5. Adicione noreply@dev.azure.com aos padrões de email permitidos.
  6. Retorne ao alerta de verificação de código e selecione Repita a correção.

Captura de tela das configurações de política do repositório em que você adiciona o endereço de email do Copilot Autofix aos padrões permitidos de email do autor do commit.

Uma execução falha

Se uma execução do Copilot Autofix não puder ser concluída, o alerta mostrará uma falha em destaque para que você veja rapidamente que a execução não foi concluída. No estado de falha, você pode repetir a execução para gerar uma nova correção.

Captura de tela de um alerta de análise de código mostrando uma execução do Copilot Autofix em estado de falha, com a opção de tentar novamente a execução.

Uma execução pode falhar por motivos transitórios ou quando a execução não produz uma alteração de código utilizável. Repita a execução para gerar a correção novamente.

Correção não está disponível

O Copilot Autofix não consegue gerar uma correção para todos os alertas. Uma correção pode não estar disponível quando:

  • O tipo de alerta não é compatível com o Copilot Autofix no momento.
  • Copilot determina que o alerta pode ser um falso positivo.
  • Uma consulta personalizada ou uma ferramenta de terceiros, em vez de CodeQL, gera o alerta.
  • O Copilot Autofix é executado, mas não produz alterações no código. Nesse caso, nenhuma solicitação de branch ou pull é criada.

Se o Copilot Autofix determinar que o alerta pode ser um falso positivo e não gerar nenhuma alteração, a exibição de detalhes do alerta mostra o resultado. Você pode revisar a execução ou tentar aplicar a correção novamente.

Captura de tela da exibição de detalhes do alerta de verificação de código mostrando que Copilot determinou que o alerta poderia ser um falso positivo e não produziu nenhuma correção, com opções para exibir a execução ou repetir a correção.

Quando uma correção não estiver disponível, use as seções Recomendação e Exemplo do alerta para corrigi-lo ou ignorar o alerta manualmente. Para mais informações, consulte os Detalhes de alerta.