I-Intel ivule ikhowudi yokufunda yomatshini we-ControlFlag ukuchonga iibugs kwikhowudi

I-Intel ifumene uphuhliso olunxulumene neprojekthi yophando ye-ControlFlag, ejoliswe ekudaleni inkqubo yokufunda ngomatshini ukuphucula umgangatho wekhowudi. I-toolkit elungiselelwe yiprojekthi ivumela, ngokusekwe kwimodeli eqeqeshwe kwisixa esikhulu sekhowudi ekhoyo, ukufumanisa iimpazamo ezahlukeneyo kunye nokungahambi kakuhle kwimibhalo yomthombo ebhalwe ngeelwimi eziphezulu ezifana neC / C ++. Inkqubo ifanelekile ukuchonga iintlobo ezahlukeneyo zeengxaki kwikhowudi, ukusuka ekufumaneni i-typos kunye nokudibanisa uhlobo olungalunganga, ukukhangela ukuhlolwa kwe-NULL ephosiweyo kwiimpawu kunye neengxaki zememori. Ikhowudi ye-ControlFlag ibhalwe kwi-C ++ kwaye ingumthombo ovulekileyo phantsi kwelayisenisi ye-MIT.

Inkqubo izifunda ngokwazo ngokwakha imodeli yamanani yekhowudi esele ikhona yeeprojekthi ezivulekileyo ezipapashwe kwi-GitHub kunye neendawo zokugcina zoluntu ezifanayo. Kwinqanaba lokufunda, inkqubo imisela iipatheni eziqhelekileyo zokwakha izakhiwo kwikhowudi kwaye yakha umthi we-syntactic wokudibanisa phakathi kwezi patheni, ezibonisa ukuhamba kwekhowudi kwiprogram. Ngenxa yoko, umthi wesigqibo sereferensi wenziwa odibanisa amava okuphuhlisa zonke iitekisi zomthombo ohlalutyiweyo.

Ikhowudi evavanywayo ihamba ngenkqubo efanayo yokuchonga iipateni ezihlolwe ngokuchasene nomthi wesigqibo sereferensi. Ukungangqinelani okukhulu kunye namasebe angabamelwane kubonisa ubukho be-anomaly kwi-template ejongwayo. Inkqubo ivumela nje kuphela ukuchonga impazamo kwitemplate, kodwa nokucebisa ukulungiswa. Ngokomzekelo, kwikhowudi ye-OpenSSL, ukwakhiwa "(s1 == NULL) ∧ (s2 == NULL)" kwafunyanwa, okwenzeka kuphela ngamaxesha e-8 kumthi we-syntax, ngelixa isebe elikufutshane elinexabiso "(s1 == NULL) | (s2 == NULL)" yenzeka malunga namawaka angama-7 amaxesha. Inkqubo iphinde yafumanisa into engaqhelekanga β€œ(s1 == NULL) | (s2 == NULL)" eyenzeka amaxesha angama-32 emthini.

I-Intel ivule ikhowudi yokufunda yomatshini we-ControlFlag ukuchonga iibugs kwikhowudi

Xa ucazulula isiqwengana sekhowudi "ukuba (x = 7) y = x;" inkqubo iye yagqiba ukuba ulwakhiwo "i-variable == number" idla ngokusetyenziswa kwingxelo ethi "ukuba" ukuthelekisa amanani amanani, ngoko ke, ngokunokwenzeka okuphezulu, isalathiso "variable = inani" kwintetho ethi "ukuba" ibangelwa uchwethezo. Abahlalutyi bemveli be-static nabo baya kubamba impazamo enjalo, kodwa ngokungafaniyo nabo, i-ControlFlag ayisebenzisi imithetho esele ilungile apho kunzima ukubona zonke iinketho ezinokwenzeka, kodwa isekelwe kwizibalo zokusebenzisa zonke iintlobo zokwakhiwa kwinani elikhulu iiprojekthi.

Njengomvavanyo, usebenzisa i-ControlFlag kwikhowudi yomthombo we-cURL utility, edla ngokucatshulwa njengomzekelo wekhowudi ephezulu kunye neqinisekisiweyo, impazamo engazange ibonwe ngabahlalutyi be-static yafunyanwa xa kusetyenziswa i-"s-> keeping" element yesakhiwo, eyayinodidi lwamanani, kodwa yathelekiswa nexabiso le boolean TRUE . Kwikhowudi ye-OpenSSL, ukongeza kule ngxaki ingasentla "(s1 == NULL) ∧ (s2 == NULL)", bekukho kwakhona iziphazamiso kwintetho "(-2 == rv)" (i-minus ibiyitypo). ) kunye ne "BIO_puts(bp, ":")

umthombo: opennet.ru

Yongeza izimvo