Introdução ao uso do Copilot

Compartilhamento de vídeo

GitHub Copilot é uma ferramenta de preenchimento automático de código baseada em aprendizado de máquina que ajuda você a escrever código mais rapidamente e melhorar a eficiência da codificação.

Capacidades do Copilot Labs

CapacidadeDescriçãoObservaçãoExemplo
ExplainGera explicações para fragmentos de códigoOpções avançadas para personalizar prompts, deixando as necessidades mais claraspicture 1
Show example codeGera código de exemplo para fragmentos de códigoOpções avançadas disponíveis para personalizaçãopicture 2
Language TranslationGera traduções para fragmentos de códigoEsta tradução é baseada na linguagem de programação, por exemplo, C++ -> Pythonpicture 3
ReadableMelhora a legibilidade de um bloco de códigoNão é apenas formatação simples, mas sim uma melhoria real da legibilidadepicture 4
Add TypesInferência de tiposTransforma variáveis de tipo automático em tipos explícitospicture 5
Fix bugCorrige bugsCorrige bugs comunspicture 6
DebugFacilita a depuração do códigoAdiciona logs de impressão ou variáveis temporárias para pontos de interrupçãopicture 7
CleanLimpa o códigoRemove partes inúteis do código, comentários/impressão/código obsoleto, etc.picture 8
List stepsLista os passos do códigoAlguns códigos dependem estritamente da ordem de execução, exigindo comentários claros sobre a sequência de execuçãopicture 9
Make robustTorna o código mais robustoConsidera limites/multithreading/reentrância, etc.picture 10
ChunkDivide o código em blocosGeralmente espera-se que uma função tenha <=50 linhas efetivas, aninhamento <=4, fan-out <=7, complexidade ciclomática <=20picture 11
DocumentGera documentação do códigoGera código através de comentários, e também pode gerar comentários e documentação através de códigopicture 12
CustomOperações personalizadasDiga ao copilot como manipular seu códigopicture 13

O que é Copilot

A introdução do site oficial é simples e clara: Seu programador parceiro de IA — o programador parceiro de IA

Programação em par: é um método de desenvolvimento de software ágil onde dois programadores trabalham no mesmo computador: um digita o código, enquanto o outro revisa cada linha de código. Os papéis são frequentemente trocados para garantir lógica rigorosa e prevenção de problemas.

Copilot participa do trabalho de codificação de várias maneiras, desempenhando o papel de programador parceiro.

Entendimento

Copilot é um grande modelo de linguagem, ele não entende nosso código, e nós também não entendemos o modelo do Copilot. Aqui, o entendimento é a compreensão mútua entre um programador e um grupo de programadores. Todos baseiam-se em alguns consensos para escrever código juntos.

picture 14

Copilot coleta informações para entender o contexto, incluindo:

  • Código sendo editado
  • Arquivos associados
  • Arquivos abertos no IDE
  • Endereços de bibliotecas
  • Caminhos de arquivos

Copilot não entende apenas através de um comentário, ele coleta informações de contexto suficientes para entender o que fazer a seguir.

Sugestão

Sugestão completaSugestão inline
picture 15picture 16

É bem sabido que a maneira mais comum de obter sugestões é através de comentários que descrevem os requisitos, em vez de escrever código diretamente, guiando assim o GitHub Copilot a fornecer sugestões completas. No entanto, isso pode causar o problema de comentários redundantes. Comentários não são melhores quando mais numerosos; eles não são o corpo do código. Um bom código é claro e compreensível sem comentários, baseando-se em nomes apropriados, design racional e lógica clara. Ao usar sugestões inline, basta fornecer nomes de variáveis/funções/classes adequados, e o Copilot sempre fornecerá sugestões adequadas.

Além das entradas externas adequadas, o Copilot também suporta sugestões baseadas em fragmentos de código já existentes. Copilot Labs->Show example code pode ajudar a gerar código de exemplo para funções específicas, basta selecionar o código e clicar em Show example code.

