Copilot Autofix para alertas de segurança de código (Pré-visualização)

O Copilot Autofix fornece remediação agential para alertas de análise de código e vulnerabilidades de análise de dependências em GitHub Advanced Security for Azure DevOps. Abre um alerta compatível e seleciona Gerar correção. O agente de codificação Copilot pode explorar o contexto relevante do repositório, rever e refinar as alterações propostas, e abrir um pull request com uma solução sugerida.

Revês, testas e juntas a alteração através do teu fluxo de trabalho normal de pull request. Os passos são os mesmos para ambos os tipos de alerta. Escolha a lista de alertas relevante para começar e depois use o scanner correspondente para verificar a correção combinada.

Note

Esta funcionalidade está em pré-visualização pública limitada. A Microsoft não está atualmente a aceitar utilizadores adicionais para a pré-visualização.

Funcionalidades podem mudar ou ser removidas sem aviso prévio. As funcionalidades de pré-visualização não têm Acordo de Nível de Serviço (SLA) e têm suporte limitado.

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

Prerequisites

Category Requirements
Permissões - Para visualizar um resumo de todos os alertas para um repositório: Colaborador permissões para o repositório.
- Para dispensar alertas em Segurança Avançada: permissões de administrador de projeto.
- Para gerir permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerir configurações permissões definidas como Permitir.

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

  • A digitalização de código ou a digitalização de dependências configurada e a produzir alertas para o seu repositório.
  • Pelo menos um alerta suportado.
  • A permissão no repositório Segurança Avançada: ver alertas para o utilizador que seleciona Gerar correção.
  • Acesso ao pool de agentes do Azure Pipelines. O Copilot Autofix coloca na fila uma tarefa de pipeline hospedada 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 fica em fila de espera até haver capacidade disponível.

O Copilot Autofix realiza operações de repositório usando uma identidade dedicada chamada GitHub Copilot ({organization}), e não uma conta de Build Service de projeto ou coleção. O serviço concede automaticamente à identidade as seguintes permissões:

Operation Permissão
Aceda ao projeto Exibir informações no nível do projeto
Clonar o repositório Leitura
Criar e empurrar o ramo de correção Contribuir e Criar ramo
Crie e atualize o pull request Contribuir para pedidos Pull
Leia o alerta Segurança Avançada: ver alertas
Adicionar discussões de pull requests Leia e contribua para discussões sobre pull requests
Atualizar a execução do pipeline Atualizar informações de compilação
Identifique o pedido de pull Crie o rótulo Copilot Autofix

Não precisas de conceder estas permissões a uma conta do Build Service. Se a sua organização usa permissões de negação explícita, verifique se não bloqueiam a identidade GitHub Copilot ({organization}).

Como funciona o Autofix autónomo

O Agentic Autofix utiliza as conclusões do alerta e o contexto do seu repositório, em vez de se basear apenas na localização do código reportada. O agente de codificação Copilot pode usar instruções personalizadas registadas no repositório e competências relevantes para compreender os seus padrões de codificação, arquitetura e padrões de remediação. Pode rever e refinar a alteração proposta antes de abrir um pull request que contenha:

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

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

Note

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

Important

As sugestões do Copilot Autofix são geradas por um modelo de IA e não garantem que sejam corretas, completas ou seguras. Revise sempre cuidadosamente o pull request, valide que resolve o alerta sem introduzir novos problemas e teste as alterações antes de as fundir.

Alertas suportados

Tipo de alerta Suporte em pré-visualização pública limitada
Análise de código Alertas da CodeQL e de ferramentas de análise de código de terceiros.
Análise de dependência Alertas de vulnerabilidades de segurança. As descobertas de malware não estão incluídas.
Escaneamento de segredos Não suportadas.

Para qualquer tipo de alerta suportado, o Copilot Autofix propõe-lhe uma alteração para rever. Não garante uma solução para todos os problemas detetados. Para mais informações, veja A correção não está disponível.

Forneça instruções e skills para o repositório

Dá ao agentic Autofix o contexto que queres que ele considere ao gerar uma correção. Arquiva instruções e competências personalizadas no repositório em locais suportados .github ou .agents. Estes ficheiros podem ajudar o agente de codificação do Copilot a seguir os padrões de codificação da sua equipa e os fluxos de trabalho estabelecidos para remediação.

Adicionar padrões de codificação a instruções personalizadas

