Machine Learning

Fünf KI-Tools für eine einfachere Softwareentwicklung

09.08.2019
Von 
Serdar Yegulalp schreibt für unsere US-Schwesterpublikation Infoworld.
Eine Reihe KI-gesteuerter Entwicklungstools hilft Entwicklern, schneller zu Ergebnissen zu kommen. Sie sorgt für eine automatische Vervollständigung von Code, das Erkennen von Schwachstellen und eine schnelle Codegenerierung.
Mit den folgenden KI-Tools können sich Entwickler viel Arbeit sparen.
Mit den folgenden KI-Tools können sich Entwickler viel Arbeit sparen.
Foto: whiteMocca - shutterstock.com

Wenn Entwickler sich mit Machine Learning (ML) beschäftigen, geht es meist um das Erstellen von KI-Anwendungen mithilfe von Tools und Frameworks wie TensorFlow, PyTorch oder Scikit-learn. Aber es gibt noch eine andere Art und Weise, wie sich Machine Learning (ML) auf die klassische Softwareentwicklung auswirkt: Entwicklungswerkzeuge nutzen ML, um die Programmierung einfacher und produktiver zu gestalten. Wir stellen fünf Projekte vor - drei kommerzielle, zwei experimentelle -, die maschinelles Lernen für Entwickler nutzbar machen.

Kite - schneller codieren in Python

Kite ist ein Tool, das als Plug-in für die meisten großen Code-Editoren verfügbar ist. Es nutzt ML-Techniken, um Python-Code während der Eingabe automatisch zu prüfen und zu vervollständigen. Das von Kite verwendete ML-Modell wird erstellt, indem öffentlich zugänglicher Code auf GitHub ausgelesen und daraus ein abstrakter Syntaxbaum abgeleitet wird. Der dient dann als Grundlage für das Modell.

Laut Kite ermöglicht dies, dass nicht nur aus den eingetippten Codezeilen selbst, sondern auch aus ihrem interpretierten Kontext automatisiert Vervollständigungsvorschläge unterbreitet werden. Im Moment ist Kite nur für Python-Entwickler verfügbar, aber der Support von Go ist in Arbeit. War Kite bislang nur Windows- und MacOS-Benutzern vorbehalten, so unterstützt es nun auch Linux.

Im Jahr 2017 hatte Kite in der Open-Source-Community Kritik hervorgerufen. Der Umgang mit den Daten der Benutzer wurde beanstandet, ebenso die werbliche Modifikation des autocomplete-python-Pakets für Atom. Das Unternehmen hat diese Bedenken ausgeräumt und versichert heute, dass Kite den Code der Entwickler nicht an seine Cloud-Server zurückschickt, sondern die gesamte Verarbeitung lokal durchführt. Außerdem macht Kite inzwischen unmissverständlich klar, dass das autocomplete-python-Paket gesponsert ist.

Codota - Code vervollständigen für Java und Kotlin

Auch Codota ist ein Autovervollständigungs-Tool für Entwickler. Es verwendet ein ML-Modell, das auf Java- und Kotlin-Code trainiert wurde, um für diese Sprachen während des Tippens Ergänzungsvorschläge zu unterbreiten. Wie Kite nutzt auch Codota den Syntaxbaum des Codes, um Modelle zu erstellen.

Im Gegensatz zum inzwischen überarbeiteten Kite verwendet Codota einen Cloud-basierten Service, um Vorschläge zu machen. Wie dieser Dienst in seiner Dokumentation verspricht, sendet er keinen von Benutzern generierten Code an den Codota-Server, sondern nur "minimale kontextuelle Informationen aus der aktuell bearbeiteten Datei". Diese reichten aus, um Vorhersagen auf der Basis der jeweils aktuellen Codesituation zu treffen.

Codota steht für Windows, MacOS und Linux zur Verfügung, aber die Editorunterstützung ist auf IntelliJ, Android Studio und Eclipse (Luna oder neuer) beschränkt. Da man sich auf Java und Kotlin konzentriert, ist diese Einschränkung kein Problem. Das Unternehmen teilt mit, dass die Unterstützung anderer Sprachen in Arbeit sei, JavaScript an erster Stelle. Eine Beta-Unterstützung gibt es bereits für WebStorm und die JetBrains JavaScript IDE.

Die kostenlose Version von Codota stützt sich auf Prognosen, die aus frei verfügbarem Code erstellt wurden. Die Enterprise-Version kann auch private Code-Repositories als Trainingsdaten verwenden.

DeepCode - Sicherheitslücken aufspüren

DeepCode, ein Spin-off der ETH Zürich, überprüft mithilfe von KI-Softwarecode, um potenzielle Sicherheitslücken zu erkennen. Wie Kite und Codota nutzt auch DeepCode öffentlich verfügbaren Code, um Vergleichsmöglichkeiten zu haben und so Schwachstellen zu identifizieren. DeepCode setzt dabei auf "Taint-Analysen", bei denen neuer User-Input besonders genau durchleuchtet wird, ehe er einen sicherheitskritischen Punkt erreicht. Wird beispielsweise ein SQL-Aufruf programmiert und die Verifikation ergibt, dass er fragwürdig ist, sendet das System einen Alert aus.

Am häufigsten wird DeepCode eingesetzt, um Sicherheitsprobleme in Webanwendungen aufzuspüren, beispielsweise Cross-Site-Scripting, SQL-Injection-Angriffe, Remote-Code-Ausführung oder Path-Traversal-Attacken.

DeepCode-Analysen sind für GitHub- und Bitbucket-Repositories verfügbar. Sie sind für Open-Source-Projekte oder private Projekte mit bis zu 30 Entwicklern kostenfrei. DeepCode ist auch für Scans von lokal vorgehaltenem Code (etwa GitHub Enterprise) verfügbar, die Preise sind auf Anfrage erhältlich.

Microsoft PROSE - Code aus Beispielen generieren

PROSE von Microsoft ist ein Akronym für "PROgram Synthesis using Examples" (hier geht's zum Tutorial). Es handelt sich um eine KI-Technologie, die automatisch und schnell Softwarecode anhand von Input-Output-Beispielen erstellen kann. Mögliche PROSE-Anwendungen dienen beispielsweise der Transformation von Texten.

Microsofts Flash-Fill-Funktion in Excel ist exemplarisch: Man stelle sich eine Excel-Liste vor, in deren Spalte A die Nachnamen und Spalte B die Vornamen von Personen stehen. Spalte C soll nun Vor- und Nachnamen enthalten. Das mit dem PROSE-SDK erstellte Flash-Fill bewirkt, dass nur ein Beispieltext als Muster eingegeben werden muss, nach dessen Vorbild dann die ganze Spalte C automatisch gefüllt wird.

PROSE eignet sich auch für das Extrahieren von Daten aus Textdateien (verfügbar in PowerShell und Azure Log Analytics) oder die Datenextraktion und -transaktion von JSON anhand von Beispielen. Ein weiteres Anwendungsgebiet ist die vorausschauende Aufteilung von Dateien, wenn ein Text - ohne Beispielvorgabe - in Spalten organisiert werden soll.

Pix2code - Code aus GUIs ableiten

Pix2code ist ein experimentelles Deep-Learning-Projekt, das ein bisschen nach Science Fiction klingt: Aus dem Screenshot einer von Designer entworfenen grafischen Benutzeroberfläche (GUI) generiert das Tool den zugrundeliegenden Code mit einer Genauigkeit von derzeit 77 Prozent.

Der zugrundeliegende Datensatz, mit dem sich Bildinformationen in Code verwandeln lassen, wurde trainiert, um GUIs in Android XML, iOS Storyboard und HTML/CSS zu erstellen. Pix2code ist ein Forschungsprojekt, das sich nicht so einfach auf Use Cases in Unternehmen übertragen lässt. Die Entwickler weisen darauf hin, dass selbst im Falle einer 100-prozentigen Genauigkeit in der Umsetzung immer noch Front-end-Spezialisten benötigt würden, die Logik, interaktive Bestandteile, Animationen und "alles, was User lieben" umsetzen müssten.