Esaminare le funzionalità di completamento del codice di GitHub Copilot

Completato

GitHub Copilot fornisce due tipi di suggerimenti inline. I suggerimenti di testo fantasma vengono visualizzati come testo in grigio nella posizione corrente del cursore durante la digitazione. I suggerimenti di modifica successivi (NES) prevedono sia la posizione che il contenuto della modifica del codice successiva in base alle modifiche recenti apportate.

Si ricevono suggerimenti di testo fantasma quando si eseguono le azioni seguenti:

  • Immettere una riga di codice parziale o completa nell'editor.
  • Immettere un commento di codice parziale o completo nell'editor.
  • Immettere una riga di codice vuota nell'editor.

I suggerimenti di modifica successivi vengono visualizzati automaticamente durante la modifica del codice. Stimano quale modifica è probabile che venga apportata successivamente in base alle modifiche recenti e vengono visualizzate con un indicatore speciale che mostra la posizione di modifica suggerita.

Scenari comuni di suggerimenti per modifiche

I suggerimenti di modifica successivi sono particolarmente utili in tre scenari di codifica:

  • Rilevamento degli errori: NES rileva problemi come errori di digitazione (conts x = 5const x = 5), espressioni ternarie invertite e operatori di confronto non corretti, quindi suggerisce la correzione corretta.
  • Modifica della finalità a catena: quando si rinomina un tipo o una variabile, NES suggerisce la propagazione di tale modifica tramite tutto il codice dipendente. Ad esempio, la ridenominazione di una classe da Point a Point3D attiva i suggerimenti per aggiungere una z coordinata ovunque sia necessario al codice.
  • Refactoring: dopo aver rinominato una volta una variabile, NES suggerisce di aggiornare ogni altra occorrenza. Dopo aver incollato il codice, NES suggerisce di adattarlo in modo che corrisponda allo stile del codice circostante.

Generare un suggerimento di testo fantasma

GitHub Copilot accelera lo sviluppo di app suggerendo completamenti del codice in base al codice scritto.

Si supponga, ad esempio, di voler creare un metodo C# denominato addInt che restituisca la somma di due interi. Se si inizia a digitare la firma del metodo, GitHub Copilot suggerisce il codice che ritiene di voler creare.

Screenshot dell'editor di Visual Studio Code che mostra un suggerimento di testo fantasma per il corpo del metodo addInt.

Il suggerimento di testo fantasma viene visualizzato senza evidenziazione della sintassi colorata. Ciò consente di distinguere il suggerimento dal codice esistente. È possibile accettare il codice suggerito premendo il tasto Tab.

È possibile premere ESC per ignorare un suggerimento.

L'esempio di addInt è un po' semplicistico, quindi ci si potrebbe chiedere come GitHub Copilot funziona con qualcosa di più complesso.

Si supponga di voler creare un metodo che accetti un elenco di numeri e restituisca la somma dei numeri primi contenuti nell'elenco. È possibile denominare il metodo addPrimeNumbersInNumericList. Quando si inizia a digitare la firma del metodo, GitHub Copilot genera automaticamente un suggerimento. Per esempio:

Screenshot dell'editor di Visual Studio Code che mostra un suggerimento di testo fantasma per il metodo addPrimeNumbersInNumericList body.

È importante rivedere i suggerimenti prima di accettarli. Questo suggerimento di testo automatico sembra buono, quindi puoi accettarlo premendo il tasto Tab.

Continuiamo lo scenario un po' più avanti.

Dopo aver unito il suggerimento al codice, si noterà che il isPrime metodo è sottolineato in rosso. Questo perché il isPrime metodo non esiste ancora nel codice.

GitHub Copilot è addestrato a seguire le migliori pratiche, che includono la suddivisione di problemi complessi in parti più piccole e gestibili. In questo caso, GitHub Copilot suggerisce di creare un metodo di isPrime separato per verificare se un numero è primo.

GitHub Copilot è pronto a suggerire un frammento di codice per il metodo isPrime. Quando si immette una riga vuota sotto il metodo , GitHub Copilot suggerisce un metodo />

Screenshot dell'editor di Visual Studio Code che mostra un suggerimento di testo fantasma per il metodo helper isPrime visualizzato dopo il metodo addPrimeNumbersInNumericList.

I suggerimenti di testo fantasma accelerano il processo di sviluppo fornendo frammenti di codice. Ma cosa succede se i suggerimenti non sono proprio quello di cui hai bisogno? GitHub Copilot fornisce un'interfaccia per la gestione dei suggerimenti di testo fantasma.

Gestire i suggerimenti di testo fantasma

Quando GitHub Copilot suggerisce un completamento di testo fantasma, fornisce anche un'interfaccia per la gestione dei suggerimenti. È possibile accettare un suggerimento, esaminare altri suggerimenti o ignorare i suggerimenti.

Quando si passa il puntatore del mouse su un completamento automatico suggerito, vengono visualizzate diverse opzioni per la gestione dei suggerimenti.

Screenshot dell'editor di Visual Studio Code che mostra la barra degli strumenti di gestione dei suggerimenti di testo fantasma con Accetta, Accetta Parola, navigazione e opzioni aggiuntive.

