Az Intel bemutatta reklám útján a ControlFlag kutatási projekttel kapcsolatos fejlesztések, amelynek célja egy gépi tanulási rendszer létrehozása a kód minőségének javítása érdekében.
Az eszközt az MIT licence alatt adták ki és kiemelkedik abból, hogy egy nagy mennyiségű meglévő kódra kiképzett modell alapján lehetővé teszi a különféle hibák és anomáliák azonosítását a magas szintű nyelveken, például C / C ++-ban írt forrásszövegekben.
A rendszer alkalmas a kódban előforduló különféle típusú problémák észlelésére, a tipográfiai hibák és helytelen típuskombinációk észlelésétől a mutatókban lévő nullértékek hiányzó ellenőrzéséig és a memóriaproblémákig.
A rendszer statisztikai modell felépítésével magától tanul a GitHubon és hasonló nyilvános tárhelyeken közzétett nyílt forráskódok meglévő tömbjéből. A képzési szakaszban a rendszer tipikus sablonokat határoz meg struktúrák felépítéséhez a kódban, és szintaktikai fát épít fel e sablonok közötti kapcsolatokból, tükrözve a programban a kódvégrehajtás folyamatát. Ennek eredményeként egy hivatkozási döntési fa jön létre, amely egyesíti az összes elemzett forrásszöveg fejlesztési tapasztalatait.
Annak érdekében, hogy a ControlFlag-ot elérhetőbbé tegye a szélesebb szoftverfejlesztő közösség számára, az Intel örömmel jelenti be, hogy a ControlFlag immár nyílt forráskódú, és a https://github.com/IntelLabs/control-flag címen érhető el. Örömünkre szolgál, hogy lehetőséget adunk a fejlesztőknek, hogy fejlesszenek rajta, és megnézzük, mit lehet még tenni ezzel a rendkívül értékes és innovatív technológiával.
Bevezetése óta a ControlFlag-ot termelési szintű szoftverekben és széles körben használt nyílt forráskódú szoftverrendszerekben tesztelték. Például tavaly a ControlFlag kód anomáliát azonosított a Client URL-ben (cURL), egy számítógépes szoftverprojektben, amely naponta több mint XNUMX milliárd alkalommal továbbít adatokat különféle hálózati protokollok segítségével. Miután jelentették az anomáliát a cURL csapatának, egyetértettek a ControlFlag megállapításaival, és ezt követően javították a kódjukat.
A minták meghatározásához hasonló folyamatot hajtanak végre a tesztelt kódnál, amelyet összehasonlítunk egy referencia-döntési fával. A szomszédos ágaktól való nagy eltérések az ellenőrzött minta anomáliáját jelzik. A rendszer azt is lehetővé teszi, hogy ne csak a sablon hibáját azonosítsa, hanem megoldást is javasoljon. Például az "if (x = 7) y = x;" kódrészlet elemzésekor a rendszer megállapította, hogy a "változó == szám" konstrukciót általában az "if" utasításban használják a számértékek összehasonlítására, így az "if" utasításban szereplő "változó = szám" jelölést valószínűleg tipográfiai hiba okozza.
A hagyományos statikus analizátorok észlelnének egy ilyen hibát, de velük ellentétben a ControlFlag nem alkalmaz "out-of-the-box" szabályokat, amelyekben nehéz minden lehetséges opciót előre látni, hanem mindenféle felhasználási statisztikákból indul ki. nagyszámú projektben.
Kísérletként, a ControlFlag használatakor a cURL segédprogram forráskódjában, gyakran példaként említik bevált, jó minőségű kódú, statikus analizátorok véletlen hibát tárt fel az "s-> keepon" szerkezeti elem használatakor, amelynek numerikus típusa volt, de összehasonlították a TRUE logikai értékkel.
Az OpenSSL kódban a fent említett "(s1 == NULL) ∧ (s2 == NULL)" probléma mellett a "(-2 == rv)" kifejezésekben is anomáliákat észleltek, ami legalább egy gépelési hiba.
Arról is beszámoltak, hogy a ControlFlag használata lehetővé tette a nem specifikus védett szoftverek több száz hibájának azonosítását, ami összeomláshoz és memóriaproblémákhoz vezetett.
Végül ha érdekel, hogy többet tudjon meg róla, ellenőrizheti a részleteket A következő linken. Azok pedig, akik szeretnék látni a forráskódot, beszerezni vagy lerakatban klónozni, ezt megtehetik a következő link.