Introduzione all'uso di Copilot

Condivisione video

GitHub Copilot è uno strumento di completamento del codice basato sul machine learning che aiuta a scrivere codice più velocemente e aumentare l’efficienza della codifica.

Funzionalità Copilot Labs

Funzionalità Descrizione Note esempio
Explain Genera spiegazioni per frammenti di codice Opzioni avanzate per personalizzare i prompt, chiarire meglio le proprie esigenze picture 1
Show example code Genera codice di esempio per frammenti Opzioni avanzate per personalizzare picture 2
Language Translation Genera traduzioni per frammenti di codice Questa traduzione è basata su linguaggi di programmazione, ad esempio C++ -> Python picture 3
Readable Migliora la leggibilità di un codice Non è semplice formattazione, è un vero miglioramento della leggibilità picture 4
Add Types Inferenza di tipi Converte variabili con tipo automatico in tipi espliciti picture 5
Fix bug Corregge bug Corregge alcuni bug comuni picture 6
Debug Rende il codice più facile da debuggare Aggiunge log di stampa o variabili temporanee per i breakpoint picture 7
Clean Pulisce il codice Rimuove parti inutili del codice, commenti/stampe/codice deprecato ecc. picture 8
List steps Elenca i passaggi del codice Alcuni codici dipendono rigorosamente dall’ordine di esecuzione, necessario commentare chiaramente l’ordine picture 9
Make robust Rende il codice più robusto Considera bordi/multithreading/ripetizione ecc. picture 10
Chunk Suddivide il codice in blocchi Si spera che una funzione abbia meno di 50 righe efficaci, nidificazione <=4, fan-out <=7, complessità ciclomatica <=20 picture 11
Document Genera documentazione per il codice Genera codice tramite commenti, oppure genera commenti e documentazione tramite codice picture 12
Custom Operazioni personalizzate Indica a copilot come operare sul tuo codice picture 13

Cos’è Copilot

L’introduzione del sito ufficiale è semplice e diretta: Your AI pair programmer —— il tuo programmatore in coppia

Programmazione in coppia: è un metodo di sviluppo software agile, due programmatori lavorano insieme allo stesso computer: uno digita il codice, l’altro esamina ogni riga di codice. I ruoli si scambiano spesso, assicurando logica rigorosa e prevenzione dei problemi.

Copilot partecipa al lavoro di codifica attraverso i seguenti modi, realizzando il ruolo di programmatore in coppia.

Comprensione

Copilot è un grande modello linguistico, non può comprendere il nostro codice, e noi non possiamo comprendere il modello di Copilot, qui la comprensione è la comprensione reciproca tra un programmatore e un gruppo di programmatori. Tutti lavorano insieme basandosi su alcuni consensi per scrivere codice.

picture 14

Copilot raccoglie informazioni per comprendere il contesto, le informazioni includono:

  • Codice attualmente in modifica
  • File associati
  • File aperti dall’IDE
  • Indirizzi delle librerie
  • Percorsi dei file

Copilot non comprende solo tramite un commento, raccoglie abbastanza informazioni contestuali per capire cosa fare al passo successivo.

Suggerimenti

Suggerimenti completi Suggerimenti inline
picture 15 picture 16

È ben noto che il modo più comune per ottenere suggerimenti è attraverso commenti descrittivi piuttosto che scrivere direttamente codice, guidando così GitHub Copilot a dare suggerimenti completi. Tuttavia ciò può causare ridondanza di commenti, i commenti non sono migliori se sono più numerosi, i commenti aiutano a capire, ma non sono il corpo del codice. Un buon codice è chiaro anche senza commenti, basandosi su nomi appropriati, progettazione ragionevole e logica chiara. Quando si usano suggerimenti inline, basta fornire nomi di variabili/funzioni/classi appropriati, Copilot fornirà sempre suggerimenti adatti.

Oltre agli input esterni appropriati, Copilot supporta anche suggerimenti basati su frammenti di codice esistenti, Copilot Labs->Show example code può aiutare a generare codice di esempio per funzioni specifiche, basta selezionare il codice e cliccare Show example code.

