Scaoileadh ControlFlag 1.0, uirlis chun earráidí i gcód C a aithint

D'fhoilsigh Intel an chéad mhór-eisiúint den uirlis ControlFlag 1.0, a ligeann duit earráidí agus aimhrialtachtaí sa chód foinse a aithint ag baint úsáide as córas meaisínfhoghlama atá oilte ar líon mór de chód atá ann cheana féin. Murab ionann agus anailíseoirí statacha traidisiúnta, ní chuireann ControlFlag rialacha réamhdhéanta i bhfeidhm, ina bhfuil sé deacair foráil a dhéanamh do gach rogha féideartha, ach tá sé bunaithe ar staitisticí maidir le húsáid na bhfoirgníochtaí éagsúla teanga i líon mór tionscadal atá ann cheana féin. Tá an cód ControlFlag scríofa i C++ agus tá sé oscailte faoin gceadúnas MIT.

Cuirtear oiliúint ar an gcóras trí mhúnla staitistiúil a thógáil den tsraith cód reatha de thionscadail foinse oscailte a foilsíodh in GitHub agus stórtha poiblí comhchosúla. Ag an gcéim oiliúna, cinneann an córas patrúin tipiciúla chun struchtúir a thógáil sa chód agus tógann sé crann comhréire de naisc idir na patrúin seo, rud a léiríonn sreabhadh forghníomhaithe an chóid sa chlár. Mar thoradh air sin, cruthaítear crann cinnteoireachta tagartha a chomhcheanglaíonn taithí forbartha na gcód foinse anailíse go léir. Téann an cód faoi athbhreithniú faoi phróiseas comhchosúil chun patrúin a aithint a sheiceáiltear i gcoinne crann cinnteoireachta tagartha. Léiríonn neamhréireachtaí móra le brainsí comharsanacha láithreacht aimhrialtacht sa phhatrún atá á sheiceáil.

Scaoileadh ControlFlag 1.0, uirlis chun earráidí i gcód C a aithint

Mar shampla de chumais ControlFlag, rinne na forbróirí anailís ar chóid foinse na dtionscadal OpenSSL agus cURL:

  • Tógálacha aimhrialta “(s1 == NULL) ∧ (s2 == NULL)” agus “(s1 == NULL) | (s2 == NULL)" , nach bhfuil ag teacht leis an bpatrún a úsáidtear go coitianta" (s1 == NULL) || (s2 == NULLComment)". D’aithin an cód freisin aimhrialtachtaí sna habairtí “(-2 == rv)” (tíopaí a bhí sa lúide) agus “BIO_puts(bp, “:”) <= 0)” (i gcomhthéacs críochnú rathúil an fheidhm ba cheart go raibh sé “== 0”).
  • I cURL, thángthas ar earráid nár bhraith anailíseoirí statacha agus an eilimint struchtúir “s->keepon” in úsáid, a raibh cineál uimhriúil aici, ach a cuireadh i gcomparáid leis an luach boolean TRUE.

I measc na ngnéithe den leagan ControlFlag 1.0, tá tacaíocht iomlán do theimpléid chaighdeánacha don teanga C agus an cumas chun aimhrialtachtaí a bhrath i nathanna coinníollach “má”. Mar shampla, nuair a bhíonn an blúire cód á anailísiú “má (x = 7) y = x;” Cinnfidh an córas go n-úsáideann an ráiteas “má” go hiondúil an tógáil “athróg == uimhir” chun luachanna uimhriúla a chur i gcomparáid, agus mar sin tá an-dóchúil go bhfuil an “athraitheach = uimhir” sa slonn “má” is cúis le clóscríobh. Cuimsíonn an trealamh script a ligeann duit stórtha teanga C atá ann cheana a íoslódáil ar GitHub agus iad a úsáid chun an tsamhail a thógáil. Tá samhlacha réamhdhéanta ar fáil freisin, rud a ligeann duit tosú láithreach ar an gcód a sheiceáil.

Foinse: oscailtenet.ru

Add a comment