Wir präsentieren Ihnen fünf KI-gesteuerte Entwicklungstools, die die automatische Vervollständigung von Code, die Erkennung von Code-Schwachstellen und sogar die hochmoderne Codegenerierung ermöglichen. [...]
Die meisten Diskussionen von Entwicklern, die maschinelles Lernen nutzen, drehen sich um die Erstellung von KI-basierten Anwendungen und die Tools, mit denen diese erstellt werden: TensorFlow, PyTorch, Scikit-Lernen, und so weiter.
Doch es gibt noch einen anderen Weg, wie sich maschinelles Lernen auf die Softwareentwicklung auswirkt: durch neue Entwicklungstools, die maschinelle Lerntechniken einsetzen, um die Programmierung einfacher und produktiver zu gestalten. Hier sind fünf Projekte – drei kommerzielle, zwei experimentelle -, die das maschinelle Lernen für Entwickler im Entwicklungsprozess zum Erfolg führen.
Kite
Kite ist ein Code-Vervollständigungstool, das für die meisten großen Code-Editoren erhältlich ist und maschinelle Lerntechniken verwendet, um Ihren Code während der Eingabe zu vervollständigen.
Das von Kite verwendete maschinelle Lernmodell wird erzeugt, indem öffentlich zugänglicher Code auf GitHub verwendet wird, daraus ein abstrakter Syntaxbaum abgeleitet und dieser als Grundlage für das Modell verwendet wird. Laut Kite ermöglicht dies, dass Auto-Vorschläge und Auto-Vervollständigungen aus dem Kontext und der Absicht des Codes hergeleitet werden können, statt nur aus dem Text.
Im Moment ist Kite nur für Python-Entwickler verfügbar, aber der Go-Support ist in Arbeit. Und obwohl Kite ursprünglich nur für Windows- und MacOS-Benutzer verfügbar war, unterstützt es nun auch Linux.
Im Jahr 2017 verursachte Kite einige Bedenken in der Open-Source-Community über den Umgang mit Benutzerdaten und die Modifikation des autocomplete-python-Pakets für Atom. Das Unternehmen hat beide Bedenken ausgeräumt und behauptet, dass Kite den Benutzercode nicht mehr an seine Cloud-Server zurückschickt, sondern die gesamte Verarbeitung lokal durchführt, und ausdrücklich erklärt, dass das autocomplete-python-Paket ein von Kite finanziertes Paket ist.
Codota
Codota ist äußerlich ähnlich wie Kite. Es verwendet ein maschinelles Lernmodell, das auf Java- und Kotlin-Code geschult ist, um Autovervollständigungen für diese Sprachen während der Eingabe zu empfehlen. Wie Kite verwendet Codota den Syntaxbaum des Codes, nicht nur seinen Text, als Daten für die Erstellung seiner Modelle.
Im Gegensatz zum überarbeiteten Kite nutzt Codota einen Cloud-basierten Dienst, um Vorhersagen zu generieren und zu bedienen. Gemäß der Dokumentation des Dienstes sendet Codota jedoch keinen Benutzercode an den Codota-Server, sondern nur „minimale Kontextinformationen aus der aktuell bearbeiteten Datei, die es uns ermöglichen, Vorhersagen auf der Grundlage des aktuellen lokalen Umfangs zu treffen“.
Codota ist für Windows, MacOS und Linux verfügbar, aber die Editorunterstützung ist auf IntelliJ, Android Studio und Eclipse (Luna oder höher) beschränkt. Dies ist angesichts des Fokus auf Java und Kotlin-Sprachen sinnvoll. Das Unternehmen verweist darauf, dass die Unterstützung für andere Sprachen in Arbeit ist, wobei JavaScript zu den ersten in der Reihe gehört. (Beta-Unterstützung für WebStorm, die JetBrains JavaScript IDE, ist ab sofort verfügbar.)
Die kostenlose Version von Codota verwendet Prognosen, die aus frei verfügbarem Code erstellt wurden. Die Enterprise-Version (Preise auf Anfrage) kann private Code-Repositories für Schulungen nutzen.
DeepCode
DeepCode führt automatisierte, KI-gesteuerte Überprüfungen von Code durch, um potenzielle Sicherheitsschwachstellen zu erkennen. Wie Kite und Codota analysiert DeepCode den in öffentlichen Repositorien verfügbaren Code, um nach gemeinsamen Mustern zu suchen. DeepCode verwendet diese Muster jedoch, um Sicherheitslücken zu identifizieren.
DeepCode konzentriert sich auf die „Taint- Analyse“, die bestimmt, wie Benutzereingaben behandelt werden, bevor sie einen sicherheitskritischen Punkt erreichen. Daten, die direkt von der Benutzereingabe zu einer SQL-Abfrage gehen, ohne zu überprüfen, ob sie sicher weitergegeben werden können, gelten als „verdorben“ (tainted) und lösen einen Alarm aus.
Die kritischen Fehler, die DeepCode zu kennzeichnen vorgibt, beinhalten gängige Sicherheitsprobleme, die in Webanwendungen auftreten: Cross-Site-Scripting, SQL-Injektionsangriffe, Remotecodeausführung und Pfad-Traversal-Angriffe.
Die Analysen von DeepCode sind für GitHub- und Bitbucket-Repositories verfügbar und kosten nichts für Open-Source-Projekte oder private Projekte mit bis zu 30 Entwicklern. DeepCode ist auch für Scans von lokalem Code Hosting (z.B. GitHub Enterprise) verfügbar, wobei die Preise nur auf Anfrage erhältlich sind.
Microsoft PROSE
PROSE ist ein Akronym für „PROgram Synthesis using Examples“. Dieses Microsoft-Projekt ist ein SDK zur Generierung von Code aus Sample-Input und -Output. Somit ist PROSE ein Toolkit, das verwendet werden könnte, um prädiktive Codierungswerkzeuge zu entwickeln, und nicht ein prädiktives Codierungswerkzeug selbst.
Mögliche PROSE-Anwendungen sind beispielsweise die Transformation von Texten (eine davon ist die Microsoft-eigene „Flash Fill“-Funktion in Excel), die Extraktion von Daten aus Textdateien (z.B. Log Analytics) und die prädiktive Dateibearbeitung (z.B. die Aufteilung von Text in Spalten durch Beispiele).
Pix2code
Die Prämisse von Pix2code klingt wie Science Fiction. Füttern Sie ihm den Screenshot einer grafischen Benutzeroberfläche, und Pix2code generiert Code, der diese GUI darstellt. Pix2code verwendet ein Deep-Learning-Modell, das auf einem mit der Software gelieferten Datensatz trainiert wurde, um GUIs in den Formaten Android XML, iOS Storyboard und HTML/CSS zu erstellen. Pix2code ist ein experimentelles Forschungsprojekt („shared for educational“).
*Serdar Yegulalp ist Senior-Autor bei InfoWorld und beschäftigt sich mit maschinellem Lernen, Containerisierung, Devops, dem Python-Ökosystem und regelmäßigen Reviews.
Be the first to comment