Ctrl+Enter, è sempre in grado di offrire molte intuizioni, ho creato tre file, un main.cpp vuoto, un calculator.h vuoto, in calculator.cpp implemento “addizione” e “sottrazione”, Copilot ha fornito i seguenti contenuti suggeriti:

  1. Aggiunta delle implementazioni “moltiplicazione” e “divisione”
  2. Chiamata delle implementazioni “addizione sottrazione moltiplicazione divisione” in main
  3. Metodo di creazione e utilizzo della libreria statica calculator
  4. Risultato dell’esecuzione della funzione main, e il risultato è corretto
  5. Contenuto suggerito per l’intestazione calculator.h
  6. Comando di compilazione g++
  7. Caso di test gtest
  8. Contenuto di CMakeLists.txt, comprensivo di test
  9. objdump -d main > main.s per visualizzare il codice assembly, mostrando il codice assembly
  10. ar per visualizzare il contenuto della libreria statica, mostrando il contenuto della libreria statica

Con la configurazione predefinita, ogni volta che si preme Ctrl+Enter i contenuti mostrati sono molto diversi, impossibile rivedere il contenuto generato la volta precedente, se si desidera un contenuto generato più stabile, si può impostare il valore di temperature[0, 1]. Minore è il valore, più stabile è il contenuto generato; maggiore è il valore, più imprevedibile è il contenuto generato. I contenuti suggeriti sopra superano di gran lunga i contenuti suggeriti generali dell’uso quotidiano, potrebbe essere dovuto al fatto che il progetto è effettivamente troppo semplice, una volta scritti file di compilazione e intestazioni, i suggerimenti non saranno così numerosi, ma sono comunque spesso molto utili.

Scorciatoie per usare i suggerimenti di Copilotscorciatoie

