Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
- A permissão de repositório Segurança Avançada: exibir alertas para o usuário que seleciona Gerar correção.
- Acesso ao pool de agentes Azure Pipelines. O Copilot Autofix enfileira um trabalho de pipeline hospedado pela Microsoft para gerar e publicar a correção. A execução requer uma tarefa paralela disponível. Se todas as tarefas paralelas estiverem em uso, a correção permanece na fila até que haja capacidade disponível.
O Copilot Autofix executa operações de repositório por meio de uma identidade dedicada chamada GitHub Copilot ({organization}), não uma conta do Serviço de Build do projeto ou da coleção. O serviço concede automaticamente à identidade as seguintes permissões:
| Operation | Permissão |
|---|---|
| Acessar o projeto | Exibir informações no nível de projeto |
| Clonar o repositório | Read |
| Criar e efetuar push do branch de correção | Contribuir e criar ramificação |
| Criar e atualizar a solicitação de pull | Colaborar para solicitações de pull |
| Ler o alerta de verificação de código | Segurança Avançada: exibir alertas |
| Adicionar discussões de pull request | Ler e contribuir para discussões em pull requests |
| Atualizar a execução do pipeline | Atualizar informações de compilação |
| Rotular a solicitação de pull | Criar o rótulo Copilot Autofix |
Você não precisa conceder essas permissões a uma conta do Serviço de Build. Se sua organização usar permissões de negação explícitas, verifique se elas não bloqueiam a GitHub Copilot ({organization}) identidade.
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:
- Entre na sua organização do Azure DevOps (
https://dev.azure.com/{yourorganization}). - Vá para a página de configurações do escopo da organização, do projeto ou do repositório que você deseja configurar.
- Na seção Segurança Avançada , abra o painel de recursos de Segurança de Código .
- 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.
- Selecione Aplicar para salvar as alterações.
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.
- Selecione Repos>Advanced Security.
- Selecione a guia Verificação de código e selecione um alerta para abrir sua exibição de detalhes.
- Examine a Localização, Descrição e Recomendação do alerta para entender a constatação.
- Selecione Gerar correção.
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.
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.
Apenas uma correção pode estar ativa para o mesmo alerta e ramificação. Enquanto uma solicitação estiver pendente ou seu pipeline estiver em execução, Gerar correção não estará disponível. Se outra solicitação for enviada ao mesmo tempo, o alerta mostrará que uma correção já está sendo gerada. Você pode gerar outra correção depois que a solicitação ativa tiver sido bem-sucedida ou tiver falhado.
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.
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.
O rótulo Copilot Autofix identifica solicitações de pull de correção automática.
- Abra a solicitação de pull na seção Solicitações de pull relacionadas do alerta ou em Repos>Solicitações de pull.
- Examine a alteração proposta na guia Arquivos em todos os arquivos afetados.
- Edite a alteração se precisar corresponder ao seu estilo de código, convenções de nomenclatura ou requisitos de projeto.
- Aprove e conclua a solicitação de pull por meio do fluxo de trabalho de revisão normal.
Depois de mesclar a solicitação de pull, execute CodeQL no branch de destino mesclado e carregue os novos resultados do SARIF. O Copilot Autofix não executa essa verificação após a mesclagem. O alerta é fechado automaticamente depois que a análise atualizada não relata mais a vulnerabilidade.
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
Correção em andamento
A maioria das execuções de Copilot Autofix é concluída em cerca de 2 a 5 minutos. O tempo de execução pode variar com base na capacidade do pipeline disponível e na complexidade da alteração. Se todos os trabalhos paralelos estiverem em uso, o pipeline permanecerá na fila e o alerta continuará exibindo Correção em andamento até que haja capacidade disponível.
Uma solicitação que permanece pendente antes que um pipeline seja enfileirado falhará após 30 minutos. Um pipeline em fila ou em execução tem um tempo limite de duas horas. O alerta pode parar de atualizar automaticamente antes que o tempo limite de back-end seja atingido. Se o alerta permanecer em andamento:
- Atualize a página de detalhes do alerta.
- Se Ver execução estiver disponível, abra a execução do pipeline e verifique se ela está na fila ou em execução.
- Aguarde até que a solicitação chegue a um estado de êxito ou falha. Não envie outra solicitação enquanto a solicitação existente estiver ativa.
- Se a solicitação falhar, examine a mensagem de falha e selecione Repetir correção depois de resolver a causa.
Solicitação pull criada, mas não vinculada ao alerta
A solicitação de pull pode ser criada com êxito antes de aparecer em solicitações de pull relacionadas. Atualize a página de detalhes do alerta. Se a pull request ainda não estiver vinculada, selecione Repos>Pull requests e procure:
- O rótulo Copilot Autofix.
- Uma ramificação de origem que começa com
copilot-autofix/. - Um título de pull request que faz referência ao alerta de análise de código.
Examine e mescle a solicitação de pull por meio do fluxo de trabalho normal de solicitação de pull, mesmo que o link não apareça no alerta.
As operações de repositório ou de pull request falham
Copilot Autofix executa um clone superficial da ramificação associada ao alerta. Ele não inicializa submódulos git. Ele cria um branch nomeado copilot-autofix/... exclusivamente, envia por push a alteração gerada e abre uma solicitação de pull direcionada ao branch de alerta.
Use Exibir execução no estado de falha do alerta para inspecionar os logs do pipeline. A tabela a seguir lista causas e ações comuns:
| Failure | O que verificar |
|---|---|
| O repositório ou a ramificação não pode ser clonado | Verifique se o repositório e o branch de alerta ainda existem. Para um alerta encontrado em uma solicitação de pull, o branch de origem e a solicitação de pull ainda devem estar ativos. Se o branch tiver sido excluído, execute CodeQL no branch atual e gere uma correção do alerta resultante. |
| A correção depende do código em um submódulo git | Copilot Autofixo não inicializa submódulos. Corrija o alerta manualmente se o contexto de código necessário for armazenado em um submódulo. |
| O branch padrão foi alterado ou o branch de alerta foi excluído | Copilot Autofix tem como alvo a branch associada ao alerta, que não é necessariamente a branch padrão atual. Execute o CodeQL no branch pretendido e gere uma correção do alerta desse branch. |
| Não é possível criar um branch de correção | Verifique as restrições de nome do branch do repositório e as permissões de negação explícitas para a GitHub Copilot ({organization}) identidade. Permitir ramificações com o prefixo copilot-autofix/. Uma nova tentativa cria uma nova ramificação com um nome exclusivo. |
| Uma política de ramificação bloqueia a mudança | As políticas de conclusão de pull request se aplicam ao pull request do Autofix, como a qualquer outro pull request. Satisfaça os revisores necessários e as políticas de validação antes de concluí-lo. Se uma política de repositório bloquear o push inicial, atualize a política para permitir a identidade do Autofix e o prefixo da ramificação. |
| A confirmação gerada não pode ser enviada por push | Verifique as permissões Contribuir e Criar ramificação para a identidade do GitHub Copilot ({organization}), incluindo negações explícitas. Verifique também a validação do e-mail do autor do commit, conforme descrita em Uma correção foi gerada, mas não foi possível fazer commit nem push. |
| A solicitação de pull não pode ser criada | Verifique a permissão Contribute to pull requests e a permissão para criar o rótulo Copilot Autofix para a identidade GitHub Copilot ({organization}). |
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.
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:
- Selecione Configurações do projeto>Repositórios.
- 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.
- Selecione Políticas.
- Em Políticas de Repositório, localize a Validação de email do autor do commit.
- Adicione
noreply@dev.azure.comaos padrões de email permitidos. - Retorne ao alerta de verificação de código e selecione Repita a correção.
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.
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.
Um alerta permanece aberto depois que você mescla a correção
Mesclar um pull request de correção automática não fecha o alerta até que uma análise posterior do CodeQL processe o código mesclado. Se o alerta permanecer aberto:
- Verifique se a solicitação de pull foi mesclada no mesmo branch em que o alerta foi detectado.
- Confirme se uma varredura do CodeQL foi executada após a mesclagem e analisou o commit mesclado.
- Confirme se a varredura enviou com êxito os resultados SARIF para o repositório e a ramificação corretos.
- Examine os novos resultados para verificar se a vulnerabilidade não foi mais detectada.
- Se a vulnerabilidade ainda estiver presente, atualize a correção e execute o CodeQL 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.
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.