Intel hat den Quellcode von ControlFlag veröffentlicht, einem System für maschinelles Lernen, um Fehler im Code zu erkennen

Intel enthüllt durch eine Werbung Entwicklungen im Zusammenhang mit dem Forschungsprojekt ControlFlag, mit dem ein maschinelles Lernsystem erstellt werden soll, um die Qualität des Codes zu verbessern.

Das Tool wurde unter der MIT-Lizenz veröffentlicht und es zeichnet sich dadurch aus, dass es auf der Grundlage eines auf einer großen Menge vorhandenen Codes trainierten Modells verschiedene Fehler und Anomalien in Quelltexten, die in Hochsprachen wie C / C ++ geschrieben sind, identifizieren kann.

das System Es eignet sich zum Erkennen verschiedener Arten von Problemen in Ihrem Code, von der Erkennung von Tippfehlern und falschen Typkombinationen bis hin zur Identifizierung fehlender Prüfungen auf Nullwerte in Zeigern und Problemen mit dem Speicher.

Das System lernt von selbst, indem es ein statistisches Modell erstellt aus dem bestehenden Array von Open-Source-Code, der auf GitHub und ähnlichen öffentlichen Repositories veröffentlicht wurde. In der Trainingsphase ermittelt das System typische Vorlagen um Strukturen im Code aufzubauen und einen syntaktischen Baum von Verbindungen zwischen diesen Vorlagen aufzubauen, der den Ablauf der Codeausführung im Programm widerspiegelt. Als Ergebnis wird ein Referenz-Entscheidungsbaum gebildet, der die Entwicklungserfahrungen aller analysierten Quelltexte zusammenfasst.

Um ControlFlag einer breiteren Softwareentwicklungs-Community zugänglicher zu machen, freut sich Intel, bekannt zu geben, dass ControlFlag jetzt Open Source ist und unter https://github.com/IntelLabs/control-flag zugänglich ist. Wir freuen uns, Entwicklern die Möglichkeit zu geben, darauf zu entwickeln und zu sehen, was mit dieser äußerst wertvollen und innovativen Technologie noch gemacht werden kann.

Seit seiner Einführung wurde ControlFlag in Software auf Produktionsebene und in weit verbreiteten Open-Source-Softwaresystemen getestet. ControlFlag identifizierte beispielsweise im vergangenen Jahr eine Codeanomalie in Client URL (cURL), einem Computersoftwareprojekt, das Daten über verschiedene Netzwerkprotokolle mehr als XNUMX Milliarde Mal pro Tag überträgt. Nachdem sie die Anomalie dem cURL-Team gemeldet hatten, stimmten sie den Ergebnissen von ControlFlag zu und korrigierten anschließend ihren Code.

Ein ähnlicher Prozess zum Definieren von Mustern wird für den zu testenden Code durchgeführt, die mit einem Referenzentscheidungsbaum verglichen wird. Große Diskrepanzen mit benachbarten Zweigen weisen auf eine Anomalie im überprüften Muster hin. Das System ermöglicht es auch, nicht nur einen Fehler in der Vorlage zu erkennen, sondern auch eine Lösung vorzuschlagen. Zum Beispiel beim Parsen des Code-Snippets "if (x = 7) y = x;" das System hat festgestellt, dass in der Aussage "if" generell die Konstruktion "Variable == Zahl" verwendet wird, um Zahlenwerte zu vergleichen, so dass die Angabe "Variable = Zahl" in der Aussage "wenn" wahrscheinlich auf einen Tippfehler zurückzuführen ist.

Herkömmliche statische Analysatoren würden einen solchen Fehler erkennen, aber im Gegensatz zu ihnen wendet ControlFlag keine Out-of-the-Box-Regeln an, bei denen es schwierig ist, alle möglichen Optionen vorherzusehen, sondern geht von der Statistik der Nutzung aller Art aus von Konstruktionen in einer Vielzahl von Projekten.

Als Experiment, bei Verwendung von ControlFlag im Quellcode des cURL-Dienstprogramms, das oft wird als Beispiel angeführt bewährter, qualitativ hochwertiger Code-Statik-Analysatoren hat einen versehentlichen Fehler bei der Verwendung des Strukturelements "s-> keepon" aufgedeckt, die einen numerischen Typ hatte, aber mit dem booleschen Wert TRUE verglichen wurde.

Im OpenSSL-Code wurden neben dem oben erwähnten Problem mit "(s1 == NULL) ∧ (s2 == NULL)" auch Anomalien in den Ausdrücken "(-2 == rv)" festgestellt, die mindestens a Tippfehler.

Es wird auch berichtet, dass die Verwendung von ControlFlag es ermöglichte, mehrere hundert Fehler in unspezifischer proprietärer Software zu identifizieren, die zu Abstürzen und Speicherproblemen führten.

Schließlich wenn Sie mehr darüber wissen möchtenkönnen Sie die Details überprüfen im folgenden Link. Diejenigen, die daran interessiert sind, den Quellcode zu sehen, zu erhalten oder in ein Repository zu klonen, können dies tun von den folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.