Einblicke
Dieser Link führt zurück
OpenAI
,
GitHub Copilot
,
Künstliche Intelligenz
,

Wie man GitHub Copilot verwendet: Ein KI-Codierungsassistent (Demo)

Wie man GitHub Copilot verwendet: Ein KI-Codierungsassistent (Demo)
24.7.2023

In diesem Artikel führen wir Sie durch die Funktionen und Vorteile von GitHub Copilot, einem innovativen KI-gestützten Coding-Assistenten, indem wir eine Coding-Demo zeigen. Als Nutzer von GitHub Enterprise und GitHub Advanced Security haben wir aus erster Hand Erfahrungen mit diesem KI-Codierassistenten gesammelt, was uns dazu veranlasst hat, unsere Erkenntnisse und unser Fachwissen zu teilen.  

Was ist GitHub Copilot

GitHub Copilot agiert als Ihr KI-Paar-Programmierer und bietet intelligente Vorschläge und Unterstützung, während Sie programmieren. Er überwacht Ihre aktuellen Aktionen und Ihren bisherigen Code und liefert wertvolle kontextbasierte Vorschläge, die Sie bei Ihrer täglichen Programmierarbeit aktiv unterstützen. Der Copilot basiert auf OpenAIs Codex-KI-Implementierung und verfügt über umfangreiche Kenntnisse in mehreren Programmiersprachen und Technologien.

AI Coding Assistant: Unterstützte IDEs und Technologien

Dieser KI-Codierassistent lässt sich nahtlos in gängige IDEs wie Visual Studio, Visual Studio Code, JetBrains IDEs (wie IntelliJ und Goland) und Neovim integrieren. Er unterstützt viele Programmiersprachen, darunter Go, Java, JavaScript, TypeScript und mehr. Darüber hinaus erweitert GitHub Copilot sein Know-how auf Technologien wie Terraform, Docker, Kubernetes, GitHub Actions und benutzerdefinierte Dateien.

Schreiben Sie zunächst einen Kommentar.

Sie können anfangen, einen Kommentar zu schreiben. Ich schreibe zum Beispiel einen Kommentar wie "Gib die Liste der Personen sortiert nach dem angegebenen Feld zurück", und wenn ich die Eingabetaste drücke, generiert dieser KI-Codierassistent einen Vorschlag für die Methodensignatur in Go, meiner bevorzugten Programmiersprache. Er schlägt vor, eine Funktion namens "SortPersons" zu implementieren, die eine Liste von Personen und ein Feld als String zur Steuerung der Sortierung annimmt. Wenn ich die Tabulatortaste drücke, akzeptiere ich den Vorschlag, und wenn ich erneut die Tabulatortaste drücke, wird der vollständige Code angezeigt, der genau das implementiert, was ich wollte. Auf diese Weise erhält man mühelos eine nach dem angegebenen Feld sortierte Liste von Personen. So funktioniert der GitHub Copilot in Aktion.

Sie können sich das Video ansehen, um den Vorgang zu verfolgen.

Leistungsstark bei der Erstellung von Tests

AI GitHub Copilot ist nicht nur großartig beim Generieren von Code, sondern auch unglaublich leistungsfähig, wenn es um das Erstellen von Tests geht. Wenn Sie zum Beispiel den Kommentar "Testen Sie die Funktion "Personen sortieren"" schreiben, schlägt es schnell eine Methode namens "TestSortPersons" vor, und fast alles, was Sie auf dem Bildschirm sehen, wird von GitHub Copilot generiert. Ich muss den Code nur noch überprüfen, um sicherzustellen, dass er mit meinen Absichten und meinem Codierungsstil übereinstimmt. Auf diese Weise kann ich beschreiben, was ich will, und GitHub Copilot unterstützt mich aktiv bei der Erstellung des erforderlichen Testcodes.

KI-gestützter All-in-One-Assistent für Kodierung, Infrastruktur und Dokumentation