L'interfaccia predefinita per la gestione dei suggerimenti include le opzioni seguenti:

  • Accettare il suggerimento (completo) selezionando Accetta. È anche possibile accettare il suggerimento premendo il tasto Tab.
  • Accettare parzialmente il suggerimento selezionando Accept Word. È anche possibile accettare parzialmente un suggerimento premendo i Ctrl + tasti (freccia destra).
  • Visualizzare suggerimenti alternativi selezionando > o <. È anche possibile visualizzare i suggerimenti alternativi premendo i Alt + ] tasti o .Alt + [

Se si seleziona l'opzione Accetta Parola, viene accettata la parola successiva in un suggerimento. Ciò è utile quando si vuole accettare parte del suggerimento e quindi continuare a digitare il proprio codice. Ad esempio, è possibile accettare la prima parola del suggerimento del isPrime metodo.

Continua a selezionare Accept Word fino a quando non hai accettato la maggior parte del suggerimento desiderato.

Selezionando l'icona con i puntini di sospensione (...) a destra del pulsante Accetta Word sono disponibili opzioni aggiuntive, ad esempio Accept Line e Always Show Toolbar.

Se si seleziona l'opzione Mostra sempre barra degli strumenti, la barra degli strumenti rimane visibile quando si usano i tasti di scelta rapida per gestire i suggerimenti di testo fantasma. Selezionando l'opzione Apri pannello completamenti si apre il pannello completamenti di GitHub Copilot.

Annotazioni

Per accettare un'intera riga di un suggerimento, è necessario configurare un tasto di scelta rapida personalizzato per il editor.action.inlineSuggest.acceptNextLine comando. Questa opzione non è disponibile per impostazione predefinita nella barra degli strumenti.

Generare suggerimenti di codice dai commenti

Oltre a suggerire un completamento automatico basato sul codice, GitHub Copilot può usare commenti di codice per suggerire frammenti di codice. Usare frasi in linguaggio naturale per descrivere il codice che si vuole creare. In questo modo GitHub Copilot propone suggerimenti di completamento automatico che soddisfano requisiti specifici. Ad esempio, è possibile specificare il tipo di algoritmo da usare in un calcolo o quali metodi e proprietà si desidera aggiungere a una classe.

Torniamo all'esempio di numero primo. A questo punto, si dispone del codice seguente:

int addPrimeNumbersInNumericList(List<int> numbers)
{
    int sum = 0;
    foreach (int number in numbers)
    {
        if (IsPrime(number))
        {
            sum += number;
        }
    }
    return sum;
}

private bool IsPrime(int number)
{
    if (number <= 1)
    {
        return false;
    }
    for (int i = 2; i <= Math.Sqrt(number); i++)
    {
        if (number % i == 0) return false;
    }
    return true;
}

I addPrimeNumbersInNumericList metodi e isPrime sembrano essere completi. Tuttavia, è comunque necessario un elenco di numeri che possono essere usati come argomento quando si chiama il addPrimeNumbersInNumericList metodo . È possibile scrivere un commento che descrive l'elenco di numeri desiderati. Ad esempio, un elenco di 100 numeri casuali compresi tra 1 e 1000.

Quando si inizia a immettere il commento, GitHub Copilot suggerisce un completamento automatico che completa automaticamente il commento. GitHub Copilot usa il codice circostante per migliorarne i suggerimenti. Ad esempio, se si inizia a immettere il commento // create, GitHub Copilot usa il codice circostante per stimare ciò che si vuole creare. In questo caso, GitHub Copilot usa il metodo addPrimeNumbersInNumericList per prevedere che tu vuoi creare a list of numbers.

Screenshot dell'editor di Visual Studio Code che mostra un suggerimento di testo fantasma che completa un commento per creare un elenco di numeri

Quando si continua a scrivere il commento, GitHub Copilot aggiorna il suggerimento di completamento automatico. Quando si è pronti ad accettare il suggerimento, selezionare Accetta o premere TAB.

Quando si crea una nuova riga di codice dopo il commento, GitHub Copilot inizia a generare un frammento di codice in base al commento e al codice esistente.

Screenshot dell'editor di Visual Studio Code che mostra un suggerimento di testo fantasma per la prima riga di codice in base al commento precedente.

Accettare ognuno dei suggerimenti visualizzati. Se GitHub Copilot non ha terminato, genera un altro suggerimento per te da accettare.

Se si immette una nuova riga di codice al termine del frammento di codice, GitHub Copilot genera altri suggerimenti di completamento automatico in base ai requisiti del progetto di codice.

Riassunto

I suggerimenti di testo fantasma e i suggerimenti di modifica successivi consentono di scrivere codice in modo più efficiente e accurato. I suggerimenti di testo fantasma vengono visualizzati come testo in grigio nella posizione del cursore durante la digitazione; i suggerimenti di modifica successivi prevedono la posizione e il contenuto della modifica successiva in base alle modifiche recenti. È possibile generare un suggerimento di testo fantasma immettendo una riga di codice parziale o completa, un commento di codice parziale o completo o una riga di codice vuota. È possibile accettare un suggerimento premendo TAB o chiudendolo premendo ESC. È possibile gestire i suggerimenti usando la barra degli strumenti visualizzata quando si passa il puntatore del mouse su un suggerimento. La barra degli strumenti consente di esaminare suggerimenti alternativi, accettare un suggerimento, accettare una parola di un suggerimento o aprire il pannello di completamento GitHub Copilot per visualizzare altri suggerimenti.