DeepCode mit Unterstützung für C und C++

C und C++ stecken in den Wurzeln heutiger Software-Ökosysteme. Die Implementierung in DeepCode war offenbar eine technische Herausforderung.

Lesezeit: 1 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 9 Beiträge

(Bild: Blackboard/Shutterstock.com)

Von

Die auf Machine Learning spezialisierte Code-Review-Plattform DeepCode hat innerhalb von drei Monaten die Implementierung von C und C++ vollzogen, einige Aspekte der aktuellen Plattform mussten dafür erweitert werden. Bei C und C++ handelt es sich laut Jan Eberhardt, einem der zuständigen Ingenieure, um einen merkwürdigen Grenzfall einer imperativen Programmiersprache mit vielen Low-Level-Features.

"Für jede andere 'normale' imperative Programmiersprache müssten wir an unserer Points-to- und Type-State-Analyse nichts ändern", kommentiert er im Blogpost die Schwierigkeiten, die sich bei der Implementierung von C/C++ ergaben.

Das ML-System ist mit Code aus privaten und offen zugänglichen Quellen trainiert worden. Die grundlegende Fähigkeit, Sprachen zu parsen, ist nicht neu. Neu sei hingegen, dass besonders umfangreiche Open-Source-Datensätze als Trainingssätze genutzt werden. "Für den C++-Datensatz, der in der ersten Version verwendet wurde, verwendeten wir über 300.000 Repositories mit insgesamt etwa 3,4 Millionen Dateien", sagt Eberhardt. Die Plattform scannt Änderungshistorien auf der Basis dieser Datensätze und identifiziert Muster.

DeepCode bietet Plug-ins für Visual Studio Code, Atom und Gitpod sowie eine Befehlszeilenschnittstelle, die aus dem Entwicklungs-Workflow heraus aufgerufen werden kann. Weitere Integrationen in typische Entwicklerwerkzeuge sind geplant. DeepCode bietet kostenloses Scannen für Open-Source-Projekte und kleine Teams. Neben C und C++ unterstützt DeepCode Java, Python, JavaScript und TypeScript.

Das Urgestein C/C++

C und C++ stecken zu einem gewissen Teil in nahezu jedem Computer, von den kleinsten Mikrocontrollern bis hin zu Cloud-Systemen. C gibt es seit 1972, und C++ kam als Erweiterung 1985 dazu – die beiden Programmiersprachen gehören zum Urgestein des Computerzeitalters. Im Bereich der hardwarenahen Software dominieren sie bis heute. Auf der Ebene ist die Fehlerschwelle gering und die mögliche Auswirkung von Fehlern enorm. Die Freiheit, die beide Sprachen Entwicklern bieten, geht mit großer Verantwortung einher. Sauberer Code ist ein Gebot.

Zum Abschluss führt der Blogbeitrag noch zwei Beispiele auf: Das Scannen des Chromium-Projekts auf GitHub (etwa 16 GByte Quellcode) dauert nur wenige Minuten, das Scannen des Linux-Quellcodes etwa 6 Minuten. Interessierte Entwickler können Code selbst prüfen, indem sie ihn auf der Seite von DeepCode ins Dashboard lädt. (sih)