Ctrl+Enter, sempre oferece muita inspiração. Criei três arquivos, um main.cpp vazio, um calculator.h vazio, e implementei “adição” e “subtração” em calculator.cpp. O Copilot forneceu as seguintes sugestões:

  1. Adicionar implementações de “multiplicação” e “divisão”
  2. Chamar as implementações de “adição, subtração, multiplicação e divisão” no main
  3. Métodos de criação e uso de bibliotecas estáticas de calculator
  4. Resultado da execução da função main, e o resultado está correto
  5. Conteúdo sugerido para o cabeçalho calculator.h
  6. Comando de compilação g++
  7. Casos de teste gtest
  8. Conteúdo de CMakeLists.txt, incluindo testes
  9. objdump -d main > main.s para visualizar o código assembly, mostrando o código assembly
  10. ar para visualizar o conteúdo da biblioteca estática, mostrando o conteúdo da biblioteca estática

Com a configuração padrão, o conteúdo exibido a cada pressionamento de Ctrl+Enter difere muito, impossibilitando revisar o conteúdo gerado anteriormente. Para obter conteúdo gerado mais estável, é possível definir o valor de temperature [0, 1]. Quanto menor o valor, mais estável o conteúdo gerado; quanto maior o valor, mais imprevisível o conteúdo gerado. As sugestões acima excedem muito o conteúdo geralmente sugerido no uso diário. Isso pode ser devido ao projeto ser realmente muito simples. Assim que os arquivos de compilação e cabeçalhos são escritos completamente, as sugestões não serão tão numerosas, mas ainda assim frequentemente têm um bom efeito de inspiração.

Atalhos para usar sugestões do Copilot

