Das Unternehmen Intel hat die Version 1.2 des Tools ControlFlag veröffentlicht, das Fehler und Anomalien in Quelltexten erkennen kann, indem es ein maschinelles Lernsystem verwendet, das auf einer großen Menge bestehenden Codes trainiert wurde. Im Gegensatz zu herkömmlichen statischen Analysatoren verwendet ControlFlag keine festen Regeln, bei denen es schwierig ist, alle möglichen Varianten vorherzusehen, sondern stützt sich auf die Statistik der Verwendung verschiedener Sprachkonstruktionen in einer Vielzahl bestehender Projekte. Der Code von ControlFlag ist in C++ geschrieben und unter der MIT-Lizenz veröffentlicht.
Die neue Version zeichnet sich durch vollständige Unterstützung bei der Erkennung von Anomalien und dem Lernen auf Basis von typischen Codevorlagen für die Programmiersprache C++ aus. In früheren Versionen wurde eine ähnliche Unterstützung für die Sprachen C und PHP bereitgestellt. Das System eignet sich zur Erkennung verschiedener Arten von Problemen im Code, von der Identifizierung von Tippfehlern und falschen Typenkombinationen bis hin zur Erkennung von Anomalien in „if“-Bedingungen und versäumten NULL-Wertüberprüfungen bei Zeigern. Das System lernt durch den Aufbau eines statistischen Modells der vorhandenen Codebasis offener Projekte in den Sprachen C, C++ und PHP, die auf GitHub und ähnlichen öffentlichen Repositories veröffentlicht wurden.
Während des Trainings identifiziert das System typische Muster im Code und erstellt einen syntaktischen Baum von Beziehungen zwischen diesen Mustern, der den Ablauf der Codeausführung im Programm widerspiegelt. Letztendlich wird ein Referenzbaum für Entscheidungsfindungen gebildet, der die Entwicklungserfahrungen aller analysierten Quelltexte vereint. Für den zu überprüfenden Code wird ein ähnlicher Prozess zur Mustererkennung durchgeführt, der mit dem Referenzbaum für Entscheidungsfindungen abgeglichen wird. Große Abweichungen in den benachbarten Ästen weisen auf eine Anomalie im überprüften Muster hin.

Quelle: opennet.ru
