Intel heeft de broncode vrijgegeven van ControlFlag, een machine learning-systeem om fouten in de code te detecteren

Intel onthuld via een advertentie ontwikkelingen met betrekking tot het onderzoeksproject ControlFlag, die bedoeld is om een ​​machine learning-systeem te creëren om de kwaliteit van de code te verbeteren.

De tool is vrijgegeven onder de MIT-licentie en het onderscheidt zich doordat het, op basis van een model dat is getraind op een grote hoeveelheid bestaande code, verschillende fouten en anomalieën in bronteksten kan identificeren die zijn geschreven in talen op hoog niveau zoals C / C ++.

Het systeem het is geschikt voor het detecteren van verschillende soorten problemen in uw code, van het opsporen van typografische fouten en onjuiste typecombinaties, tot het identificeren van ontbrekende controles op null-waarden in pointers en problemen met geheugen.

Het systeem leert vanzelf door een statistisch model te bouwen van de bestaande reeks open source-code die is gepubliceerd op GitHub en vergelijkbare openbare repositories. In de trainingsfase bepaalt het systeem typische sjablonen om structuren in de code te bouwen en een syntactische boom van verbindingen tussen deze sjablonen te bouwen, die de stroom van code-uitvoering in het programma weerspiegelt. Als resultaat wordt een referentiebeslissingsboom gevormd, die de ontwikkelingservaring van alle geanalyseerde bronteksten combineert.

Om ControlFlag meer beschikbaar te maken voor de bredere softwareontwikkelingsgemeenschap, is Intel verheugd aan te kondigen dat ControlFlag nu open source is en toegankelijk is via https://github.com/IntelLabs/control-flag. We geven ontwikkelaars graag de kans om erop te ontwikkelen en te kijken wat er nog meer kan worden gedaan met deze uiterst waardevolle en innovatieve technologie.

Sinds de introductie is ControlFlag getest in software op productieniveau en in veelgebruikte open source softwaresystemen. Vorig jaar identificeerde ControlFlag bijvoorbeeld een codeafwijking in Client URL (cURL), een computersoftwareproject dat meer dan XNUMX miljard keer per dag gegevens overdraagt ​​met behulp van verschillende netwerkprotocollen. Nadat ze de anomalie aan het cURL-team hadden gemeld, stemden ze in met de bevindingen van ControlFlag en hebben ze vervolgens hun code gepatcht.

Een soortgelijk proces van het definiëren van patronen wordt uitgevoerd voor de code die wordt getest, die wordt vergeleken met een referentiebeslissingsboom. Grote verschillen met aangrenzende takken duiden op een anomalie in het patroon dat wordt geverifieerd. Het systeem maakt het ook mogelijk om niet alleen een fout in de sjabloon te identificeren, maar ook om een ​​oplossing voor te stellen. Bijvoorbeeld bij het ontleden van het codefragment "if (x = 7) y = x;" het systeem heeft vastgesteld dat de constructie "variabele == getal" over het algemeen wordt gebruikt in de verklaring "if" om numerieke waarden te vergelijken, dus de aanduiding "variabele = getal" in de verklaring "als" wordt waarschijnlijk veroorzaakt door een typografische fout.

Traditionele statische analysatoren zouden zo'n fout detecteren, maar in tegenstelling tot hen past ControlFlag geen kant-en-klare regels toe, waarbij het moeilijk is om alle mogelijke opties te voorzien, maar eerder uitgaat van de statistieken van het gebruik van allerlei soorten van constructies in een groot aantal projecten.

Als een experiment, bij gebruik van ControlFlag in de broncode van het hulpprogramma cURL, dat vaak wordt als voorbeeld genoemd van bewezen, hoogwaardige code, statische analysers onthulde een onbedoelde bug bij het gebruik van structuurelement "s-> keepon", die een numeriek type had, maar werd vergeleken met de booleaanse waarde TRUE.

In de OpenSSL-code werden, naast het hierboven genoemde probleem met "(s1 == NULL) ∧ (s2 == NULL)", ook anomalieën gedetecteerd in de uitdrukkingen "(-2 == rv)", die ten minste een typfout.

Er wordt ook gemeld dat het gebruik van ControlFlag het mogelijk maakte om honderden bugs in niet-specifieke propriëtaire software te identificeren, wat leidde tot crashes en geheugenproblemen.

Eindelijk als u er meer over wilt weten, kunt u de details bekijken In de volgende link. Voor degenen die geïnteresseerd zijn om de broncode te zien, te verkrijgen of te klonen in een repository, ze kunnen dit doen vanaf de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.