Utilize instruções personalizadas para todo o repositório, como .github/copilot-instructions.md, para descrever como as alterações devem encaixar no seu projeto. Inclua orientações sobre convenções de nomenclatura, bibliotecas aprovadas, limites arquitetónicos e como construir e testar alterações.

Por exemplo, se a sua equipa precisa de uma função utilitária partilhada de validação de entradas, descreva esse requisito nas instruções. Não presuma que o agente vai inferi-lo pelo alerta.

# Coding standards

- Use the existing input-validation helpers instead of adding new validation logic.
- Follow the naming conventions in the surrounding code.
- Keep dependency changes scoped to the vulnerability being fixed.
- Update the relevant tests when a fix changes behavior.
- Run the documented build and test commands before proposing a change.

Utilize os nomes e localizações dos ficheiros suportados pelo Copilot. Um ficheiro nomeado custom-instructions.md não estabelece, apenas pelo seu nome, um ficheiro de instruções Copilot a nível de repositório. Para o formato de ficheiro aplicável a todo o repositório, consulte Adicionar instruções personalizadas de repositório para o GitHub Copilot.

Adicionar competências para tarefas de remediação repetíveis

As capacidades do repositório podem fornecer instruções, scripts e recursos de apoio específicos para cada tarefa. Armazene uma habilidade num diretório como .github/skills/<skill-name>/ ou .agents/skills/<skill-name>/, com as suas instruções em SKILL.md.

Por exemplo, uma competência de atualização de dependência pode descrever o seu procedimento de atualização de pacotes e as verificações de compatibilidade. Uma competência de remediação de código pode descrever como usar as suas bibliotecas de segurança aprovadas. O Agentic Autofix pode referenciar competências relevantes como parte da geração de uma correção; nem todas as competências se aplicam a todos os alertas. Para o formato das competências, veja Sobre as competências do agente.

Important

As instruções e competências do repositório fornecem contexto adicional, não uma garantia de que uma correção gerada cumpra todos os requisitos. Revise a alteração proposta de acordo com os seus padrões, faça as verificações de validação e verifique se a vulnerabilidade foi resolvida antes de fazer merge.

Billing

O Copilot Autofix está incluído na sua licença GitHub Advanced Security for Azure DevOps. Gerar uma correção consome créditos de IA do contador de faturação 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 para o modelo, tokens de saída para a alteração sugerida e tokens em cache que reutilizam contexto existente.

Para simplificar a faturação, estes tokens são convertidos numa unidade padrão chamada crédito GitHub AI, onde 1 crédito equivale a $0,01 USD. As cobranças são faturadas para a subscrição do Azure associada à sua organização Azure DevOps e aparecem como um contador separado no Gestão de Custos do Azure.

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

Note

As definições orçamentais do GitHub Copilot e os limites de utilizador configurados no GitHub não se aplicam ao gasto do medidor Autofix do Copilot no Azure DevOps. Esta utilização é faturada através da subscrição do Azure ligada à sua organização Azure DevOps, não através da faturação do GitHub Copilot.

Ver custos do Autofix por projeto

O Copilot Autofix suporta etiquetas de organização e de projeto, para que possa filtrar as suas taxas de utilização e comparar custos entre projetos Azure DevOps.

  1. No portal Azure, abra a subscrição associada à sua organização Azure DevOps. Consulte Gestão de custos>Análise de custos.
  2. Selecione o intervalo de datas que pretende rever.
  3. Adicione um filtro Meter e selecione Crédito de IA para AzDO GAC. Este filtro isola os encargos de utilização do Autofix de outros custos de subscrição.
  4. Adicione um filtro de etiquetas para _organizationname_ e selecione as organizações Azure DevOps cujos custos pretende visualizar.
  5. Defina Agrupar por para a tag _projectname_ para ver a divisão de custos do Autofix por projeto.

Captura de ecrã da análise de custos do Azure filtrada para o contador de Crédito de IA para o AzDO GAC e uma organização, com custos agrupados por projeto.

Para rever datas individuais, defina Granularidade para Diário e mude a visualização para Tabela. Mantém os filtros de medidor, organização e o agrupamento dos projetos. Também podes filtrar a _projectname_ tag para limitar a tabela a projetos específicos.

Captura de ecrã da análise de custos do Azure em vista de tabela diária mostrando os custos Autofix por data e projeto, filtrada para o Crédito de IA para o contador AzDO GAC, uma organização e projetos selecionados.

Ativar o Copilot Autofix

