Inilabas ng Intel ang source code ng ControlFlag isang machine learning system para makakita ng mga error sa code

Inihayag ng Intel sa pamamagitan ng isang ad mga pagpapaunlad na nauugnay sa proyekto ng pananaliksik sa ControlFlag, na nilayon upang lumikha ng isang machine learning system upang mapabuti ang kalidad ng code.

Ang tool ay inilabas sa ilalim ng lisensya ng MIT at ito ay namumukod-tangi para sa pagpapahintulot, batay sa isang modelo na sinanay sa isang malaking halaga ng umiiral na code, upang matukoy ang iba't ibang mga error at anomalya sa mga pinagmulang teksto na nakasulat sa mataas na antas ng mga wika tulad ng C / C ++.

Ang system ito ay angkop para sa pag-detect ng iba't ibang uri ng mga problema sa iyong code, mula sa pag-detect ng mga typographical error at maling kumbinasyon ng uri, hanggang sa pagtukoy ng mga nawawalang pagsusuri para sa mga null value sa mga pointer at mga problema sa memorya.

Ang sistema ay natututo nang mag-isa sa pamamagitan ng pagbuo ng isang istatistikal na modelo mula sa umiiral na hanay ng open source code na na-publish sa GitHub at mga katulad na pampublikong repositoryo. Sa yugto ng pagsasanay, tinutukoy ng system ang mga tipikal na template upang bumuo ng mga istruktura sa code at bumuo ng isang syntactic tree ng mga koneksyon sa pagitan ng mga template na ito, na sumasalamin sa daloy ng pagpapatupad ng code sa programa. Bilang resulta, nabuo ang isang puno ng pagpapasya sa sanggunian, na pinagsasama-sama ang karanasan sa pag-unlad ng lahat ng nasuri na pinagmulang teksto.

Upang gawing mas available ang ControlFlag sa mas malawak na komunidad ng pagbuo ng software, ikinalulugod ng Intel na ipahayag na ang ControlFlag ay open source na ngayon at maaaring ma-access sa https://github.com/IntelLabs/control-flag. Ikinalulugod naming bigyan ang mga developer ng pagkakataon na bumuo dito at makita kung ano pa ang maaaring gawin sa napakahalaga at makabagong teknolohiyang ito.

Mula nang ipakilala ito, ang ControlFlag ay nasubok sa production-level na software at malawakang ginagamit na open source software system. Halimbawa, noong nakaraang taon, tinukoy ng ControlFlag ang isang anomalya ng code sa Client URL (cURL), isang proyekto ng software ng computer na naglilipat ng data gamit ang iba't ibang network protocol nang higit sa XNUMX bilyong beses sa isang araw. Pagkatapos iulat ang anomalya sa cURL team, sumang-ayon sila sa mga natuklasan ng ControlFlag at pagkatapos ay na-patch ang kanilang code.

Ang isang katulad na proseso ng pagtukoy ng mga pattern ay isinasagawa para sa code na sinusuri, na inihahambing sa isang reference decision tree. Ang malalaking pagkakaiba sa mga katabing sangay ay nagpapahiwatig ng isang anomalya sa pattern na bini-verify. Pinapayagan din ng system na hindi lamang makilala ang isang error sa template, ngunit magmungkahi din ng solusyon. Halimbawa, kapag nag-parse ng code snippet "if (x = 7) y = x;" natukoy ng system na ang construction na "variable == number" ay karaniwang ginagamit sa statement na "if" para ihambing ang mga numerical values, kaya ang indication na "variable = number" sa statement na "if" ay malamang na sanhi ng typographical error .

Ang mga tradisyunal na static analyzer ay makakakita ng ganoong error, ngunit, hindi katulad nila, ang ControlFlag ay hindi nag-aaplay ng mga out-of-the-box na panuntunan, kung saan mahirap hulaan ang lahat ng posibleng mga opsyon, ngunit sa halip ay nagsisimula sa mga istatistika ng paggamit ng lahat ng uri ng mga konstruksyon.sa malaking bilang ng mga proyekto.

Bilang isang eksperimento, kapag gumagamit ng ControlFlag sa source code ng cURL utility, madalas ay binanggit bilang isang halimbawa ng napatunayan, mataas na kalidad na code, mga static na analyzer nagsiwalat ng hindi sinasadyang bug kapag gumagamit ng elemento ng istruktura na "s-> keepon", na may numeric na uri, ngunit inihambing sa boolean value na TRUE.

Sa OpenSSL code, bilang karagdagan sa problemang nabanggit sa itaas na may "(s1 == NULL) ∧ (s2 == NULL)", nakita rin ang mga anomalya sa mga expression na "(-2 == rv)" na hindi bababa sa isang typo.

Iniulat din na ang paggamit ng ControlFlag ay naging posible upang matukoy ang ilang daang mga bug sa hindi partikular na proprietary software, na humahantong sa mga pag-crash at mga problema sa memorya.

Sa wakas kung interesado kang malaman ang tungkol dito, maaari mong suriin ang mga detalye Sa sumusunod na link. Tulad ng para sa mga interesadong makita ang source code, makuha ito o i-clone ito sa isang repository, magagawa nila ito mula sa ang sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.