Es ist erwähnenswert, dass AI GitHub Copilot unabhängig von GitHub selbst arbeitet. Sie können Ihren Code auf Hosting-Plattformen wie Azure DevOps oder GitLab speichern. Wenn Sie jedoch GitHub verwenden, werden Sie wahrscheinlich zusätzliche Vorteile finden. Wenn Sie beispielsweise mit GitHub Actions-Pipelines arbeiten, die in der Regel in einer YAML-Datei beschrieben werden, geht das Wissen von GitHub Copilot über Programmiersprachen hinaus und umfasst Technologien wie GitHub Actions. Ob Sie also programmieren, GitHub Actions konfigurieren oder mit Docker-Dateien arbeiten, dieser KI-Codierassistent bietet wertvolle Vorschläge und Unterstützung in verschiedenen Bereichen der Entwicklung.

Bei der Arbeit mit Terraform, einer beliebten Sprache zur Beschreibung von Infrastrukturen, kann Copilot durch das Schreiben eines Kommentars wie "create a public IP" (Erstellen einer öffentlichen IP) auf Ihre Bedürfnisse zugeschnittene Ressourcenvorschläge machen, wie z. B. eine öffentliche IP, und diese effizient in der entsprechenden Ressourcengruppe organisieren, wie in diesem Beispiel "Camino". Dies zeigt, dass Copilot in der Lage ist, bei verschiedenen Technologien zu helfen, einschließlich dem Schreiben von Dokumentation und der Bereitstellung von Infrastrukturen mit Terraform.

GitHub-Aktionen

Die Unterstützung von GitHub Copilot geht über Programmiersprachen hinaus und umfasst eine breite Palette von Technologien, die in der modernen Entwicklung verwendet werden. Die Abdeckung ist umfangreich, von GitHub Actions und Dependabot bis hin zu HTML, CSS und anderen Front-End-Technologien. Bei PRODYNA haben wir Copilot erfolgreich implementiert und nutzen seine Möglichkeiten aktiv.  

Lassen Sie uns in unserer Demo noch mehr spannende Aspekte dieses KI-Codierassistenten kennenlernen.

Einen kleinen REST-Dienst in Go von Grund auf aufbauen

Ich verwende Intellij als IDE und habe ein neues Projekt namens "demo" erstellt. Wenn ich mit dem Schreiben von Code in der Datei main.go beginne, liefert GitHub Copilot intelligente Vorschläge, z. B. den Paketnamen und eine einfache Hauptfunktion, die "Hallo" ausgibt. Der Code wird mit nur wenigen Tabulatoren und Eingabetasten generiert. Ich starte die Anwendung und sehe erfolgreich die "Hello world"-Nachricht. Es ist unglaublich, wie GitHub Copilot die Codierung beschleunigt und eine genaue Codegenerierung gewährleistet.

Erstellen Sie einen REST-Endpunkt, der Informationen über Personen bereitstellt

Nun gut, lassen Sie uns in eine komplexere Demo eintauchen. In diesem Fall möchte ich einen REST-Endpunkt erstellen, der Informationen über Personen bereitstellt.  

Zunächst muss ich die Struktur einer Person definieren, einschließlich ID, Vorname und Nachname. GitHub Copilot schlägt eine Struktur namens "Person" vor und fügt sogar JSON-Annotationen für die Serialisierung hinzu. Perfekt. Als Nächstes benötige ich eine Funktion zum Erstellen einer Person, und auch hier bietet ein KI-Codierassistent mit der Funktion "NewPerson" eine praktische Lösung. Außerdem benötige ich eine Struktur zur Speicherung mehrerer Personen, die ich "Persons" nenne. Erstaunlicherweise erkennt AI GitHub Copilot meine Bedürfnisse und generiert den entsprechenden Code, der sogar die notwendigen Anmerkungen enthält. Nun möchte ich eine Funktion erstellen, die fünf zufällige Personen generiert. Der erste Code ist schnell erstellt, und ich kann ihn weiter verfeinern, indem ich bei Bedarf alternative Vorschläge auswähle. Schließlich möchte ich eine Funktion, die die IDs aller Personen abruft. GitHub Copilot schlägt prompt die Funktion "GetIDs" vor, die ein Array von Strings zurückgibt. Die Ausführung des Tests bestätigt den Erfolg der Funktion.

