Megjelent a ControlFlag 1.0, a C nyelvű kódhibák azonosítására szolgáló eszköz.

Az Intel közzétette a ControlFlag 1.0 eszköz első jelentős kiadását, amely lehetővé teszi a hibák és anomáliák azonosítását a forráskódokban, egy gépi tanuláson alapuló rendszeren keresztül, amelyet a meglévő kódok nagy mennyiségén képeztek ki. A hagyományos statikus elemzőkkel ellentétben a ControlFlag nem használ kész szabályokat, amelyekben nehéz előre látni az összes lehetséges variációt, hanem a nagy számú meglévő projekt nyelvi konstrukcióinak statisztikai használatára támaszkodik. A ControlFlag kódja C++ nyelven íródott, és MIT licenc alatt érhető el.

A rendszer a nyílt projektek meglévő kódjának statisztikai modelljének felépítésével tanul, amelyeket a GitHub-on és hasonló nyilvános adattárakban tettek közzé. A tanulás során a rendszer meghatározza a kódban használt konstrukciók típikus mintázatait, és kialakít egy szintaktikai fa kapcsolatot e minták között, amely tükrözi a kód végrehajtási folyamatait a programban. Végül egy referencia döntési fa jön létre, amely összegyűjti az összes elemzett forráskód fejlesztési tapasztalatait. A vizsgált kódhoz hasonló folyamatot alkalmaznak, ahol a mintákat a referencia döntési fával hasonlítják össze. A nagy eltérések a szomszédos ágaktól anomáliát jeleznek a vizsgált mintában.

Megjelent a ControlFlag 1.0, a C nyelvű kódhibák azonosítására szolgáló eszköz.

A ControlFlag lehetőségeinek példájaként a fejlesztők az OpenSSL és a cURL projektek forráskódjainak elemzését végezték el:

  • Az OpenSSL-ben anomális konstrukciókat találtak, mint például „(s1 == NULL) ∧ (s2 == NULL)” és „(s1 == NULL) | (s2 == NULL)”, amelyek nem felelnek meg a szokásos mintának „(s1 == NULL) || (s2 == NULL)”. A kódban emellett anomáliák is kimutathók az „(-2 == rv)” kifejezésben (a mínusz elírás volt) és a „BIO_puts(bp, „:”) <= 0” kifejezésben (A függvény sikeres befejezésének ellenőrzésekor „== 0” lett volna a megfelelő).
  • A cURL-ben egy statikus elemzők által észlelhetetlen hiba került előtérbe a „s->keepon” struktúraelem használatakor, amely numerikus típussal rendelkezett, de logikai TRUE értékkel hasonlították össze.

A ControlFlag 1.0 verzió jellemzői közé tartozik a C nyelvhez készült tipikus sablonok teljes támogatása és a feltételes kifejezések, mint például az 'if' anomáliáinak észlelése. Például a 'if (x = 7) y = x;' kód részlet elemzése során a rendszer megállapítja, hogy az 'if' utasításban a numerikus értékek összehasonlításához általában a 'változó == szám' szerkezetet használják, ezért nagy valószínűséggel a 'változó = szám' megadás a hibás gépelés következménye. Az eszköz tartalmaz egy szkriptet, amely lehetővé teszi a GitHub-on elérhető C nyelvű forráskódok betöltését és modellezésük használatát. Emellett már készen álló modellek is rendelkezésre állnak, amelyek lehetővé teszik a kód azonnali ellenőrzését.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster