Zviri nyore kuedza static code analyzer. Asi kuishandisa, kunyanya mukugadzirwa kwepurojekiti huru yekare, kunoda unyanzvi. Kana zvikaitwa zvisizvo, muongorori anogona kuwedzera basa, kudzikamisa budiriro, uye kuderedza timu. Ngatitaurei muchidimbu nezve nzira yekusvika nayo nemazvo kubatanidzwa kweiyo static ongororo mune yekuvandudza maitiro uye kutanga kuishandisa sechikamu cheCI / CD.
Nhanganyaya
Munguva pfupi yapfuura pfungwa dzangu dzakakweverwa kune chinyorwa "
Chikwata chedu chePVS-Studio chinopa maonero aro pane iyi nyaya. Ngatitarisei kuti dambudziko rekushandisa static code analyzer rinomuka sei pakutanga, nzira yekukunda dambudziko iri, uye nzira yekubvisa zvishoma nezvishoma chikwereti chehunyanzvi.
Nyaya
Kazhinji hazvina kuoma kuvhura uye kuona kuti static analyzer inoshanda sei [
Yese static analyzers inoburitsa nhema positives. Ichi chikamu cheiyo static kodhi yekuongorora nzira, uye hapana chinogona kuitwa nezvazvo. Kazhinji, iri idambudziko risingagadziriswe, sezvakasimbiswa nedzidziso yaRice [
Nhema dzenhema harisi dambudziko kana iyo static analyzer yakatogadzirwa:
- Yakaremara isina basa seti yemitemo;
- Dzimwe ongororo dzisina basa dzakaremara;
- Kana isu tichitaura nezve C kana C ++, ipapo macros akaiswa chiratidzo ane chaiwo magadzirirwo anokonzera kusashanda yambiro kuoneka munzvimbo dzese dzinoshandiswa macros;
- Mabasa ega anomakwa anoita zviito zvakafanana nemaitiro ehurongwa (analogue yayo memcpy kana kudhinda) [
4 ]; - Nhema dzenhema dzakaremara zvakananga kushandisa mazwi;
- Etc.
Muchiitiko ichi, tinogona kutarisira yakaderera yenhema yakanaka mwero we10-15% [
Muchokwadi, muchirongwa chikuru, mufananidzo wekutanga uchave wakasiyana zvachose. Iyo analyzer inoburitsa mazana kana zviuru zveyambiro kune legacy code. Hazvibviri kukurumidza kunzwisisa kuti ndeipi yeyambiro iyi yakakosha uye isingakodzeri. Hazvina musoro kugara pasi uye kutanga kubata nenyevero idzi dzose, sezvo basa guru munyaya iyi richamira kwemazuva kana mavhiki. Kazhinji, timu haigone kuwana mamiriro akadaro. Pachave zvakare nenhamba hombe yemhando dzakasiyana dzinokanganisa nhoroondo yekuchinja. Uye kukurumidza kugadzirisa misa yezvimedu zvakawanda mukodhi zvinozokonzera typos nyowani uye zvikanganiso.
Uye zvinotonyanya kukosha, kuita kwakadaro mukurwisa nyevero hakuna musoro. Bvumiranai kuti sezvo purojekiti yave ichibudirira kwemakore akawanda, yakawanda yezvikanganiso zvakakomba mairi zvakatogadziriswa. Hongu, izvi zvigadziriso zvaidhura zvakanyanya, zvaifanira kugadziriswa, zvakagamuchira zvisina kunaka mushandisi mhinduro nezve bugs, zvichingodaro. A static analyzer yaizobatsira kugadzirisa akawanda ezvikanganiso izvi padanho rekodhi, nekukurumidza uye zvakachipa. Asi panguva ino, imwe nzira kana imwe, zvikanganiso izvi zvakagadziriswa, uye muongorori anonyanya kuona zvikanganiso zvisiri izvo zvakanyanya mukodhi yekare. Iyi kodhi inogona kusashandiswa, inogona kushandiswa kashoma, uye kukanganisa mairi kunogona kusatungamira kune zvinoonekwa mhedzisiro. Zvichida pane imwe nzvimbo mumvuri kubva pabhatani ndiwo mavara asina kunaka, asi izvi hazvikanganisi kushandiswa kweumwe munhu wechigadzirwa.
Chokwadi, kunyange zvikanganiso zviduku zvichiri kukanganisa. Uye dzimwe nguva kukanganisa kunogona kuvanza kusagadzikana chaiko. Nekudaro, kusiya zvese uye kupedza mazuva / mavhiki uchibata nekuremara izvo zvisinganyatso kuzviratidza zvinoita senge zano rinopokana.
Vagadziri vepurogiramu vanotarisa, tarisai, tarisai zvose izvi nyevero pamusoro pekodhi yekare yekushanda ... Uye vanofunga: tinogona kuita pasina static analysis. Handei tinonyora humwe hutsva hunobatsira kushanda.
Nenzira yavo vamene, vakarurama. Vanofunga kuti kutanga vanofanira kubvisa yambiro idzi dzese. Ipapo chete ivo vachakwanisa kubatsirwa nekushandisa nguva dzose yekodhi analyzer. Zvikasadaro, nyevero itsva dzichangonyura mune dzekare, uye hapana achadziteerera.
Iyi ndiyo fananidzo yakafanana neyeyevero dzemuunganidzi. Hazvisi pasina chikonzero chekuti vanokurudzira kuchengetedza nhamba yenyevero ye compiler pa 0. Kana pane 1000 yambiro, ipapo kana pane 1001, hapana anozoteerera pairi, uye hazvisi pachena kuti ndekupi kutsvaga iyi yambiro itsva.
Chinhu chakaipisisa munyaya iyi kana mumwe munhu anobva kumusoro panguva ino achikumanikidza kushandisa static code analysis. Izvi zvinongodzikisira timu, nekuti kubva pamaonero avo pachave nekuwedzera kuomarara kunowanikwa munzira. Hapana achatarisa mishumo yeanalyzer, uye kushandiswa kwose kuchava "papepa". Avo. Nenzira, kuongorora kunovakwa muDevOps maitiro, asi mukuita izvi hazvibatsiri chero munhu. Takanzwa nyaya dzakadzama pamatumba kubva kune vaipinda musangano. Chiitiko chakadaro chinogona kuodza mwoyo vanogadzira kubva kushandisa static maturusi ekuongorora kwenguva yakareba, kana zvisiri zvachose.
Kuita uye kubvisa chikwereti chehunyanzvi
Muchokwadi, hapana chakaoma kana chinotyisa nezve kuunza static kuongororwa kunyangwe mune yakakura purojekiti yekare.
CI / CD
Zvakare, iyo analyzer inogona pakarepo kuitwa chikamu chekuenderera mberi kwekuvandudza maitiro. Semuenzaniso, iyo PVS-Studio yekugovera ine zvishandiso zvekuona zviri nyore mushumo mune fomati yaunoda, uye zviziviso kune vanogadzira vakanyora zvinonetsa zvikamu zvekodhi. Kune avo vanonyanya kufarira kuvhura PVS-Studio kubva kuCI/CD masisitimu, ini ndinokurudzira kuti uzvizive kune zvinoenderana
PVS-Studio inoenda kumakore: Azure Devops PVS-Studio inoenda kumakore: Travis CI PVS-Studio inoenda kumakore: GitLab CI/CD PVS-Studio inoenda kumakore: CircleCI
Asi ngatidzokere kunyaya yenhamba yakawanda yenhema dzenhema pamatanho ekutanga ekushandisa maturusi ekuongorora kodhi.
Kugadzirisa chikwereti chiripo chehunyanzvi uye kubata neyambiro nyowani
Yemazuva ano yekutengesa static analyzers inobvumidza iwe kuti udzidze chete yambiro nyowani dzinoonekwa mune nyowani kana yakachinja kodhi. Kuitwa kwemuchina uyu kunosiyana, asi hunhu hwakafanana. MuPVS-Studio static analyzer, basa iri rinoitwa sezvinotevera.
Kukurumidza kutanga kushandisa static kuongorora, isu tinokurudzira vashandisi vePVS-Studio kuti vashandise nzira yekudzvinyirirwa kwakawanda kweyambiro [
Unogona kuudza PVS-Studio kuti itarise yambiro idzi dzisina basa parizvino (chengetedza chikwereti chehunyanzvi chekuzotevera), uye hazvichazovaratidza. Iyo analyzer inogadzira yakakosha faira iyo inochengetedza ruzivo nezve zvikanganiso zvisati zvave kunakidza. Uye ikozvino PVS-Studio ichaburitsa yambiro chete yekodhi nyowani kana yakashandurwa. Uyezve, izvi zvose zvinoshandiswa nehungwaru. Kana, semuenzaniso, mutsara usina chinhu wakawedzerwa kune kutanga kwekodhi yekodhi faira, ipapo muongorori anonzwisisa kuti, chaizvoizvo, hapana chakachinja, uye chicharamba chakanyarara. Iyi markup file inogona kuiswa mushanduro control system. Iyo faira yakakura, asi iyi haisi dambudziko, sezvo pasina chikonzero chekuichengeta kazhinji.
Iye zvino vese vanogadzira vanozoona yambiro ine chekuita chete nekodhi nyowani kana yakashandurwa. Nokudaro, unogona kutanga kushandisa analyzer, sezvavanotaura, kubva pazuva rinotevera. Uye iwe unogona kudzokera kuchikwereti chehunyanzvi gare gare, uye zvishoma nezvishoma gadzirisa zvikanganiso uye gadzirisa analyzer.
Saka, dambudziko rekutanga nekushandiswa kweanalyzer mune yakakura purojekiti yekare yakagadziriswa. Zvino ngationei zvekuita nechikwereti chehunyanzvi.
Bug kugadzirisa uye refactorings
Chinhu chakareruka uye chakasarudzika ndechekuisa parutivi imwe nguva yekuongorora yakadzvanywa yambiro yeanalyzer uye zvishoma nezvishoma kubata nazvo. Pane imwe nzvimbo iwe unofanirwa kugadzirisa zvikanganiso mukodhi, pane imwe nzvimbo iwe unofanirwa refactor kuudza analyzer kuti iyo kodhi haina dambudziko. Muenzaniso uri nyore:
if (a = b)
Vazhinji C ++ compilers uye analyzers vanogunun'una nezve kodhi yakadai, sezvo paine mukana wakakura wekuti ivo vaida chaizvo kunyora. (a == b). Asi pane chibvumirano chisingatauriki, uye izvi zvinowanzoonekwa muzvinyorwa, kuti kana pane mamwe maparentheses, zvino inofungidzirwa kuti mugadziri akanyora nemaune code yakadaro, uye hapana chikonzero chekupika. Semuenzaniso, muPVS-Studio zvinyorwa zvekuongorora
if ((a = b))
Mumwe muenzaniso. Zvakakanganwika here muC++ kodhi iyi? zororo kana kwete?
case A:
foo();
case B:
bar();
break;
Iyo PVS-Studio analyzer ichapa yambiro pano
case A:
foo();
[[fallthrough]];
case B:
bar();
break;
Zvinogona kutaurwa kuti shanduko dzakadaro dzekodhi hadzigadzirise bug. Hongu, ichi ichokwadi, asi chinoita zvinhu zviviri zvinobatsira. Chekutanga, iyo analyzer report inobvisa manyepo positives. Chechipiri, iyo kodhi inova inonzwisisika kune vanhu vanobatanidzwa mukugadzirisa kwayo. Uye izvi zvakakosha zvikuru! Kune izvi chete, zvakakodzera kuita zvidiki zvigadziriso kuita kuti kodhi ive yakajeka uye nyore kuchengetedza. Sezvo muongorori asinganzwisisi kuti "kutyora" kuri kudiwa here kana kuti kwete, hazvizove pachena kune vamwe vanogadzira zvirongwa.
Pamusoro pekugadzirisa kwebug uye refactorings, unogona kudzvanya zviri pachena nhema analyzer yambiro. Dzimwe ongororo dzisina basa dzinogona kudzimwa. Semuenzaniso, mumwe munhu anofunga kuti yambiro haina maturo
Pane dzimwe nzira dzekudzvanya nyevero dzenhema. Semuenzaniso, macro markup yakambotaurwa. Zvose izvi zvinotsanangurwa zvakadzama mune zvinyorwa. Chinhu chinonyanya kukosha ndechokunzwisisa kuti kana iwe zvishoma nezvishoma uye zvakarongeka uchisvika kushanda nemafungiro enhema, hapana chakaipa navo. Ruzhinji rweyambiro dzisingafadzi dzinonyangarika mushure mekugadzirisa, uye nzvimbo chete dzinoda kunyatsodzidza uye dzimwe shanduko mukodhi dzinosara.
Zvakare, isu tinogara tichibatsira vatengi vedu kumisikidza PVS-Studio kana paine matambudziko amuka. Uyezve, pane zviitiko apo isu pachedu takabvisa nyevero dzenhema uye tikagadzirisa zvikanganiso [
Ratchet nzira
Pane imwe nzira inonakidza yekuvandudza zvishoma nezvishoma kodhi yemhando nekubvisa iyo static analyzer yambiro. Chinokosha ndechekuti nhamba yeyambiro inogona chete kuderera.
Huwandu hweyambiro dzakaburitswa neiyo static analyzer yakanyorwa. Gedhi remhando inogadziriswa nenzira yekuti ikozvino unogona kungoisa kodhi isingawedzere nhamba yekushanda. Nekuda kweizvozvo, maitiro ekudzikisa zvishoma nezvishoma nhamba yearamu anotanga nekugadzirisa analyzer uye kugadzirisa zvikanganiso.
Kunyange kana munhu achida kubiridzira zvishoma uye anosarudza kupfuudza gedhi rehutano kwete nekubvisa nyevero mukodhi yake itsva, asi nekuvandudza kodhi yekare yechitatu, izvi hazvityi. Zvose zvakafanana, ratchet inotenderera mune imwe nzira, uye zvishoma nezvishoma nhamba yekuremara ichaderera. Kunyangwe kana munhu asingadi kugadzirisa zvikanganiso zvake zvitsva, achazofanira kuvandudza chimwe chinhu mukodhi yevavakidzani. Pane imwe nguva, nzira dzakareruka dzekudzikisa huwandu hwenyevero dzinopera, uye kunouya imwe nguva apo mabhugi chaiwo achagadziriswa.
Iyi nzira inotsanangurwa zvakadzama munyaya inofadza zvikuru naIvan Ponomarev "
Munyori wechinyorwa anewo mushumo pamusoro penyaya iyi: "
mhedziso
Ndinovimba kuti mushure mechinyorwa ichi, vaverengi vachange vachigamuchira zvakanyanya maturusi ekuongorora maturusi uye vachada kuashandisa mukuita budiriro. Kana uine mibvunzo, tinogara takagadzirira
Pane kumwe kusahadzika kwakajairwa pamusoro pekuti static ongororo inogona kunyatso kuve nyore uye inobatsira. Ndakaedza kubvisa zvakawanda zvekusahadzika uku mukudhindwa "Zvikonzero zvekuunza iyo PVS-Studio static code analyzer mukuvandudza maitiro" [
Ndinokutendai nekuteerera kwenyu uye huya
Mamwe malink
- Andrey Karpov.
Ndingakurumidza sei kuona yambiro inonakidza inogadzirwa nePVS-Studio analyzer yeC uye C ++ kodhi? - Wikipedia.
Rice's theorem . - Andrey Karpov, Victoria Khanieva.
Kushandisa muchina kudzidza mune static ongororo yechirongwa sosi kodhi . - PVS-Studio. Zvinyorwa.
Zvimwe zvirongwa zvekuongorora . - Andrey Karpov.
Hunhu hwePVS-Studio analyzer uchishandisa muenzaniso weEFL Core Libraries, 10-15% manyepo enhema. . - PVS-Studio. Zvinyorwa.
Misa kudzvinyirirwa kweanalyzer mameseji . - Ivan Andryashin.
Nezve mayedzero atakaita static ongororo papurojekiti yedu yedzidzo simulator yeX-ray endovascular surgery . - Pavel Eremeev, Svyatoslav Razmyslov.
Iyo PVS-Studio timu yakavandudza sei Unreal Injini kodhi . - Andrey Karpov.
Zvikonzero zvekuunza iyo static code analyzer PVS-Studio mune yekuvandudza maitiro .
Kana iwe uchida kugovera chinyorwa ichi nevateereri vanotaura Chirungu, tapota shandisa shanduro yekushandura: Andrey Karpov.
Source: www.habr.com