Pode ativar o Copilot Autofix ao nível da organização, projeto ou repositório. Quando ativas o Autofix num âmbito mais amplo, a definição aplica-se a todos os repositórios dentro desse âmbito. Escolha onde configurar o Autofix com base nos repositórios a que quer que a definição se aplique:

Scope Onde configurar o Autofix
Organization Selecione Definições> daOrganização Repositórios para ativar o Autofix para todos os repositórios da organização.
Projeto Selecione Definições do projeto>Repositórios>Todos os repositórios para ativar o Autofix para todos os repositórios no projeto.
Repositório Selecione Definições> do ProjectRepositorios e depois selecione um repositório para ativar o Autofix apenas para esse repositório.

Para ativar o Copilot Autofix:

  1. Entre na sua organização do Azure DevOps (https://dev.azure.com/{yourorganization}).
  2. Vai à página de definições do âmbito da organização, projeto ou repositório que queres configurar.
  3. Na secção de Segurança Avançada, procure "Autofix para alertas de segurança". Se usar o Code Security autónomo, selecione Opções para abrir o painel de funcionalidades do Code Security.
  4. Selecione Autofix para alertas de segurança. A mesma configuração permite o Copilot Autofix para alertas de análise de código suportados e de análise de dependências.
  5. Se usar o painel de funcionalidades de Segurança do Código , selecione Aplicar para guardar as suas alterações.

Para capturas de ecrã tanto das definições de Segurança Avançada incluídas como de Segurança de Código independente, consulte Configurar Copilot Autofix.

Ativar o Autofix não configura a análise nem gera correções automaticamente. Primeiro, configure a varredura de código ou a varredura de dependências. Depois, pede uma correção a partir de um alerta compatível.

Gerar uma correção para um alerta

Depois de ativar o Copilot Autofix, use os mesmos passos para um alerta de análise de código suportado ou alerta de vulnerabilidade de dependência.

  1. Selecione Repos>Segurança Avançada.
  2. Abra a lista de alertas de varredura de código ou varredura de dependências e depois selecione um alerta para abrir a sua vista de detalhes.
  3. Reveja o resultado, o código ou dependência afetado e as orientações de remediação.
  4. Selecione Gerar correção.

Os seguintes exemplos de análise de código ilustram o fluxo de trabalho partilhado. Um exemplo de varredura de dependências mostra um pull request gerado mais adiante nesta secção.

Captura de ecrã de uma vista detalhada de alerta de leitura de código com o botão Gerar correção no canto superior direito.

Enquanto o Copilot Autofix processa a correção, a vista de detalhes do alerta mostra que a correção está em curso. O Copilot Autofix abre um pull request quando a correção está pronta.

Captura de ecrã da visualização detalhada de alertas de leitura de código a mostrar o Copilot Autofix a trabalhar numa correção antes de abrir um pull request.

O Copilot Autofix gera a correção e abre um pull request a partir de um ramo com o nome copilot-autofix/.... O pull request está identificado com uma tag Copilot Autofix, que pode usar para identificar os pull requests Autofix na lista de pull requests.

Pode estar ativa apenas uma correção para o mesmo alerta e ramo. Enquanto uma solicitação estiver pendente ou o respetivo pipeline estiver em execução, Gerar correção não está disponível. Se outro pedido for submetido ao mesmo tempo, o alerta mostra que já está a ser gerada uma correção. Podes gerar outra correção depois de o pedido ativo ter sucesso ou falhar.

Para alertas do CodeQL, o pull request aparece automaticamente em Pull requests relacionados na vista de detalhes do alerta e continua a atualizar-se à medida que a geração e a conclusão progridem, pelo que não precisa de atualizar a página.

Captura de ecrã da vista detalhada de alertas de leitura de código mostrando um pull request Autofix ativo em Pull requests relacionados.

O exemplo seguinte de análise de dependências mostra um pull request ativo Autofix para um pacote vulnerável em Pull requests relacionados.

Captura de ecrã de um alerta de varredura de dependências a mostrar um pull request ativo Autofix para uma vulnerabilidade urllib3 em Pull requests relacionados.

Se o Copilot Autofix não produzir alterações de código para o alerta, não cria um branch nem um pull request, nem liga um pull request na vista de detalhe do alerta. Neste caso, corrige o alerta manualmente. Para mais informações, veja A correção não está disponível.

Reveja e integre a correção

O pull request que o Copilot Autofix abre comporta-se como qualquer outro pull request do Repositórios do Azure. A sua descrição resume o alerta que a correção aborda.

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

A etiqueta Autofix do Copilot identifica os pull requests autofix.

  1. Abra o pedido de pull na secção Pedidos de pull relacionados do alerta, ou em Repos>Pull requests.
  2. Revise a alteração proposta no separador Ficheiros em todos os ficheiros afetados.
  3. Edita a alteração se precisares de corresponder ao teu estilo de código, convenções de nomes ou requisitos do projeto.
  4. Aprove e complete o pedido de consulta através do seu fluxo de trabalho normal de revisão.

Depois de fazeres merge do pull request, executa o scanner relevante no ramo alvo após o merge. O Copilot Autofix não executa esta análise pós-fusão.

Alerta corrigido O que executar após a intercalação
Análise de código Execute o CodeQL ou o scanner de terceiros que reportou o alerta e publique os resultados atualizados da análise para a Advanced Security.
Vulnerabilidade de dependências Execute a varredura de dependências para que a Advanced Security possa processar as dependências atualizadas.

Fazer merge de um pull request por si só não fecha o alerta. O Advanced Security atualiza o estado do alerta após processar os novos resultados de digitalização. Verifique se esses resultados já não reportam a vulnerabilidade.

Tip

Uma correção gerada é um ponto de partida, não uma resposta final. Trata o pull request como qualquer outra alteração: revê-o, testa e pede revisores adicionais conforme necessário antes de fundires.

Resolução de problemas do Copilot Autofix

Correção em curso

A maioria dos Copilot Autofix termina em cerca de 2-5 minutos. O tempo de execução pode variar consoante a capacidade disponível do pipeline e a complexidade da alteração. Se todos os trabalhos paralelos estiverem em uso, o pipeline permanece em fila e o alerta continua a mostrar Correção em curso até que a capacidade fique disponível.

Uma solicitação que permanece pendente antes de o pipeline ser colocado em fila falha ao fim de 30 minutos. Uma pipeline em fila ou em execução tem um tempo limite de duas horas. O alerta pode deixar de ser atualizado automaticamente antes de atingir o tempo limite do backend. Se o alerta continuar em curso:

  1. Atualize a página de detalhes de alerta.
  2. Se o View run estiver disponível, abre o pipeline run e verifica se está em fila ou em execução.
  3. Aguarde até que a solicitação atinja um estado de êxito ou de falha. Não submetas outro pedido enquanto o pedido existente estiver ativo.
  4. Se o pedido falhar, reveja a mensagem de falha e selecione Retentar corrigir depois de abordar a causa.

Pull request criado, mas não associado ao alerta

O pedido de integração pode ser criado com êxito antes de aparecer em Pedidos de integração relacionados. Atualize a página de detalhes de alerta. Se o pedido de pull ainda não estiver associado, selecione Repos>Pedidos de pull e procure:

  • A etiqueta Copilot Autofix.
  • Uma ramificação de origem que começa com copilot-autofix/.
  • Um título ou descrição de pull request que faça referência ao alerta.

Reveja e faça a fusão do pull request através do fluxo de trabalho normal do pull request, mesmo que a ligação não apareça no alerta.

Operações de repositório ou pull request falham

O Copilot Autofix executa um clone superficial do ramo associado ao alerta. Não inicializa submódulos Git. Cria um branch com nome copilot-autofix/... único, envia a alteração gerada e abre um pull request que tem como alvo o branch de alerta.

Utilize View run a partir do estado de falha do alerta para inspecionar os registos do pipeline. A tabela seguinte lista as causas e ações comuns:

Failure O que deve verificar
O repositório ou ramo não pode ser clonado Verifique se o repositório e a ramificação de alerta ainda existem. Para um alerta encontrado num pedido de pull, o ramo de origem e o pedido de pull devem continuar ativos. Se o ramo foi eliminado, execute o scanner relevante no ramo atual e gere uma correção a partir do alerta resultante.
A correção depende do código num submódulo Git O Copilot Autofix não inicializa submódulos. Remedie manualmente o alerta se o contexto de código necessário estiver armazenado num submódulo.
O ramo padrão mudou ou o ramo de alerta foi eliminado O Copilot Autofix tem como destino o ramo associado ao alerta, que não é necessariamente o ramo predefinido atual. Executa o scanner relevante no ramo pretendido e gera uma correção a partir do alerta desse ramo.
Não é possível criar um ramo fixo Verifique as restrições de nome de ramo do repositório e as permissões explícitas de negação para a GitHub Copilot ({organization}) identidade. Permitir ramificações com o copilot-autofix/ prefixo. Uma nova tentativa cria uma nova ramificação com um nome exclusivo.
Uma política de filial bloqueia a mudança As políticas de conclusão de pull requests aplicam-se ao pull request Autofix como qualquer outro pull request. Satisfaça os revisores e as políticas de validação necessárias antes de o concluir. Se uma política de repositório bloquear o push inicial, atualize a política para permitir a identidade Autofix e o prefixo de branch.
Não é possível enviar o commit gerado Verifique as permissões Contribuir e Criar ramo para a identidade GitHub Copilot ({organization}), incluindo negações explícitas. Também verifique a validação do email do autor do commit conforme descrito em Uma correção foi gerada mas não pôde ser confirmada ou empurrada.
O pull request não pode ser criado Verifique a permissão Contribute to pull requests e a permissão para criar a etiqueta Copilot Autofix para a identidade GitHub Copilot ({organization}).

Foi gerada uma correção, mas não pôde ser consolidada nem enviada

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

A vista de detalhes do alerta apresenta um erro que identifica o endereço de e-mail bloqueado do autor do commit.

Captura de ecrã de um alerta de análise de código a mostrar que o Copilot Autofix não conseguiu efetuar commit de uma correção gerada porque o endereço de e-mail do autor do commit não é autorizado.

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

  1. Selecione Configurações do projeto>Repositórios.
  2. Selecione Todos os Repositórios para atualizar a política ao nível do projeto, ou selecione o repositório que tenha essa política.
  3. Selecione Políticas.
  4. Em Políticas de Repositório, encontre a validação do email do autor do Committ.
  5. Adicione noreply@dev.azure.com aos padrões de email permitidos.
  6. Volte ao alerta e selecione Tentar corrigir novamente.

Captura de ecrã das definições de política do repositório, na qual é adicionado o endereço de e-mail do Copilot Autofix aos padrões de e-mail permitidos para o autor de commits.

Uma tentativa falha

Se uma corrida de Autofix do Copilot não conseguir ser concluída, o alerta mostra um estado de falha proeminente, por isso podes ver rapidamente que a corrida não teve sucesso. A partir do estado de falha, podes tentar novamente a execução para gerar uma nova correção.

Captura de ecrã de um alerta de leitura de código a mostrar uma execução Copilot Autofix num estado falhado com a opção de tentar novamente a execução.

Uma execução pode falhar por razões transitórias, ou quando a execução não produz uma alteração de código utilizável. Repetir a execução para gerar novamente a correção.

Um alerta permanece aberto depois de fundir a correção

A fusão de um pull request Autofix não fecha o alerta por si só. A Advanced Security precisa de novos resultados do scanner que reportou a descoberta. Se o alerta permanecer aberto:

  1. Verifique se o pedido de integração foi integrado na mesma ramificação onde o alerta foi detetado.
  2. Confirme que a varredura de código ou a varredura de dependências, conforme apropriado, foi executada após a fusão e analisou o commit resultante da fusão.
  3. Confirme que Advanced Security processou os resultados atualizados para o repositório e ramo corretos.
  4. Revise os novos resultados para verificar se a vulnerabilidade já não foi detetada.
  5. Se a vulnerabilidade ainda estiver presente, atualize a correção e execute novamente o scanner relevante.

A solução não está disponível

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

  • O tipo de alerta não é atualmente suportado pelo Copilot Autofix.
  • Copilot determina que o alerta pode ser um falso positivo.
  • O Copilot Autofix corre mas não produz alterações de código. Neste caso, não é criado nenhum branch ou pull request.

Se o Copilot Autofix determinar que o alerta pode ser um falso positivo e não produzir quaisquer alterações, a vista detalhada do alerta mostra o resultado. Pode rever a execução ou repetir a correção.

Captura de ecrã da vista detalhada do alerta de análise de código, mostrando que o Copilot determinou que o alerta poderia ser um falso positivo e não produziu qualquer correção, com opções para ver a execução ou repetir a correção.

Quando uma correção não estiver disponível, use as orientações de remediação do alerta para a corrigir manualmente. Descarte um alerta apenas depois de analisar o resultado e determinar o motivo adequado da rejeição. Para mais informações, consulte detalhes do alerta de varrimento de código e detalhes do alerta de varrimento de dependências.