Konzentrieren wir uns nun auf die Erstellung des REST-Dienstes. Ich brauche einen HTTP-Router, und GitHub Copilot erkennt meinen Bedarf an dem Chii-Router. Er schlägt die Router-Implementierung vor und generiert den Code, wenn ich ihn bestätige. Allerdings stoße ich auf ein Problem, da GitHub Copilot die erforderlichen Pakete nicht automatisch importiert. Ich füge den fehlenden Import hinzu, lade die Chi-Bibliothek herunter, und das Problem ist behoben. Ein KI-Codierassistent unterstützt mich weiterhin, indem er Routen vorschlägt, wie z. B. "/persons", das die IDs aller Personen zurückgibt. Er erstellt die Route mit der richtigen Logik auf der Grundlage der vorhandenen Funktionen, die ich definiert habe. Da der Server auf Port 8080 läuft, teste ich den Endpunkt mit curl, und er liefert erfolgreich eine Liste von Personen zurück.

Um das Antwortformat zu verbessern, ändere ich den Code, um die IDs in das JSON-Format umzuwandeln. GitHub Copilot bietet Vorschläge für die Fehlerbehandlung und die Verwendung von Logging-Frameworks. Ich entscheide mich für Logrus, importiere es und baue es in den Code ein. Wenn ich nun den Server ausführe und eine Curl-Anfrage stelle, erhalte ich eine JSON-Antwort.

Im weiteren Verlauf der Implementierung möchte ich Personen anhand ihrer ID abrufen. GitHub Copilot schlägt intelligenterweise vor, eine Route für den Endpunkt "person/{id}" hinzuzufügen, die die Person mit der angegebenen ID zurückgibt. Es generiert den Code, einschließlich der erforderlichen Protokollierung. Um die Implementierung zu verfeinern, muss ich eine eigene Funktion, "FindPersonByID", erstellen, um die Suche zu verarbeiten. AI GitHub Copilot erkennt die neue Funktion und passt den Code entsprechend an. Nachdem ich ein kleines Problem behoben habe, starte ich den Server neu, teste ihn und kann eine bestimmte Person anhand ihrer ID erfolgreich abrufen.

Um die Codequalität sicherzustellen, muss ich auch einen Test für die Funktion "FindPersonByID" erstellen. GitHub Copilot schlägt die Testfunktion vor, und ich kann sie ausführen, um das gewünschte Verhalten zu überprüfen.

Zusammenfassend lässt sich sagen, dass das Programm den Entwicklungsprozess während der gesamten Demo maßgeblich unterstützt hat. Es erzeugt nicht nur funktionierenden Code, sondern hilft auch bei der Dokumentation und bei der Einhaltung etablierter Codierungspraktiken.

Verpackung der Anwendung als Docker-Container mit mehrstufiger Erstellung

Im letzten Teil der Demo konzentrieren wir uns auf die Paketierung der Anwendung als Docker-Container. Zu diesem Zweck erstellen wir ein Dockerfile mit einem mehrstufigen Build-Ansatz. GitHub Copilot hilft bei der Erstellung des Dockerfiles und vereinfacht den Prozess der Erstellung und Ausführung der Anwendung.

Das Dockerfile beginnt mit einer Beschreibung eines mehrstufigen Builds für die Go-Anwendung. Ein KI-Codierassistent schlägt die Stufen vor, und wir geben die Builder-Stufe als Golang 1.20 an. Wir installieren Git als Abhängigkeit für das Herunterladen von Projektabhängigkeiten. Das aktuelle Arbeitsverzeichnis wird auf das "app"-Verzeichnis gesetzt, und die Go-Modul- und Sum-Dateien werden kopiert. Die Abhängigkeiten werden dann mit "go mod download" heruntergeladen.

