Giablihan sa Intel ang ControlFlag machine learning system code aron mailhan ang mga bug sa code

Nadiskobrehan sa Intel ang mga kalambuan nga may kalabotan sa proyekto sa panukiduki sa ControlFlag nga gitumong sa paghimo og sistema sa pagkat-on sa makina aron mapaayo ang kalidad sa code. Ang toolkit nga giandam sa proyekto nagtugot, base sa usa ka modelo nga gibansay sa usa ka dako nga kantidad sa kasamtangan nga code, sa pag-ila sa lain-laing mga sayop ug anomaliya sa tinubdan teksto nga gisulat sa taas nga lebel nga mga pinulongan sama sa C/C++. Ang sistema haom alang sa pag-ila sa lain-laing mga matang sa mga problema sa code, gikan sa pag-ila sa mga typo ug sayop nga mga kombinasyon sa tipo, ngadto sa pag-ila sa nawala nga NULL value checks sa mga pointer ug mga problema sa memorya. Ang ControlFlag code kay gisulat sa C++ ug open sourced ubos sa lisensya sa MIT.

Ang sistema kay nagkat-on sa kaugalingon pinaagi sa paghimo ug estadistika nga modelo sa kasamtangan nga code array sa mga bukas nga proyekto nga gipatik sa GitHub ug susamang mga pampublikong repositoryo. Sa yugto sa pagbansay, ang sistema nagtino sa tipikal nga mga sumbanan alang sa pagtukod sa mga istruktura sa code ug nagtukod og usa ka syntactic nga kahoy sa mga koneksyon tali niini nga mga sumbanan, nga nagpakita sa dagan sa code execution sa programa. Ingon usa ka sangputanan, usa ka punoan sa paghimog desisyon sa pakisayran ang naporma nga naghiusa sa kasinatian sa pag-uswag sa tanan nga gisusi nga mga code sa gigikanan.

Ang code nga gisusi nag-agi sa susamang proseso sa pag-ila sa mga sumbanan nga gisusi batok sa usa ka reference decision tree. Ang dagkong mga kalainan sa silingang mga sanga nagpakita sa presensya sa usa ka anomaliya sa sumbanan nga gisusi. Gitugotan ka usab sa sistema dili lamang sa pag-ila sa usa ka sayup sa template, apan usab sa pagsugyot sa usa ka pagtul-id. Pananglitan, sa OpenSSL code, ang pagtukod "(s1 == NULL) ∧ (s2 == NULL)" giila, nga nagpakita sa syntax tree 8 lang ka beses, samtang ang pinakaduol nga sanga nga adunay bili "(s1 == NULL) || (s2 == NULL)” nahitabo mga 7 ka libo ka beses. Nakita usab sa sistema ang usa ka anomaliya "(s1 == NULL) | (s2 == NULL)” nga mipakita 32 ka beses sa kahoy.

Giablihan sa Intel ang ControlFlag machine learning system code aron mailhan ang mga bug sa code

Sa pag-analisar sa tipik sa code "kung (x = 7) y = x;" Gitino sa sistema nga ang pagtukod sa "variable == number" sagad gigamit sa operator nga "kon" aron itandi ang mga kantidad sa numero, mao nga lagmit nga ang timailhan nga "variable = numero" sa ekspresyon nga "kon" gipahinabo sa usa ka typo. Ang tradisyonal nga static analisador unta nakadakop sa ingon nga usa ka sayop, apan dili sama kanila, ControlFlag wala mag-aplay andam-naghimo mga lagda, diin kini mao ang lisud nga sa paghatag alang sa tanan nga posible nga mga kapilian, apan gibase sa statistics sa paggamit sa lain-laing mga istruktura sa usa ka dako nga gidaghanon. sa mga proyekto.

Isip usa ka eksperimento, gamit ang ControlFlag sa source code sa cURL utility, nga sagad gikutlo isip usa ka panig-ingnan sa taas nga kalidad ug nasulayan nga code, usa ka sayop nga wala mamatikdi sa mga static analyzers ang giila sa dihang gigamit ang structure element nga "s-> keepon", nga adunay usa ka numeric type, apan gitandi sa Boolean nga kantidad TINUOD . Sa OpenSSL code, dugang pa sa gihisgutan sa ibabaw nga problema sa "(s1 == NULL) ∧ (s2 == NULL)", ang mga anomaliya giila usab sa mga ekspresyong "(-2 == rv)" (ang minus kay usa ka typo) ug "BIO_puts(bp, ":")

Source: opennet.ru

Idugang sa usa ka comment