Entwickeln mit KI: IntelliJ IDEA, Visual Studio IntelliCode und Tabnine im Test

Seite 4: Visual Studio Code mit IntelliCode

Inhaltsverzeichnis

Visual Studio Code ist verglichen mit integrierten Umgebungen wie Eclipse IDE oder IntelliJ IDEA eher ein Editor. Microsoft hat das Tool Ende 2015 als Open Source freigegeben. Visual Studio Code ist für Windows, macOS und Linux verfügbar und kostenfrei. Es implementiert Programmiersprachen wie JavaScript, C++, C#, PHP, Python und Java. Das Installieren ist in wenigen Sekunden beendet. Für bestimmte Sprachen wie Java und Kotlin sind Erweiterungen zu installieren. Im Fall von Java stellt Red Hat sie bereit. Sie basieren auf den Eclipse-Technologien JDT, M2Eclipse und Buildship.

Der Test setzt Visual Studio Code 1.57.0 mit der Microsoft-KI-Erweiterung IntelliCode ein. Beim ersten Start findet Visual Studio Code die JRE automatisch, sofern sie korrekt installiert wurde. Der Editor präsentiert sich mit einer minimalistischen Oberfläche. Visual Studio Code arbeitet nicht mit Projektdateien, sondern – ähnlich der Eclipse IDE – mit einem Workspace-Konzept. Als Build-Tool lässt sich Maven einsetzen. Wie bei IntelliJ IDEA müssen sich Entwicklerinnen und Entwickler beim Erzeugen einer Klasse nicht durch mehrseitige Assistenten kämpfen. Stattdessen generiert Visual Studio Code zunächst eine leere Klassenhülle, die sich mit der Programmierhilfe vervollständigen lässt.

Der erste Testdurchlauf, das technische Kopierprogramm, produzierte Konstruktoren, Getter- und Setter-Methoden sowie Konstrukte wie Schleifen weitgehend automatisch. JavaDoc ergänzt Visual Studio Code automatisch, und auch das Kopieren einzelner Abschnitte ist einfach. Möchte man eine Annotation einfügen, genügt es, ein @-Zeichen zu tippen, wie es bei vielen Editoren Standard ist.

Will man eine Methode eines Objekts aufrufen, zeigt der Editor alle möglichen Optionen an. Hier kann es aber zu Fehlgriffen kommen. Wie Tabnine bietet Visual Studio Code an erster Stelle die Methode listFiles() an, die an dieser Stelle einen Fehler verursachen würde. Deshalb den Algorithmus zu ändern, ist nicht zielführend.

Visual Studio Code zeigt wie Tabnine die Methode listFiles() an.

Bei Try-Catch-Blöcken erzeugt Visual Studio Code den Rumpf des Blocks, wenn man das Schlüsselwort try eingibt. Es lässt sich darüber streiten, ob das sinnvoll ist. Wir empfinden das Angebot der Codevervollständigung hier als kontraproduktiv, denn es führt dazu, dass die Programmierhilfe eine unspezifizierte Exception im Catch-Block einsetzt, die Entwickler danach wieder mit einer korrekten Exception ersetzen müssen. Die Programmierhilfe kann schließlich nicht vor dem Eingeben der Methode, die eine Exception auslöst, ahnen, welche Exception sinnvollerweise zu behandeln ist. Es empfiehlt sich, wie bei IntelliJ zuerst die Anweisung einzugeben, die eine Exception werfen kann, und danach zu entscheiden, ob man sie weiterreicht oder an Ort und Stelle behandelt.

Beim fachlichen Test mit dem fiktiven Einkaufsprogramm traten beim Implementieren der Basisklassen keine Probleme auf. Allerdings ergaben sich auch keine nennenswerten Produktivitätsgewinne. Da ein Training der entsprechenden Klassen fehlt, lieferte die Codevervollständigung das, was IntelliJ IDEA zuvor ebenfalls angezeigt hatte. Vorschläge für fachlich sinnvolle Namen sind bei Visual Studio Code auch bei wiederholter Implementierung Fehlanzeige. Wie im technischen Test ließen sich Attribute anlegen und sowohl Konstruktoren als auch Getter- und Setter-Methoden erzeugen. Ein Lerneffekt war aber bei Visual Studio Code nicht erkennbar.

Wie schwer es für die KI-Tools ist, bei unbekannten Klassen sinnvolle Vorschläge anzuzeigen, zeigt die folgende Abbildung. Nach dem Implementieren der fachlichen Basisklassen Artikel, Bestellung und Bestellposition sollte eine Testklasse deren Funktion überprüfen. Ruft man die Methoden des Objekts bestellung auf, sieht es so aus, als ob Visual Studio Code empfehlen würde, die Bestellung auszugeben. Das erscheint unsinnig, da die Bestellung mit ihren Positionen noch nicht existiert. Schaut man sich die Vorschlagsliste genauer an, zeigt sich, dass die Vorschläge nicht nach Vorhersagegenauigkeit, sondern lediglich alphabetisch sortiert sind. Die KI-Erweiterung konnte noch keine Wissensbasis aufbauen, sinnvolle Vorschläge sind somit unmöglich. Alles in allem ist Microsofts Programmierhilfe IntelliCode im Vergleich zu Tabnine recht unauffällig. Die Vorschläge sind syntaktisch richtig, aber steigerten die Entwicklungsproduktivität bei unseren Tests nicht sonderlich.

IntelliCode zeigte bei fachlichen Klassen zwar syntaktisch richtige Vorschläge an, lieferte darüber hinaus aber keinen nennenswerten Produktivitätsgewinn.