Anschließend werden die Quelldateien aus dem aktuellen Verzeichnis in das Arbeitsverzeichnis kopiert. Der letzte Schritt in der Builder-Phase ist die Erstellung der Anwendung. In der zweiten Phase wählen wir ein Alpine-Image als Laufzeitumgebung. Der Port 8080 wird offengelegt, was GitHub Copilot auf intelligente Weise erkennt. Schließlich wird der Befehl zum Ausführen der ausführbaren Datei als "main" angegeben.

Nachdem die Dockerdatei vollständig ist, wird das Docker-Image erstellt. Nach der Verbindung mit Docker führen wir den Build-Befehl aus, der die erforderlichen Images abruft und den Container erstellt. Sobald der Build abgeschlossen ist, können wir das neu erstellte Image mit dem Namen "demo" in der Liste der Docker-Images sehen.

Um den Container zu testen, führen wir ihn mit dem gerade erstellten Docker-Image aus. Nach erfolgreicher Ausführung ist die Anwendung einsatzbereit und läuft. Obwohl die Demo im Voraus vorbereitet wurde, ist es wichtig zu erwähnen, dass wir mit Hilfe von GitHub Copilot mühelos die Dockerdatei erstellen und den Container bauen konnten.

Als Softwareentwickler bin ich erstaunt über die Leistungsfähigkeit von GitHub Copilot. Ich kann einen voll funktionsfähigen REST-Dienst mit minimalem Programmieraufwand erstellen, indem ich einfach beschreibe, was ich möchte. GitHub Copilot bietet während des gesamten Prozesses intelligente Vorschläge und Unterstützung und verwandelt meine Beschreibungen in funktionierenden Code. Es ist unglaublich, wie dieser KI-gestützte Programmierassistent die Entwicklung revolutioniert und die Produktivität steigert.

Was kann GitHub Copilot nicht tun? Werde ich meinen Job als Programmierer verlieren?

Als Softwareentwickler ist es wichtig zu verstehen, dass GitHub Copilot zwar ein unglaublich leistungsfähiges Tool ist, aber auch seine Grenzen hat. Es kann zwar beim Schreiben und Implementieren von Code auf der Grundlage von Beschreibungen und Vorschlägen helfen, aber es kann keine strategischen Aspekte wie Projektstruktur oder Dateiorganisation behandeln. Dies sind Aufgaben, die immer noch menschliches Verständnis und Entscheidungen erfordern.

Eine häufige Sorge ist, ob ein KI-Codierassistent Programmierer überflüssig machen und zu Arbeitsplatzverlusten führen wird. Die Antwort ist nein. GitHub Copilot steigert zwar die Produktivität erheblich und bietet wertvolle Unterstützung, ersetzt aber nicht die Rolle des Programmierers. Die Kompetenz des Programmierers, die allgemeinen Anforderungen zu verstehen, kritische Entscheidungen zu treffen und komplexe Probleme zu lösen, ist nach wie vor entscheidend. GitHub Copilot ist ein wertvoller Assistent, aber er ersetzt nicht den Bedarf an erfahrenen Programmierern, die Ideen effektiv in funktionalen und effizienten Code umsetzen können.

Vorteile der Verwendung von AI GitHub Copilot

In nur wenigen Minuten habe ich 175 Zeilen Code von Grund auf neu geschrieben, darunter die Hauptanwendung, Tests und eine Dockerdatei. Die Hilfe von GitHub Copilot war von unschätzbarem Wert und ermöglichte es mir, mühelos von null auf den Helden zu kommen. Es ist wirklich erstaunlich, wie schnell und effektiv es hilft, den Codierungsprozess zu rationalisieren.

Codiergeschwindigkeit: GitHub Copilot verbessert die Codiergeschwindigkeit durch intelligente Code-Vorschläge und automatische Vervollständigung erheblich. Er analysiert den Kontext und bietet relevante Codeschnipsel an, was Zeit und Mühe bei der Eingabe von sich wiederholendem oder Standardcode spart. So können Sie den Code schneller schreiben und sich auf die Lösung von Problemen auf höherer Ebene konzentrieren.

