DeepCode bringt AI-gestützte Codeüberprüfung in C und C ++

DeepCode, der Cloud-Dienst, der maschinelles Lernen verwendet, um Codebasen auf Sicherheitslücken und potenzielle Fehler zu analysieren, kann jetzt C- und C ++ - Code analysieren.

DeepCode wurde durch die Analyse von Tausenden von Open Source-Projekten geschult und bietet Feedback für Projekte auf Code-Hosting-Plattformen oder lokalen Repositorys. Die Entwickler von DeepCode behaupten, dass es ein besseres und detaillierteres Feedback bietet als herkömmliche Tools zur Codeanalyse, da es Code im Kontext analysiert - nicht nur als Text, sondern auch als laufende Software.

Die meisten Schwachstellen in Software treten in C- oder C ++ - Codebasen auf. So leistungsfähig die beiden Sprachen auch sind, sie bieten kaum oder gar keinen Schutz vor Entwicklerfehlern, und neuere Versionen dieser Sprachen müssen die Abwärtskompatibilität beibehalten und bleiben daher anfällig. 

Die Wissensdatenbank von DeepCode umfasst viele häufig auftretende Probleme in C und C ++ sowie in anderen Sprachen: Stilprobleme, Ressourcenlecks, Probleme bei der Speicherzuweisung, Probleme bei der Datumsbehandlung und Inkompatibilitäten zwischen verschiedenen Sprachversionen.

In einer Analyse des Linux-Kernels stellte DeepCode eine Reihe häufiger Probleme in C-Codebasen fest, darunter nicht bereinigte Parameter, die von Befehlszeilenargumenten oder Umgebungsvariablen übergeben wurden, Probleme, die nach der Verwendung verwendet wurden, und fehlende Überprüfungen auf Nullzeiger. Andere Probleme im C-Code sind subtiler, wie die unsichere Erstellung temporärer Dateien oder die Möglichkeit, dass bestimmte Anweisungen bei der Kompilierung optimiert werden und nicht den beabsichtigten Effekt haben.

Beim ursprünglichen Start unterstützte DeepCode Java, JavaScript, TypeScript und Python, aber Pläne für C, C ++ und andere Sprachen standen auf dem Tisch. Laut dem Blog-Beitrag, in dem die Unterstützung von C / C ++ angekündigt wurde, dauerte das Hinzufügen einer Code-Analyse für C und C ++ drei Monate, da die Funktionen von C / C ++ auf niedriger Ebene komplex waren.