Azione Scorciatoia Nome comando
Accetta suggerimento inline Tab editor.action.inlineSuggest.commit
Ignora suggerimento Esc editor.action.inlineSuggest.hide
Mostra il prossimo suggerimento inline Alt+] editor.action.inlineSuggest.showNext
Mostra il suggerimento inline precedente Alt+[ editor.action.inlineSuggest.showPrevious
Attiva suggerimento inline Alt+\ editor.action.inlineSuggest.trigger
Mostra più suggerimenti in un pannello separato Ctrl+Enter github.copilot.generate

Debug

Di solito due modi di debug, stampa e breakpoint.

  • Copilot può aiutare a generare automaticamente codice di stampa, scegliendo il formato di stampa o log in base al contesto.
  • Copilot può aiutare a modificare la struttura del codice esistente, fornendo posizioni di breakpoint convenienti. Alcuni codici in stile nidificato sono difficili da mettere breakpoint, Copilot può modificarli direttamente.

Copilot Labs ha le seguenti funzionalità preimpostate:

  • Debug, genera codice di debug, ad esempio stampa, breakpoint e altri codici di debug.

Revisione

La revisione è reciproca, noi e copilot dobbiamo spesso revisionarci a vicenda, non credere ciecamente al codice generato rapidamente.

Copilot Labs ha le seguenti funzionalità preimpostate:

  • Fix bug, corregge direttamente i bug che trova, è necessario prima salvare il proprio codice, controllare attentamente le modifiche di Copilot.
  • Make robust, rende il codice più robusto, Copilot scopre situazioni non gestite, genera codice di miglioramento, dovremmo essere ispirati da ciò, pensare in modo più meticoloso.

Refactoring

Copilot Labs ha le seguenti funzionalità preimpostate:

  • Readable, migliora la leggibilità, vera e propria leggibilità, non semplice formattazione, ma bisogna fare attenzione a controllare le modifiche di Copilot.
  • Clean, rende il codice più pulito, rimuove codice ridondante.
  • Chunk, rende il codice più facile da comprendere, suddivide il codice in blocchi, suddivide una grande funzione in più piccole funzioni.

Documentazione

Copilot Labs ha le seguenti funzionalità preimpostate:

  • Document, genera documentazione, ad esempio commenti di funzione e altri documenti.

Estensione dei limiti di Copilot tramite Custom

Custom non è molto appariscente, ma dà a Copilot infinite possibilità. Possiamo considerarlo un nuovo linguaggio di programmazione, questo linguaggio di programmazione è inglese o cinese.

Puoi inserire tramite Custom

  • Rimuovi codice commentato
    picture 17

  • Aggiungi capacità di moltiplicazione e divisione
    picture 18

  • Riscrivi in go
    picture 19

  • Aggiungi calcolo di funzioni trigonometriche
    picture 20

  • Aggiungi calcolo differenziale, qui il cinese non funziona bene, usa support calculate differential, in modalità bassa temperatura non ci sono risposte affidabili, in modalità alta temperatura ci sono alcune risposte assurde.

Nel lavoro quotidiano, puoi sempre presentare le tue esigenze a Copilot, attraverso la capacità Custom, puoi far sì che Copilot ti aiuti a completare molte operazioni desiderate.

Alcuni esempi:

prompt descrizione
generate the cmake file genera file cmake
generate 10 test cases for tan() genera 10 casi di test per tan()
format like google style formatta come stile google
consider boundary conditions considera condizioni al contorno
confirm memory release conferma rilascio memoria

L’uso di Custom è pieno di immaginazione, ma a volte non è affidabile, si consiglia di salvare il codice prima di usarlo, quindi controllare attentamente le modifiche effettuate.

Ottieni suggerimenti più professionali

Più chiari sono i prompt dati a Copilot, più accurati sono i suggerimenti che fornisce, prompt professionali possono ottenere suggerimenti più professionali. Molto codice inappropriato non influisce sulla compilazione del codice né sul funzionamento del business, ma influisce sulla leggibilità, manutenibilità, estensibilità e riutilizzo, queste caratteristiche sono anche molto importanti, se si desidera ottenere suggerimenti più professionali, è meglio conoscere i nomi inglesi delle migliori pratiche.

  • In primo luogo utilizza inglese comprensibile, puoi imparare l’inglese guardando progetti open source.
  • Convenzioni di denominazione, la denominazione è la definizione più basilare del concetto, una buona denominazione può evitare ambiguità, evitare che il lettore si immerga nei dettagli del business, aumentando così la leggibilità del codice, è anche una delle migliori pratiche.
    • Di solito è sufficiente un nome di variabile ragionevole, Copilot può fornire un intero blocco di suggerimenti affidabili.
  • Elenco di pattern di progettazione, i pattern di progettazione sono un modello per risolvere problemi, affrontando diversi problemi con scelte ragionevoli dei principi di progettazione SOLID, risparmiando tempo di progettazione delle soluzioni, migliorando la qualità del codice.
    • È sufficiente scrivere il nome del pattern necessario, Copilot può generare un frammento di codice completo.
  • Elenco di algoritmi, buoni algoritmi sono cristallizzazioni di alta intelligenza per risolvere una classe di problemi, gli sviluppatori devono astrarre il problema specifico, astrarre i dati e inserirli nell’algoritmo.
    • Il codice degli algoritmi è solitamente generico, è sufficiente scrivere il nome dell’algoritmo, Copilot può generare frammenti di codice di algoritmi, e Copilot riesce sempre a integrare abilmente le strutture dati del contesto negli algoritmi.

Suggerimenti in testo puro

en zh
GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor. GitHub Copilot utilizza OpenAI Codex per suggerire codice e funzioni intere in tempo reale, direttamente dal tuo editor.
Trained on billions of lines of code, GitHub Copilot turns natural language prompts into coding suggestions across dozens of languages. Addestrato su miliardi di righe di codice, GitHub Copilot trasforma prompt in linguaggio naturale in suggerimenti di codifica attraverso dozzine di linguaggi.
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. Non volare da solo. Gli sviluppatori di tutto il mondo utilizzano GitHub Copilot per codificare più velocemente, concentrarsi sulla logica di business piuttosto che sul boilerplate, e fare ciò che conta di più: costruire ottimo software.
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. Concentrati sulla risoluzione di problemi più grandi. Passa meno tempo a creare boilerplate e modelli di codice ripetitivi, e più tempo su ciò che conta: costruire ottimo software. Scrivi un commento che descriva la logica che desideri e GitHub Copilot suggerirà immediatamente codice per implementare la soluzione.
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. Ottieni suggerimenti basati su AI, solo per te. GitHub Copilot condivide raccomandazioni basate sul contesto e sulle convenzioni di stile del progetto. Scorri rapidamente attraverso righe di codice, completando suggerimenti di funzioni, e decidi quali accettare, rifiutare o modificare.
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. Codifica con sicurezza in territori sconosciuti. Che tu stia lavorando in un nuovo linguaggio o framework, o che tu stia solo imparando a codificare, GitHub Copilot può aiutarti a trovare la tua strada. Affronta un bug, o impara a usare un nuovo framework senza passare la maggior parte del tuo tempo a esplorare documenti o a cercare sul web.

Queste traduzioni sono generate da Copilot, non si può determinare se questi suggerimenti sono basati su generazione di modelli o su comportamento di traduzione. In effetti qualsiasi contenuto inglese che scrivi nella colonna en della tabella può essere tradotto (generato) da Copilot nel contenuto della colonna zh.

picture 21

Opzioni di configurazione

Opzioni di configurazione del client

Opzione Descrizione Note
temperature Temperatura di campionamento 0.0 - 1.0, 0.0 genera frammenti di codice più comuni, 1.0 genera frammenti di codice meno comuni e più casuali
length Lunghezza massima del suggerimento di codice Default 500
inlineSuggestCount Numero di suggerimenti inline generati Default 3
listCount Numero di suggerimenti generati Default 10
top_p Mostra le prime N raccomandazioni per priorità Mostra tutte le raccomandazioni possibili per default

Le impostazioni dell’account personale hanno due impostazioni, una riguarda il copyright e l’altra la privacy.

  • Se utilizzare codice open source per fornire suggerimenti, principalmente per evitare problemi di copyright nei frammenti di codice generati da Copilot, evitando restrizioni di licenza open source.
  • Se consentire l’uso di frammenti di codice personali per migliorare il prodotto, evitando rischi di perdita di privacy.

Sicurezza dei dati

Raccolta informazioni di Copilot

  • Versione commerciale
    • Informazioni sull’uso delle funzionalità, potenzialmente contenenti informazioni personali
    • Raccolta di frammenti di codice, immediatamente scartati dopo aver fornito suggerimenti, nessun frammento di codice conservato
    • Condivisione dati, GitHub, Microsoft, OpenAI
  • Versione personale
    • Informazioni sull’uso delle funzionalità, potenzialmente contenenti informazioni personali
    • Raccolta di frammenti di codice, dopo aver fornito suggerimenti, conservati o scartati in base all’impostazione di telemetria personale
    • Frammenti di codice includono, codice attualmente in modifica, file associati, file aperti dall’IDE, indirizzi delle librerie, percorsi dei file
    • Condivisione dati, GitHub, Microsoft, OpenAI
    • Protezione dati codice, 1. Crittografia. 2. Parte del team Copilot correlata a Github/OpenAI può vedere. 3. Controllo degli accessi basato sui ruoli e autenticazione multifattoriale durante l’accesso
    • Evitare che i frammenti di codice vengano utilizzati (conservati o addestrati), 1. Impostazioni 2. Contattare il team Copilot
    • Il codice privato verrà utilizzato? No.
    • Genererà informazioni personali (nome, compleanno ecc.)? Raro, ancora in miglioramento.
  • Dichiarazione di privacy dettagliata

Domande frequenti

  • Dati di addestramento di Copilot, provenienti da repository pubblici su Github.
  • Il codice scritto da Copilot è perfetto? Non necessariamente.
  • Può scrivere codice per nuove piattaforme? Capacità attualmente limitata.
  • Come usare meglio Copilot? Suddividere il codice in piccole funzioni, descrivere la funzione della funzione in linguaggio naturale, nonché input e output, utilizzare nomi di variabili e funzioni con significati specifici.
  • Il codice generato da Copilot avrà bug? Certamente non può essere evitato.
  • Il codice generato da Copilot può essere utilizzato direttamente? Non necessariamente, a volte è necessario modificarlo.
  • Il codice generato da Copilot può essere utilizzato in progetti commerciali? Sì.
    • Il codice generato da Copilot appartiene alla proprietà intellettuale di Copilot? No.
    • Copilot copia il codice dal set di addestramento? Copilot non copia codice, è estremamente improbabile che più di 150 righe di codice possano corrispondere al set di addestramento, questo accade in due casi:
      • Quando le informazioni contestuali sono molto scarse
      • È una soluzione generica per un problema
    • Come evitare la ripetizione con codice pubblico, impostare filter
      picture 22
  • Come utilizzare correttamente il codice generato da Copilot? 1. Testare/controllare autonomamente il codice generato; 2. Non compilare o eseguire automaticamente il codice generato prima del controllo.
  • Copilot ha le stesse prestazioni in ogni lingua naturale? Migliori prestazioni in inglese.
  • Copilot genererà contenuti offensivi? È già filtrato, ma non si esclude la possibilità che appaiano.