Hilft bei sich wiederholenden Aufgaben: Es zeichnet sich durch die Automatisierung sich wiederholender Programmieraufgaben aus. Es kann Code für gängige Muster generieren, Funktionsstümpfe erstellen und Lösungen für alltägliche Programmieraufgaben vorschlagen. Dadurch, dass Copilot die Notwendigkeit reduziert, sich wiederholenden Code von Grund auf zu schreiben, erhöht Copilot die Effizienz und erspart Entwicklern langwierige und zeitraubende Aufgaben.

Dokumentation: Ein KI-Codierassistent hilft bei der Erstellung von Dokumentation und Kommentaren innerhalb des Codes. Während Sie Code schreiben, kann Copilot relevante Kommentare und Dokumentation für Funktionen, Klassen und andere Codekomponenten vorschlagen. Dies verbessert die Lesbarkeit des Codes, erleichtert die zukünftige Wartung und stellt sicher, dass die Codebasis auch nach längerer Zeit noch verständlich ist.

Reduzieren Sie monotone Arbeit: Es reduziert die Belastung durch monotone und alltägliche Codierungsaufgaben. Sie kümmert sich um die Generierung von Standardcode, Routineimplementierungen und sich wiederholende Code-Optimierungen und setzt so die Zeit und geistige Energie der Entwickler frei. So können Sie sich auf kreativere und anspruchsvollere Aspekte des Projekts konzentrieren, was zu mehr Arbeitszufriedenheit und Engagement führt.

Tests: GitHub Copilot kann auch beim Schreiben von Tests helfen. Es kann Testfallszenarien, Testfunktions-Setups und Assertions auf der Grundlage des Codekontexts vorschlagen. Die Automatisierung von Teilen des Testprozesses trägt dazu bei, die Zuverlässigkeit des Codes zu gewährleisten und einen testgetriebenen Entwicklungsansatz zu fördern. Die Erstellung von Unit-Tests wird beschleunigt, was die Aufrechterhaltung der Codequalität und die Identifizierung potenzieller Probleme erleichtert.

Datenschutz

Bei PRODYNA steht der Datenschutz bei der Nutzung von GitHub Copilot an erster Stelle. Ihr Code und Ihre Snippets werden sicher auf GitHub verarbeitet, wobei unsere dokumentierten Datenschutzpraktiken eingehalten werden. Nach der Erstellung von Empfehlungen wird Ihr Code umgehend verworfen. Unsere Datenverarbeitungsverfahren sind in der Datenschutzerklärung für GitHub Copilot for Business vollständig beschrieben, die über einen QR-Code oder eine Online-Suche zugänglich ist.  

Wir werden Ihnen die Vorteile von GitHub Copilot erläutern, um Transparenz zu gewährleisten und eine schnellere Codierung und schnellere Ergebnisse zu ermöglichen. Wenn Sie mit den Datenschutzbestimmungen nicht einverstanden sind, können wir den KI-Codierassistenten deaktivieren. Wenn Sie zustimmen, können wir weiterhin transparente Code-Snippets übertragen und verarbeiten.  

----

Zusammenfassend lässt sich sagen, dass GitHub Copilot ein KI-gestützter Programmierassistent ist, der die Geschwindigkeit der Programmierung beschleunigt, sich wiederholende Aufgaben rationalisiert, die Dokumentation verbessert, banale Arbeiten reduziert und den Datenschutz respektiert, wodurch der gesamte Entwicklungsprozess für Softwareingenieure verbessert wird.

Darko Krizic
Darko Krizic
Leiter der Technologieabteilung
Darko Krizic ist ein Gründungsmitglied von PRODYNA und Chief Technology Officer. Er hat Informatik an der FH Frankfurt studiert. In seiner Freizeit hofft er auf gutes Wetter, um seinen Privatpilotenschein bei einer Sightseeing-Tour oder auf dem Mountainbike zu nutzen.

Weitere verwandte Themen

weißer Pfeil, der nach unten zeigt

Weiter scrollen, um zurückzukehren

Dies ist ein "Zurück zum Anfang" Button