Intel adatsegula makina ophunzirira makina a ControlFlag kuti azindikire zolakwika mu code

Intel yapeza zomwe zikuchitika zokhudzana ndi polojekiti ya ControlFlag yomwe cholinga chake ndi kupanga makina ophunzirira makina kuti apititse patsogolo ma code. Chida chokonzedwa ndi polojekitiyi chimalola, kutengera chitsanzo chophunzitsidwa pama code ambiri omwe alipo, kuzindikira zolakwika zosiyanasiyana ndi zolakwika m'malemba olembedwa m'zilankhulo zapamwamba monga C / C ++. Dongosololi ndi loyenera kuzindikira mitundu yosiyanasiyana yamavuto mu code, kuyambira pakuzindikiritsa ma typos ndi mitundu yosakanikirana yolakwika, mpaka kuzindikira macheke akusowa a NULL pazolozera ndi zovuta zamakumbukiro. Khodi ya ControlFlag imalembedwa mu C ++ ndipo imatsegulidwa pansi pa layisensi ya MIT.

Dongosololi likudziphunzitsa lokha popanga chiwerengero chamitundu yomwe ilipo yamapulojekiti otseguka omwe amasindikizidwa ku GitHub ndi malo osungira anthu ena ofanana. Pa gawo la maphunziro, dongosololi limasankha njira zopangira zomangira mu code ndikupanga mtengo wolumikizana pakati pa machitidwewa, kuwonetsa kuyenda kwa ma code mu pulogalamuyi. Zotsatira zake, mtengo wopangira zisankho umapangidwa womwe umaphatikiza zochitika zachitukuko zamakhodi onse omwe amawunikidwa.

Khodi yomwe ikuwunikiridwayo imachitanso njira yofananira yozindikiritsa mawonekedwe omwe amawunikiridwa ndi mtengo wachigamulo. Kusagwirizana kwakukulu ndi nthambi zoyandikana nazo kukuwonetsa kukhalapo kwa kusakhazikika munjira yomwe ikufufuzidwa. Dongosololi limakupatsaninso mwayi osati kungozindikira cholakwika mu template, komanso kuwonetsa kuwongolera. Mwachitsanzo, mu code OpenSSL, zomangamanga "(s1 == NULL) ∧ (s2 == NULL)" zinadziwika, zomwe zinawonekera mu mtengo wa syntax maulendo 8 okha, pamene nthambi yoyandikana kwambiri ndi mtengo "(s1 == NULL) | (s2 == NULL)” zinachitika pafupifupi nthawi 7 zikwi. Dongosololi lidazindikiranso zolakwika "(s1 == NULL) | (s2 == NULL)” yomwe idawonekera nthawi 32 mumtengo.

Intel adatsegula makina ophunzirira makina a ControlFlag kuti azindikire zolakwika mu code

Mukasanthula kachidutswa ka code "ngati (x = 7) y = x;" Dongosololi latsimikiza kuti kapangidwe ka "variable == number" nthawi zambiri amagwiritsidwa ntchito mu "ngati" wogwiritsa ntchito kuti afanizire manambala, kotero ndizotheka kwambiri kuti chizindikiritso cha "variable = number" mu mawu akuti "ngati" chimayambitsidwa ndi tayipo. Traditional static analyzers akadagwira cholakwa choterocho, koma mosiyana ndi iwo, ControlFlag sagwiritsa ntchito malamulo okonzeka, momwe zimakhala zovuta kupereka zonse zomwe zingatheke, koma zimachokera ku ziwerengero za kugwiritsa ntchito nyumba zosiyanasiyana mu chiwerengero chachikulu. za ma projekiti.

Monga kuyesera, pogwiritsa ntchito ControlFlag mu code source ya cURL utility, yomwe nthawi zambiri imatchulidwa ngati chitsanzo cha code yapamwamba komanso yoyesedwa, cholakwika chomwe sichinazindikiridwe ndi static analyzers chinadziwika pogwiritsa ntchito "s-> keeper", zomwe zinali ndi mtundu wa manambala, koma zimafaniziridwa ndi mtengo wa Boolean TRUE . Mu code ya OpenSSL, kuwonjezera pa vuto lomwe latchulidwa pamwambapa ndi "(s1 == NULL) ∧ (s2 == NULL)", zolakwika zidadziwikanso m'mawu akuti "(-2 == rv)" (kuchotsera kunali a typo) ndi "BIO_puts(bp, ":")

Source: opennet.ru

Kuwonjezera ndemanga