AçãoAtalhoNome do comando
Aceitar sugestão inlineTabeditor.action.inlineSuggest.commit
Ignorar sugestãoEsceditor.action.inlineSuggest.hide
Mostrar próxima sugestão inlineAlt+]editor.action.inlineSuggest.showNext
Mostrar sugestão inline anteriorAlt+[editor.action.inlineSuggest.showPrevious
Disparar sugestão inlineAlt+\editor.action.inlineSuggest.trigger
Mostrar mais sugestões em painel separadoCtrl+Entergithub.copilot.generate

Depuração

Geralmente existem dois métodos de depuração: impressão e ponto de interrupção.

  • Copilot pode ajudar a gerar automaticamente códigos de impressão, usando impressão ou log apropriado de acordo com o contexto.
  • Copilot pode ajudar a modificar a estrutura do código existente, fornecendo locais de ponto de interrupção convenientes. Alguns códigos de estilo aninhado são difíceis de interromper, Copilot pode modificá-los diretamente.

Copilot Labs tem as seguintes funções pré-configuradas:

  • Debug, gera código de depuração, como impressão, ponto de interrupção e outros códigos de depuração.

Revisão

A revisão é mútua; nós e o copilot precisamos nos revisar frequentemente, não confie cegamente no código rapidamente gerado.

Copilot Labs tem as seguintes funções pré-configuradas:

  • Fix bug, corrige bugs que descobre, é necessário salvar o código antes e revisar cuidadosamente as modificações do Copilot.
  • Make robust, torna o código mais robusto; Copilot descobrirá situações não tratadas e gerará código de melhoria, devemos nos inspirar nisso e pensar de forma mais minuciosa.

Refatoração

Copilot Labs tem as seguintes funções pré-configuradas:

  • Readable, melhora a legibilidade, verdadeiramente aumentando a legibilidade, não apenas formatando, mas é necessário tomar cuidado ao revisar as modificações do Copilot.
  • Clean, torna o código mais conciso, removendo código desnecessário.
  • Chunk, torna o código mais fácil de entender, dividindo o código em blocos, transformando uma grande função em várias funções menores.

Documentação

Copilot Labs tem as seguintes funções pré-configuradas:

  • Document, gera documentação, como comentários de funções e outros documentos.

Uso de Custom para expandir os limites do Copilot

Custom não chama muito a atenção, mas dá ao Copilot infinitas possibilidades. Podemos entender isso como uma nova linguagem de programação, que é inglês ou chinês.

Você pode usar Custom para inserir

  • Remover código de comentário
    picture 17

  • Aumentar a capacidade de multiplicação e divisão
    picture 18

  • Reescrever em go
    picture 19

  • Adicionar cálculo de funções trigonométricas
    picture 20

  • Adicionar cálculo de diferenciação, aqui o chinês não funciona bem, use support calculate differential, no modo de baixa temperatura, não há respostas confiáveis, no modo de alta temperatura, há algumas respostas absurdas.

No trabalho diário, você pode fazer suas próprias solicitações ao Copilot a qualquer momento, através da capacidade Custom, pode-se fazer com que o Copilot ajude a concluir muitas operações desejadas.

Alguns exemplos:

promptsdescrição
generate the cmake filegerar arquivo cmake
generate 10 test cases for tan()gerar 10 casos de teste para tan()
format like google styleformatar como estilo google
consider boundary conditionsconsiderar condições de contorno
confirm memory releaseconfirmar liberação de memória

O uso de Custom é cheio de imaginação, mas às vezes não é tão confiável. Recomenda-se salvar o código antes de usar, e então revisar cuidadosamente as modificações feitas por ele.

Obtenção de conselhos mais profissionais

Quanto mais clara for a dica dada ao Copilot, mais precisa será a sugestão. Dicas profissionais podem obter conselhos mais profissionais. Muitos códigos inadequados não afetam a compilação nem o funcionamento do negócio, mas afetam a legibilidade, manutenção, extensibilidade e reutilização. Essas características também são muito importantes. Se desejar obter conselhos mais profissionais, é melhor conhecer os nomes em inglês das melhores práticas.

  • Primeiro, use inglês compreensível, pode-se aprender inglês observando projetos open source.
  • Convenções de nomenclatura, a nomenclatura é a definição mais básica de conceitos, uma boa nomenclatura pode evitar ambiguidades, evitar que o leitor caia nos detalhes do negócio, aumentando assim a legibilidade do código, também é uma das melhores práticas.
    • Geralmente, basta um nome de variável razoável para que o Copilot dê uma sugestão completa e confiável.
  • Lista de padrões de design, padrões de design são modelos para resolver problemas, focando no equilíbrio dos princípios básicos de design SOLID para diferentes problemas, economizando tempo de design de solução e melhorando a qualidade do código.
    • Basta escrever o nome do padrão necessário, o Copilot pode gerar o fragmento de código completo.
  • Lista de algoritmos, bons algoritmos são cristalizações de alta sabedoria para resolver uma classe de problemas, os desenvolvedores precisam abstrair problemas específicos e dados, e inserir os dados abstraídos no algoritmo.
    • O código do algoritmo costuma ser genérico, basta escrever o nome do algoritmo, o Copilot pode gerar o fragmento de código do algoritmo, e o Copilot sempre habilmente aplica a estrutura de dados do contexto nas rotinas do algoritmo.

Sugestões de texto puro

enpt-br
GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor.GitHub Copilot usa o OpenAI Codex para sugerir código e funções inteiras em tempo real, direto do seu editor.
Trained on billions of lines of code, GitHub Copilot turns natural language prompts into coding suggestions across dozens of languages.Treinado em bilhões de linhas de código, GitHub Copilot transforma prompts de linguagem natural em sugestões de codificação em dezenas de linguagens.
Don’t fly solo. Developers all over the world use GitHub Copilot to code faster, focus on business logic over boilerplate, and do what matters most: building great software.Não voe solo. Desenvolvedores ao redor do mundo usam GitHub Copilot para codificar mais rápido, focar na lógica de negócios ao invés de código padrão, e fazer o que importa mais: construir ótimos softwares.
Focus on solving bigger problems. Spend less time creating boilerplate and repetitive code patterns, and more time on what matters: building great software. Write a comment describing the logic you want and GitHub Copilot will immediately suggest code to implement the solution.Foque em resolver problemas maiores. Passe menos tempo criando código padrão e padrões de código repetitivos, e mais tempo no que importa: construir ótimos softwares. Escreva um comentário descrevendo a lógica que deseja e o GitHub Copilot imediatamente sugerirá código para implementar a solução.
Get AI-based suggestions, just for you. GitHub Copilot shares recommendations based on the project’s context and style conventions. Quickly cycle through lines of code, complete function suggestions, and decide which to accept, reject, or edit.Obtenha sugestões baseadas em IA, apenas para você. GitHub Copilot compartilha recomendações baseadas no contexto e nas convenções de estilo do projeto. Rapidamente percorra linhas de código, complete sugestões de funções e decida quais aceitar, rejeitar ou editar.
Code confidently in unfamiliar territory. Whether you’re working in a new language or framework, or just learning to code, GitHub Copilot can help you find your way. Tackle a bug, or learn how to use a new framework without spending most of your time spelunking through the docs or searching the web.Codifique com confiança em território desconhecido. Esteja trabalhando em uma nova linguagem ou framework, ou apenas aprendendo a codificar, GitHub Copilot pode ajudá-lo a encontrar seu caminho. Solucione um bug, ou aprenda a usar um novo framework sem gastar a maior parte do seu tempo vasculhando a documentação ou pesquisando na web.

Essas traduções são todas geradas pelo Copilot, não é possível determinar se essas sugestões são baseadas na geração de modelo ou no comportamento de tradução. Na verdade, qualquer conteúdo em inglês que você escrever na coluna en da tabela pode ser traduzido (gerado) pelo Copilot para o conteúdo na coluna pt-br.

picture 21

Itens de configuração

Itens de configuração do cliente

Item de configuraçãoDescriçãoObservação
temperatureTemperatura de amostragem0.0 - 1.0, 0.0 gera fragmentos de código mais comuns, 1.0 gera fragmentos de código mais incomuns e aleatórios
lengthComprimento máximo de sugestão de código geradoPadrão 500
inlineSuggestCountNúmero de sugestões inline geradasPadrão 3
listCountNúmero de sugestões geradasPadrão 10
top_pPrioriza exibir as N sugestões com maior probabilidadePor padrão, exibe todas as sugestões possíveis

Configurações da conta pessoal têm duas configurações, uma relacionada a direitos autorais e outra à privacidade.

  • Se usa código aberto para fornecer sugestões, principalmente para evitar problemas de direitos autorais nos fragmentos de código gerados pelo Copilot, evitando restrições de licenças open source.
  • Se permite usar fragmentos de código pessoais para melhorar o produto, evitando riscos de vazamento de privacidade.

Segurança de dados

Coleta de informações do Copilot

  • Versão comercial
    • Informações de uso de funcionalidades, pode conter informações pessoais
    • Coleta fragmentos de código, descarta imediatamente após fornecer sugestões, não retém nenhum fragmento de código
    • Compartilhamento de dados, GitHub, Microsoft, OpenAI
  • Versão pessoal
    • Informações de uso de funcionalidades, pode conter informações pessoais
    • Coleta fragmentos de código, de acordo com a configuração de telemetria pessoal, retém ou descarta após fornecer sugestões
    • Fragmentos de código incluem: código sendo editado, arquivos associados, arquivos abertos no IDE, endereços de bibliotecas, caminhos de arquivos
    • Compartilhamento de dados, GitHub, Microsoft, OpenAI
    • Proteção de dados de código, 1. Criptografia. 2. Parte da equipe Copilot relacionada ao Github/OpenAI pode visualizar. 3. Acesso requer controle de acesso baseado em papéis e autenticação multifator
    • Evitar o uso (retenção ou treinamento) de fragmentos de código, 1. Configurar 2. Contatar Equipe Copilot
    • Código privado será usado? Não.
    • Vai gerar informações pessoais (nome, aniversário, etc.)? Raro, ainda está melhorando.
  • Declaração detalhada de privacidade

Perguntas frequentes

  • Dados de treinamento do Copilot, vêm de repositórios públicos do Github.
  • O código escrito pelo Copilot é perfeito? Nem sempre.
  • Pode escrever código para novas plataformas? Capacidade limitada no momento.
  • Como usar melhor o Copilot? Divida o código em pequenas funções, descreva a funcionalidade da função em linguagem natural, bem como entrada e saída, use nomes de variáveis e funções com significado específico.
  • O código gerado pelo Copilot tem bugs? Certamente não pode evitar.
  • O código gerado pelo Copilot pode ser usado diretamente? Nem sempre, às vezes precisa ser modificado.
  • O código gerado pelo Copilot pode ser usado em projetos comerciais? Sim.
    • O código gerado pelo Copilot pertence à propriedade intelectual do Copilot? Não.
    • Copilot copia código do conjunto de treinamento? Copilot não copia código, é extremamente improvável que mais de 150 linhas de código correspondam ao conjunto de treinamento, ocorre nas seguintes duas situações:
      • Quando a informação de contexto é muito escassa
      • É uma solução para problemas genéricos
    • Como evitar a repetição de código público, definir filter
      picture 22
  • Como usar corretamente o código gerado pelo Copilot? 1. Testar/revisar o código gerado por conta própria; 2. Não compilar ou executar automaticamente o código gerado antes da revisão.
  • Copilot tem o mesmo desempenho em todas as línguas naturais? O melhor desempenho é em inglês.
  • Copilot gera conteúdo ofensivo? Já possui filtro, mas não se exclui a possibilidade de aparecer.