Matt Muschol
Matt is a software specialist with over 25 years of experience. He is the founder of Swiftix Software and has a history of working with Atlassian tools, for which he provides mentoring and software consultancy services.
Duo unterstützt euch sowohl in der webbasierten Benutzeroberfläche als auch beim Schreiben von Code in einer IDE wie IntelliJ IDEA oder Microsoft Visual Studio.
GitLab Duo unterstützt euch bei Code- und Nicht-Code-Aufgaben. Hier findet ihr eine Liste der Dinge, die Duo für euch erledigen kann.
Duo ChatInteragiert mit Duo und erhaltet Antworten auf fast alles.
Code SuggestionsBeschreibt eure Anforderungen in natürlicher Sprache und lasst Code für euch generieren.
Code ExplanationsErhaltet Erklärungen zu komplexen Codeteilen in natürlicher Sprache.
Test GenerationGeneriert Regressionstests für Codeteile.
Suggested ReviewersFügt Merge Requests die am besten geeigneten Reviewer hinzu.
Interagiert mit Duo und erhaltet Antworten auf fast alles.
Beschreibt eure Anforderungen in natürlicher Sprache und lasst Code für euch generieren.
Erhaltet Erklärungen zu komplexen Codeteilen in natürlicher Sprache.
Generiert Regressionstests für Codeteile.
Fügt Merge Requests die am besten geeigneten Reviewer hinzu.
Derzeit befinden sich auch einige zusätzliche Funktionen in der Beta-Phase, etwa die automatisierte Erstellung von Beschreibungen für Merge Requests auf Grundlage von Codeänderungen sowie die Behebung von Sicherheitslücken, die durch SAST-Scans (Static Application Security Testing) erkannt wurden.
Die Liste der Duo-Funktionen wächst stetig. Den aktuellen Stand findet ihr hier.
Zugriff auf Duo
Bevor ihr GitLab Duo nutzen könnt, muss eurem Account eine Duo Pro- oder Duo Enterprise-Lizenz zugewiesen sein*. Wichtig: GitLab Duo ist ein Add-on, das separat von eurem GitLab-Abonnement angeboten wird. Ihr müsst es nicht für alle kaufen.
Ihr könnt weniger Lizenzen für GitLab Duo erwerben, als ihr GitLab-Lizenzen habt, und anschließend festlegen, wer Zugriff erhält. Das bedeutet jedoch auch, dass ihr einem Benutzer keine Duo-Lizenz zuweisen könnt, wenn er keinen Zugriff auf GitLab in derselben Instanz hat – bei selbstverwalteten Instanzen oder Top-Level-Gruppen beziehungsweise bei GitLab.com.
*Bitte beachtet, dass zum Zeitpunkt der Erstellung einige Duo-Funktionen ohne Abonnement verfügbar waren. Um jedoch auf alle Funktionen zuzugreifen, einschließlich Code Suggestions, muss eurem GitLab-Account eine Duo-Lizenz zugewiesen sein.
GitLab Duo in der Weboberfläche
Sobald euch eine Duo-Lizenz zugewiesen wurde, erscheinen in der GitLab-Weboberfläche neue Schaltflächen. Mit ihnen könnt ihr Duo nutzen, um Informationen zu generieren oder Aktionen für euch auszuführen. Diese Schaltflächen tragen das GitLab-Duo-Logo.
Wenn ihr beispielsweise einen neuen Merge Request erstellt, gibt es eine neue Schaltfläche (unten gelb hervorgehoben), mit der ihr automatisch eine Beschreibung für euren Merge Request auf Grundlage der Codeänderungen generieren könnt:
Die Änderung in meinem Branch war sehr klein, wird aber durch die Beschreibung, die Duo hier generiert hat, ziemlich prägnant zusammengefasst.
Ein weiteres gutes Beispiel für die Nutzung von Duo in der Weboberfläche sind GitLab-Issues. Es kommt häufig vor, dass ein GitLab-Issue viele Kommentare enthält, sodass es manchmal schwerfällt, den Überblick zu behalten.
Duo kann die Kommentare zusammenfassen und euch eine aus dem Kommentarbereich extrahierte Aufzählung bereitstellen:
Erste Schritte mit Code Suggestions
Code Suggestions gehören besonders für Entwickler zu den spannendsten Funktionen.
Wenn ihr in einer IDE arbeitet, müsst ihr eine Erweiterung installieren, um Code Suggestions während des Tippens nutzen zu können. Die Erweiterung ist für die beliebtesten IDEs verfügbar, etwa VS Code, Visual Studio, IntelliJ IDEA und Neovim.
Nachdem ihr die GitLab-Workflow-Erweiterung installiert habt, erhaltet ihr nicht nur Code Suggestions, sondern auch die folgenden Funktionen direkt in der IDE:
Mit Merge Requests interagieren
Mit GitLab Issues interagieren
Mit GitLab Duo Chat interagieren
Nach der Installation müsst ihr euch über die Erweiterung in eurer IDE bei GitLab anmelden. Ihr könnt entweder die OAuth-basierte Anmeldung verwenden oder einen persönlichen GitLab Access Token mit API-Bereich hinzufügen – je nachdem, was für euch besser passt.
Anschließend könnt ihr Code Suggestions nutzen, indem ihr einen Kommentar in natürlicher Sprache in euren Code schreibt. In meinem NodeJS-basierten Webserver wollte ich beispielsweise HTML-Text aus einer Datei lesen und ihn als Antwort auf eine GET-Anfrage an meinen Server zurückgeben.
Wie ihr sehen könnt, erkennt Duo anhand des Kontexts, dass ich einen ExpressJS-Webserver schreibe, und der vorgeschlagene Code (grau dargestellt) passt zu diesem Kontext. Ihr seht aber auch, dass ich am Ende etwas erhalten würde, das keinen Sinn ergibt, wenn ich diesen Code übernähme.
Der Grund dafür ist einfach: Wie bei allen Technologien müsst ihr wissen, wie ihr sie nutzt, um das Beste aus ihnen herauszuholen. Ich war einfach nicht spezifisch genug, und Code Suggestions sind nur so gut wie eure Fragen.
Schauen wir uns also ein weiteres Beispiel an. Ich möchte, dass mein Server auf eine GET-Anfrage reagiert, die eine E-Mail-Adresse als Eingabe erhält und den Inhalt einer passenden Datei zurückgibt.
Zuerst schreibt ihr den Kommentar und schaut dann, was vorgeschlagen wird. Wie ihr sehen könnt, ist meine Beschreibung ziemlich vage, trotzdem wurde genau das erzeugt, was ich wollte.
Also übernehme ich den Vorschlag, indem ich die TAB-Taste drücke.
Der Codeabschnitt ist zwar gut, prüft aber nicht, ob der Query-Parameter „email“ tatsächlich wie eine E-Mail-Adresse aussieht. Bitten wir Duo also, Code zu generieren, der dies mit einem regulären Ausdruck validiert.
Das ist wirklich ziemlich cool. Die Einrückung stimmt nicht ganz, aber der Code ist fast fertig. Also übernehme ich auch diesen Codeabschnitt.
Wie ihr sehen könnt, kann ich GitLab Duo mithilfe von Kommentaren in natürlicher Sprache bitten, Code für mich neu zu generieren. Es kann etwas Ausprobieren erfordern, bis ihr den richtigen Code bekommt. Bleibt dran, schreibt weiter Kommentare und verfeinert sie, bis ihr das gewünschte Ergebnis erreicht.
Code Explanations nutzen
Die nächste interessante Funktion für Entwickler sind Code Explanations. Seid ihr schon einmal auf Code gestoßen, den ihr nicht ganz verstanden habt? Im vorherigen Abschnitt haben wir beispielsweise Code generiert, der prüft, ob ein String wie eine E-Mail-Adresse aussieht.
Wenn ihr mit regulären Ausdrücken nicht vertraut seid, kann es schwierig sein, sie zu verstehen. Bitten wir Duo also, ihn für uns zu erklären.
Um eine Erklärung zu erhalten, verwendet ihr Duo Chat mit dem Befehl „/explain“. Zum Beispiel:
/explain const emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
Ihr könnt Duo Chat entweder in der Weboberfläche oder direkt in eurer IDE nutzen. In diesem Fall wählen wir den Weg über die IDE:
Und schon erklärt es detailliert, was der reguläre Ausdruck macht und wie er funktioniert.
Das funktioniert sowohl für einzelne Zeilen als auch für ganze Funktionen. Probieren wir eine kleine Funktion aus:
Hier erklärt es, was der Code macht und wie er sein Ziel erreicht. Code Explanations vereinfachen jedoch keinen Code für euch. Mein Lieblingsbeispiel sind komplexe boolesche Ausdrücke, die sich mit etwas boolescher Algebra vereinfachen lassen.
Wenn ihr GitLab Duo Chat solch komplexe Ausdrücke gebt, erklärt es den Ausdruck korrekt und unter welchen Bedingungen er wahr oder falsch wäre. Es geht jedoch nicht den nächsten Schritt und liefert euch keinen neuen, äquivalenten und deutlich einfacheren Ausdruck – was ziemlich schade ist.
Die Qualität generativer AI
Wie bei den meisten Funktionen mit generativer AI hängt die Qualität der Antwort von zwei Faktoren ab:
Die Frage bzw. Anweisung
Das AI-Modell selbst
Bei Code Suggestions führen vage Anweisungen in Kommentaren wahrscheinlich nicht zu zufriedenstellenden Ergebnissen. Daher müssen wir lernen, Kommentare in natürlicher Sprache so zu formulieren, dass ein generatives AI-Modell wie GitLab Duo einfach gute Vorschläge machen kann. Und manchmal liegt es, wie jede generative AI, einfach falsch. Das zeigt, dass diese Modelle selbst mit guten Eingaben nicht unfehlbar sind.
Insgesamt liefert GitLab Duo für viele Szenarien, Architekturen und Sprachen ziemlich gute Code Suggestions. Wir haben es hauptsächlich mit Java und JavaScript eingesetzt, einschließlich ReactJS-Frontend-Code, und die Ergebnisse sind sehr gut. So beeindruckend es manchmal auch ist: GitLab Duo ersetzt Programmierer nicht und soll das auch nicht. Es wurde entwickelt, um Programmierern dabei zu helfen, schneller besseren Code zu schreiben – und das gelingt ihm gut.
Trotz all dem gibt es bei GitLab Duo eine offensichtliche Lücke, die mich etwas überrascht hat: Ich konnte Duo keine Hilfe zu .gitlab-ci.yml-Dateien entlocken. Da Duo für GitLab entwickelt wurde, hätte man gedacht, dass es mir auch beim Schreiben meiner CI-Datei helfen kann! Leider ist das nicht der Fall, aber ich freue mich auf den Tag, an dem es das kann. Bleibt dran.
- GitLab
Subscribe to our newsletter
Related blogs