Untersuchung der Codevervollständigungsfunktionen von GitHub Copilot
GitHub Copilot bietet zwei Arten von Inlinevorschlägen. Geistertextvorschläge werden während der Eingabe als abgeblendeter Text an der aktuellen Cursorposition angezeigt. Vorschläge für die nächste Bearbeitung (Next Edit Suggestions, NES) prognostizieren sowohl den Speicherort als auch den Inhalt Ihrer nächsten Codebearbeitung basierend auf den zuletzt vorgenommenen Änderungen.
Sie erhalten Geistertextvorschläge, wenn Sie die folgenden Aktionen ausführen:
- Geben Sie eine partielle oder vollständige Codezeile im Editor ein.
- Geben Sie einen teilweisen oder vollständigen Codekommentar in den Editor ein.
- Geben Sie im Editor eine leere Codezeile ein.
Nächste Bearbeitungsvorschläge werden beim Bearbeiten von Code automatisch angezeigt. Sie prognostizieren, welche Änderung Sie wahrscheinlich als nächstes basierend auf Ihren letzten Bearbeitungen vornehmen und mit einem speziellen Indikator angezeigt werden, der den vorgeschlagenen Bearbeitungsort anzeigt.
Häufige Szenarien für nächste Bearbeitungsvorschläge
Vorschläge für die nächste Bearbeitung sind besonders hilfreich in drei Codierungsszenarien:
-
Fehler abfangen: NES erkennt Probleme wie Tippfehler (
conts x = 5→const x = 5), invertierte ternäre Ausdrücke und falsche Vergleichsoperatoren und schlägt dann die richtige Lösung vor. -
Kaskadierende Absichtsänderungen: Wenn Sie einen Typ oder eine Variable umbenennen, schlägt NES vor, diese Änderung über den gesamten abhängigen Code zu verteilen. Wenn Sie beispielsweise eine Klasse von
PointaufPoint3Dumbenennen, werden Vorschläge ausgelöst, um einez-Koordinate überall dort hinzuzufügen, wo der Code sie benötigt. - Umgestaltung: Nachdem Sie eine Variable einmal umbenannt haben, schlägt NES vor, jedes andere Vorkommen zu aktualisieren. Nach dem Einfügen von Code schlägt NES vor, ihn an den Stil des umgebenden Codes anzupassen.
Generieren eines Geistertextvorschlags
GitHub Copilot beschleunigt die App-Entwicklung, indem es Codevervollständigungen basierend auf dem von Ihnen geschriebenen Code vorschlägt.
Angenommen, Sie möchten eine C#-Methode namens addInt erstellen, die die Summe von zwei ganzen Zahlen zurückgibt. Wenn Sie mit der Eingabe der Methodensignatur beginnen, schlägt GitHub Copilot den Code vor, der von Ihnen erstellt werden soll.
Der Geisttextvorschlag wird ohne farbige Syntaxmarkierung angezeigt. Dadurch wird der Vorschlag von Ihrem vorhandenen Code unterschieden. Sie können den vorgeschlagenen Code akzeptieren, indem Sie die TAB-TASTE drücken.
Sie können die ESC-TASTE drücken, um einen Vorschlag zu verwerfen.
Das beispiel addInt ist ein bisschen vereinfacht, daher fragen Sie sich vielleicht, wie GitHub Copilot mit etwas komplexerem Vorgehen arbeitet.
Angenommen, Sie möchten eine Methode erstellen, die eine Liste von Zahlen akzeptiert und die Summe der in der Liste enthaltenen Primzahlen zurückgibt. Sie könnten die Methode addPrimeNumbersInNumericListbenennen. Wenn Sie mit der Eingabe der Methodensignatur beginnen, generiert GitHub Copilot einen Vorschlag für Sie. Beispiel:
Es ist wichtig, Vorschläge zu überprüfen, bevor Sie sie annehmen. Dieser Geisttextvorschlag sieht gut aus, sodass Sie den Vorschlag annehmen können, indem Sie die TAB-TASTE drücken.
Lassen Sie uns das Szenario noch ein bisschen weiter fortsetzen.
Sobald der Vorschlag in Ihren Code zusammengeführt wurde, stellen Sie fest, dass die isPrime-Methode rot unterstrichen ist. Dies liegt daran, dass die isPrime-Methode noch nicht im Code vorhanden ist.
GitHub Copilot wird trainiert, bewährte Methoden zu befolgen, die das Aufteilen komplexer Probleme in kleinere, verwaltbare Teile umfassen. In diesem Fall schlägt GitHub Copilot vor, dass Sie eine separate isPrime-Methode erstellen, um zu überprüfen, ob eine Zahl Primzahl ist.
GitHub Copilot ist bereit, einen Codeausschnitt für die methode isPrime vorzuschlagen. Wenn Sie eine leere Zeile unterhalb der methode addPrimeNumbersInNumericList eingeben, schlägt GitHub Copilot eine isPrime-Methode vor, die Sie verwenden können.
Ghost-Textvorschläge beschleunigen den Entwicklungsprozess, indem Codeausschnitte bereitgestellt werden. Aber was geschieht, wenn die Vorschläge nicht ganz das sind, was Sie brauchen? GitHub Copilot stellt eine Schnittstelle zum Verwalten von Ghost-Textvorschlägen bereit.
Verwalten von Geistertextvorschlägen
Wenn GitHub Copilot einen Geistertextabschluss vorschlägt, bietet es auch eine Schnittstelle zum Verwalten der Vorschläge. Sie können einen Vorschlag annehmen, andere Vorschläge überprüfen oder die Vorschläge ablehnen.
Wenn Sie mit dem Mauszeiger auf eine vorgeschlagene Autovervollständigung zeigen, werden Ihnen mehrere Optionen zur Verwaltung von Vorschlägen angezeigt.
Die Standardschnittstelle für die Verwaltung von Vorschlägen umfasst die folgenden Optionen:
- Sie akzeptieren einen Vorschlag (vollständig), indem Sie Annehmen auswählen. Sie können den Vorschlag auch annehmen, indem Sie die TAB-TASTE drücken.
- Akzeptieren Sie den Vorschlag teilweise, indem Sie Accept Word auswählen. Sie können einen Vorschlag auch teilweise annehmen, indem Sie die Tasten
Ctrl+→(Pfeil nach rechts) drücken. - Zeigen Sie alternative Vorschläge an, indem Sie
>oder<auswählen. Sie können auch die alternativen Vorschläge anzeigen, indem Sie dieAlt+]- oderAlt+[tasten drücken.
Wenn Sie die Option Accept Word (Wort akzeptieren) auswählen, wird das nächste Wort im Vorschlag akzeptiert. Dies ist nützlich, wenn Sie einen Teil des Vorschlags akzeptieren und dann ihren eigenen Code eingeben möchten. Sie können z. B. das erste Wort des Vorschlags der isPrime-Methode akzeptieren.
Wählen Sie Accept Word aus, bis Sie den gewünschten Teil des Vorschlags akzeptiert haben.
Wenn Sie das Auslassungszeichen (...) rechts neben der Schaltfläche "Word annehmen" auswählen, werden zusätzliche Optionen wie Zeile annehmen und Symbolleiste immer anzeigen angezeigt.
Wenn Sie die Option " Symbolleiste immer anzeigen " auswählen, wird sichergestellt, dass die Symbolleiste sichtbar bleibt, wenn Sie Tastenkombinationen zum Verwalten von Geistertextvorschlägen verwenden. Wenn Sie die Option Vervollständigungsbereich öffnen auswählen, wird der GitHub Copilot Vervollständigungsbereich geöffnet.
Hinweis
Um eine gesamte Zeile eines Vorschlags anzunehmen, müssen Sie eine benutzerdefinierte Tastenkombination für den editor.action.inlineSuggest.acceptNextLine Befehl konfigurieren. Diese Option ist in der Symbolleiste standardmäßig nicht verfügbar.
Generieren von Codevorschlägen aus Kommentaren
Zusätzlich zum Vorschlag einer Autovervollständigung auf Basis von Code kann GitHub Copilot auch Codekommentare verwenden, um Code-Snippets vorzuschlagen. Verwenden Sie Ausdrücke in natürlicher Sprache, um den Code zu beschreiben, den Sie erstellen möchten. Auf diese Weise können GitHub Copilot Vorschläge für autoVervollständigen vorschlagen, die bestimmten Anforderungen entsprechen. Sie können z. B. den Typ des Algorithmus angeben, den Sie in einer Berechnung verwenden möchten, oder welche Methoden und Eigenschaften Sie einer Klasse hinzufügen möchten.
Fahren Sie nun mit dem Primzahlenbeispiel fort. An diesem Punkt haben Sie den folgenden Code:
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;
}
Die methoden addPrimeNumbersInNumericList und isPrime scheinen abgeschlossen zu sein. Sie benötigen jedoch weiterhin eine Liste von Zahlen, die beim Aufrufen der addPrimeNumbersInNumericList-Methode als Argument verwendet werden können. Sie können einen Kommentar schreiben, der die liste der gewünschten Zahlen beschreibt. Beispielsweise eine Liste mit 100 Zufallszahlen, die zwischen 1 und 1000 liegen.
Wenn Sie mit der Eingabe des Kommentars beginnen, schlägt GitHub Copilot eine Autovervollständigung vor, die den Kommentar für Sie abschließt. GitHub Copilot verwendet ihren umgebenden Code, um seine Vorschläge zu verbessern. Wenn Sie beispielsweise mit der Eingabe des Kommentars // create beginnen, verwendet GitHub Copilot den umgebenden Code, um vorherzusagen, was Sie erstellen möchten. In diesem Fall verwendet GitHub Copilot die methode addPrimeNumbersInNumericList, um vorherzusagen, dass Sie a list of numbers erstellen möchten.
Während Sie Ihren Kommentar weiter schreiben, aktualisiert GitHub Copilot seine Autovervollständigungsvorschläge. Wenn Sie bereit sind, den Vorschlag anzunehmen, wählen Sie Annehmen aus, oder drücken Sie die TAB-TASTE.
Wenn Sie nach dem Kommentar eine neue Codezeile erstellen, beginnt GitHub Copilot, einen Codeausschnitt basierend auf dem Kommentar und dem vorhandenen Code zu generieren.
Akzeptieren Sie alle Vorschläge, sobald sie erscheinen. Wenn GitHub Copilot noch nicht fertig ist, wird ein weiterer Vorschlag generiert, den Sie akzeptieren können.
Wenn Sie nachdem der Codeausschnitt abgeschlossen ist, eine neue Codezeile eingeben, generiert GitHub Copilot basierend auf den Anforderungen Ihres Codeprojekts weitere Vorschläge zur Autovervollständigung.
Zusammenfassung
Ghost-Textvorschläge und nächste Bearbeitungsvorschläge helfen Ihnen, Code effizienter und präziser zu schreiben. Ghost-Textvorschläge werden während der Eingabe als schwach dargestellter Text an der Cursorposition angezeigt. Vorschläge zur nächsten Bearbeitung prognostizieren die Position und den Inhalt Ihrer nächsten Bearbeitung basierend auf Ihren letzten Änderungen. Sie können einen Ghost-Textvorschlag generieren, indem Sie eine partielle oder vollständige Codezeile, einen teilweisen oder vollständigen Codekommentar oder eine leere Codezeile eingeben. Sie können einen Vorschlag annehmen, indem Sie die TAB-TASTE drücken oder ihn schließen, indem Sie die ESC-TASTE drücken. Sie können Vorschläge mithilfe der Symbolleiste verwalten, die angezeigt wird, wenn Sie auf einen Vorschlag zeigen. Mithilfe der Symbolleiste können Sie alternative Vorschläge überprüfen, einen Vorschlag annehmen, ein Wort eines Vorschlags annehmen oder den GitHub Copilot Fertigstellungsbereich öffnen, um weitere Vorschläge anzuzeigen.