Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh

Sgìth de ath-sgrùdadh còd gun chrìoch no debugging, uaireannan bidh thu a’ smaoineachadh air mar as urrainn dhut do bheatha a dhèanamh nas sìmplidhe. Agus an dèidh beagan rannsachaidh a dhèanamh, no le bhith a 'bualadh air gun fhiosta, chì thu an abairt draoidheachd: "Sgrùdadh statach". Chì sinn dè a th’ ann agus mar as urrainn dha eadar-obrachadh leis a’ phròiseact agad.

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh
Gu dearbh, ma sgrìobhas tu ann an cànan ùr-nodha sam bith, an uairsin, gun eadhon ga thuigsinn, ruith thu e tro anailisiche statach. Is e an fhìrinn gu bheil inneal-cruinneachaidh ùr-nodha sam bith a’ toirt seachad, ged is e seata beag de rabhaidhean a th’ ann mu dhuilgheadasan a dh’ fhaodadh a bhith sa chòd. Mar eisimpleir, nuair a bhios tu a’ cur ri chèile còd C ++ ann an Visual Studio is dòcha gum faic thu na leanas:

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh
Anns an toradh seo chì sinn gu bheil an caochlaideach tha cha deach a chleachdadh a-riamh an àite sam bith san ghnìomh. Mar sin ann an da-rìribh, cha mhòr nach robh thu a-riamh a’ cleachdadh anailisiche còd statach sìmplidh. Ach, eu-coltach ri sgrùdairean proifeasanta leithid Coverity, Klocwork no PVS-Studio, is dòcha nach bi na rabhaidhean a thug an neach-cruinneachaidh a’ nochdadh ach raon beag de dhuilgheadasan.

Mura h-eil fios agad le cinnt dè a th’ ann am mion-sgrùdadh statach agus mar a chuireas tu an gnìomh e, leugh an artaigil seogus barrachd ionnsachadh mun dòigh-obrach seo.

Carson a tha feum agad air mion-sgrùdadh statach?

Ann an ùine ghoirid: luathachadh agus sìmpleachadh.

Leigidh mion-sgrùdadh statach dhut tòrr dhuilgheadasan eadar-dhealaichte a lorg anns a’ chòd: bho chleachdadh mì-cheart de chruthan cànain gu typos. Mar eisimpleir, an àite

auto x = obj.x;
auto y = obj.y;
auto z = obj.z;

Sgrìobh thu an còd a leanas:

auto x = obj.x;
auto y = obj.y;
auto z = obj.x;

Mar a chì thu, tha typo anns an loidhne mu dheireadh. Mar eisimpleir, bidh PVS-Studio a’ toirt seachad an rabhadh a leanas:

V537 Beachdaich air ath-sgrùdadh ceartachd cleachdadh nì ‘y’.

Ma tha thu airson do làmhan a chuir a-steach don mhearachd seo, feuch eisimpleir deiseil ann an Compiler Explorer: *briog*.

Agus mar a thuigeas tu, chan eil e an-còmhnaidh comasach aire a thoirt do na h-earrannan sin de chòd sa bhad, agus air sgàth seo, faodaidh tu suidhe sìos a ’deasbad airson uair a thìde math, a’ faighneachd carson a tha a h-uile dad ag obair cho neònach.

Ach, tha seo gu soilleir na mhearachd. Dè ma sgrìobh an leasaiche còd suboptimal leis gun do dhìochuimhnich e beagan seòltachd sa chànan? No eadhon ceadaichte sa chòd giùlan neo-mhìnichte? Gu mì-fhortanach, tha cùisean mar seo gu tur cumanta agus thathas a’ caitheamh ùine an leòmhann a’ dì-bhugachadh còd obrach sònraichte anns a bheil typos, mearachdan àbhaisteach no giùlan neo-mhìnichte.

Is ann airson na suidheachaidhean sin a nochd mion-sgrùdadh statach. Is e seo neach-cuideachaidh don leasaiche a chomharraicheas diofar dhuilgheadasan anns a ’chòd agus mìnichidh e anns na sgrìobhainnean carson nach eil feum air sgrìobhadh san dòigh seo, dè as urrainn dha leantainn agus mar a bu chòir a chàradh. Seo eisimpleir de cò ris a dh’ fhaodadh e a bhith coltach: *briog*.

Gheibh thu mearachdan nas inntinniche a lorgas an anailisiche anns na h-artaigilean:

A-nis gu bheil thu air an stuth seo a leughadh agus gu bheil thu cinnteach mu na buannachdan a tha an lùib mion-sgrùdadh statach, is dòcha gum biodh tu airson feuchainn air. Ach càite an tòisich thu? Ciamar a chuireas tu inneal ùr a-steach don phròiseact làithreach agad? Agus ciamar a thoirt a-steach an sgioba dha? Gheibh thu freagairtean do na ceistean sin gu h-ìosal.

Nòta: Chan eil mion-sgrùdadh statach a’ dol an àite no a’ cuir dheth rud cho feumail ri lèirmheasan còd. Bidh e a’ cur ris a’ phròiseas seo, a’ cuideachadh le bhith a’ mothachadh agus a’ ceartachadh typos, mearachd agus dealbhaidhean cunnartach ro-làimh. Tha e tòrr nas cinneasaiche fòcas a chuir air lèirmheasan còd air algorithms agus soilleireachd còd, an àite a bhith a’ coimhead airson bragan ceàrr no leugh gnìomhan coimeas dòrainneach.

0. A' faighinn eòlas air an inneal

Tha e uile a 'tòiseachadh le tionndadh deuchainn. Gu dearbh, tha e duilich co-dhùnadh rudeigin a thoirt a-steach don phròiseas leasachaidh mura h-eil thu air an inneal fhaicinn beò roimhe. Mar sin, is e a’ chiad rud a bu chòir dhut a dhèanamh a luchdachadh sìos tionndadh deuchainn.

Na dh’ ionnsaicheas tu aig an ìre seo:

  • Dè na dòighean air eadar-obrachadh leis an anailisiche;
  • A bheil an anailisiche co-chòrdail ris an àrainneachd leasachaidh agad?
  • Dè na duilgheadasan a tha anns na pròiseactan agad an-dràsta?

Às deidh dhut a h-uile dad a dh ’fheumas tu a chuir a-steach, is e a’ chiad rud a bu chòir dhut a dhèanamh sgrùdadh a dhèanamh air a ’phròiseact gu lèir (Windows, Linux, MacOS). A thaobh PVS-Studio ann an Visual Studio chì thu dealbh coltach ris (briog air):

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh
Is e an fhìrinn gu bheil sgrùdairean statach mar as trice a ’toirt a-mach àireamh mhòr de rabhaidhean airson pròiseactan le bunait còd mòr. Chan eil feum air an càradh uile, leis gu bheil am pròiseact agad ag obair mar-thà, a tha a 'ciallachadh nach eil na duilgheadasan sin deatamach. Ge-tà, thu fhèin faodaidh tu coimhead air na rabhaidhean as inntinniche agus ceartaich iad ma tha sin riatanach. Gus seo a dhèanamh, feumaidh tu an toradh a shìoladh agus fàg dìreach na teachdaireachdan as earbsaiche. Anns a ’plugan PVS-Studio airson Visual Studio, thèid seo a dhèanamh le bhith a’ sìoladh a rèir ìrean mearachd agus roinnean. Airson an toradh as cruinne, fàg a-mhàin Àrd и Coitcheann (cuideachd cliogadh):

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh
Gu dearbh, tha 178 rabhadh fada nas fhasa fhaicinn na grunn mhìltean...

Ann an tabaichean tro Mheadhan na и Ìosal Gu math tric tha rabhaidhean math ann, ach tha na roinnean sin a 'gabhail a-steach an fheadhainn aig a bheil nas lugha de mhearachd (earbsachd). Gheibhear barrachd fiosrachaidh mu ìrean rabhaidh agus roghainnean airson obrachadh fo Windows an seo: *briog*.

Is fhiach ath-sgrùdadh soirbheachail a dhèanamh air na mearachdan as inntinniche (agus an ceartachadh gu soirbheachail). cuir às do na rabhaidhean a tha air fhàgail. Tha seo riatanach gus nach tèid rabhaidhean ùra air chall am measg nan seann fheadhainn. A bharrachd air an sin, tha anailisiche statach na neach-cuideachaidh don phrògramadair, agus chan e liosta de bhiteagan. 🙂

1. Èifeachdais

Às deidh dhut eòlas fhaighinn, tha an t-àm ann plugins a rèiteachadh agus amalachadh a-steach do CI. Feumar seo a dhèanamh mus tòisich prògramadairean a’ cleachdadh an anailisiche statach. Is e an fhìrinn gum faod am prògramadair dìochuimhneachadh mion-sgrùdadh a chomasachadh no nach eil e airson a dhèanamh idir. Gus seo a dhèanamh, feumaidh tu sgrùdadh deireannach a dhèanamh air a h-uile càil gus nach fhaigh còd gun dearbhadh a-steach don mheur leasachaidh coitcheann.

Na dh’ionnsaicheas tu aig an ìre seo:

  • Dè na roghainnean fèin-ghluasaid a bheir an inneal seachad;
  • A bheil an anailisiche co-chòrdail ris an t-siostam cruinneachaidh agad?

Leis nach eil sgrìobhainnean foirfe ann, uaireannan feumaidh tu sgrìobhadh a-steach taic. Tha seo àbhaisteach agus tha sinn toilichte do chuideachadh. 🙂

A-nis gluaisidh sinn air adhart gu seirbheisean amalachaidh leantainneach (CI). Faodar anailisiche sam bith a chuir an gnìomh annta gun droch dhuilgheadasan sam bith. Gus seo a dhèanamh, feumaidh tu ìre fa leth a chruthachadh anns an loidhne-phìoban, a tha mar as trice air a shuidheachadh às deidh na deuchainnean togail agus aonad. Tha seo air a dhèanamh le bhith a’ cleachdadh diofar ghoireasan console. Mar eisimpleir, tha PVS-Studio a’ toirt seachad na goireasan a leanas:

Gus mion-sgrùdadh fhilleadh a-steach do CI, feumaidh tu trì rudan a dhèanamh:

  • Stàlaich an analyzer;
  • Run mion-sgrùdadh;
  • Thoir seachad toraidhean.

Mar eisimpleir, gus PVS-Studio a stàladh air Linux (Debian-base), feumaidh tu na h-òrdughan a leanas a ruith:

wget -q -O - https://files.viva64.com/etc/pubkey.txt 
    | sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list 
  https://files.viva64.com/etc/viva64.list
  
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio

Air siostaman a tha a ’ruith Windows, chan eil dòigh ann an anailisiche a chuir a-steach bhon mhanaidsear pacaid, ach tha e comasach an anailisiche a chuir a-steach bhon loidhne-àithne:

PVS-Studio_setup.exe /verysilent /suppressmsgboxes 
/norestart /nocloseapplications

Faodaidh tu barrachd a leughadh mu bhith a’ cleachdadh PVS-Studio air siostaman a tha a’ ruith Windows *an seo*.

Às deidh an stàladh, feumaidh tu an anailis a ruith gu dìreach. Ach, thathas a’ moladh seo a dhèanamh dìreach às deidh an cruinneachadh agus na deuchainnean seachad. Tha seo air sgàth gu bheil mion-sgrùdadh statach mar as trice a’ toirt dà uair cho fada ri bhith a’ cur ri chèile.

Leis gu bheil an dòigh cur air bhog an urra ris an àrd-ùrlar agus feartan pròiseict, seallaidh mi an roghainn airson C ++ (Linux) mar eisimpleir:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w

Bidh a 'chiad òrdugh a' coileanadh an anailis, agus an dàrna fear cèiseanag atharrachadh na h-aithisg gu cruth teacsa, ga thaisbeanadh air an sgrion agus a’ tilleadh còd tilleadh a bharrachd air 0 ma tha rabhaidhean ann. Faodar inneal mar seo a chleachdadh gu h-iomchaidh gus casg a chuir air togail nuair a bhios teachdaireachdan mearachd ann. Ach, faodaidh tu an-còmhnaidh am bratach a thoirt air falbh -w agus na cuir bacadh air co-chruinneachadh anns a bheil rabhaidhean.

Nòta: Tha cruth an teacsa mì-ghoireasach. Tha e air a thoirt seachad gu sìmplidh mar eisimpleir. Thoir aire do chruth aithisg nas inntinniche - FullHtml. Leigidh e leat seòladh tron ​​​​chòd.

Faodaidh tu barrachd a leughadh mu bhith a’ stèidheachadh mion-sgrùdadh air CI san artaigil "PVS-Studio agus Amalachadh Leantainneach"(Windows) no"Mar a stèidhicheas tu PVS-Studio ann an Travis CI" (Linux).

Ceart gu leòr, tha thu air an anailisiche a rèiteachadh air an t-seirbheisiche togail. A-nis, ma luchdaicheas cuideigin suas còd gun dearbhadh, fàilligidh an ìre dearbhaidh, agus bidh e comasach dhut an duilgheadas a lorg, ge-tà, chan eil seo gu tur goireasach, leis gu bheil e nas èifeachdaiche sgrùdadh a dhèanamh air a ’phròiseact chan ann às deidh na meuran a bhith air an aonachadh, ach roimhe, aig ìre iarrtas tarraing. A.

San fharsaingeachd, chan eil stèidheachadh mion-sgrùdadh iarrtas tarraing mòran eadar-dhealaichte bho bhith a’ cur air bhog sgrùdadh àbhaisteach air CI. A bharrachd air an fheum air liosta de fhaidhlichean atharraichte fhaighinn. Mar as trice gheibhear iad seo le bhith a’ ceasnachadh nan eadar-dhealachaidhean eadar meuran a’ cleachdadh git:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

A-nis feumaidh tu an liosta seo de fhaidhlichean a chuir chun anailisiche mar chur-a-steach. Mar eisimpleir, ann am PVS-Studio tha seo air a bhuileachadh a’ cleachdadh a’ bhratach -S:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

Gheibh thu a-mach tuilleadh mu bhith a’ dèanamh anailis air iarrtasan tarraing *an seo*. Fiù mura h-eil do CI air an liosta de sheirbheisean air an deach iomradh a thoirt san artaigil, gheibh thu an earrann choitcheann a tha coisrigte do theòiridh an seòrsa anailis seo feumail.

Le bhith a’ stèidheachadh mion-sgrùdadh air iarrtasan tarraing, faodaidh tu casg a chuir air geallaidhean anns a bheil rabhaidhean, agus mar sin a’ cruthachadh crìoch nach urrainn còd gun dearbhadh a dhol tarsainn.

Tha seo uile gu cinnteach math, ach bu mhath leam a bhith comasach air a h-uile rabhadh fhaicinn ann an aon àite. Chan ann a-mhàin bhon anailisiche statach, ach cuideachd bho dheuchainnean aonad no bhon anailisiche fiùghantach. Tha diofar sheirbheisean agus plugins ann airson seo. Tha PVS-Studio, mar eisimpleir, air plugan airson amalachadh a-steach do SonarQube.

2. Amalachadh air innealan leasaiche

A-nis tha an t-àm ann an anailisiche a chuir a-steach agus a rèiteachadh airson cleachdadh leasachaidh làitheil. Aig an ìre seo tha thu mar-thà air fàs eòlach air a 'mhòr-chuid de dhòighean-obrach, agus mar sin is e seo am pàirt as fhasa.

Mar an roghainn as sìmplidh, faodaidh luchd-leasachaidh an anailisiche riatanach a chuir a-steach iad fhèin. Ach, bheir seo tòrr ùine agus bheir e air falbh iad bho leasachadh, gus an urrainn dhut am pròiseas seo a dhèanamh fèin-ghluasadach le bhith a’ cleachdadh stàlaichear agus na brataichean riatanach. Airson PVS-Studio tha diofar ann brataichean airson stàladh fèin-ghluasadach. Ach, tha manaidsearan pacaid ann an-còmhnaidh, mar eisimpleir, Chocolatey (Windows), Homebrew (macOS) no dusanan de roghainnean airson Linux.

An uairsin feumaidh tu na plugins riatanach a stàladh, mar eisimpleir airson Lèirsinne Studio, EADAR-MHINEACHADH, Rider msaa

3. Cleachdadh làitheil

Aig an ìre seo, tha an t-àm ann beagan fhaclan a ràdh mu dhòighean air an anailisiche a luathachadh rè cleachdadh làitheil. Bheir mion-sgrùdadh iomlan air a’ phròiseact gu lèir tòrr ùine, ach dè cho tric ’s a dh’ atharraicheas sinn còd tron ​​phròiseact air fad aig an aon àm? Cha mhòr gu bheil ath-leasachadh sam bith ann a tha cho mòr is gun toir e buaidh sa bhad air bunait a’ chòd gu lèir. Is ann ainneamh a bhios an àireamh de fhaidhlichean a thèid atharrachadh aig aon àm nas àirde na dusan, agus mar sin tha e ciallach an sgrùdadh. Airson a leithid de shuidheachadh tha modh mion-sgrùdadh mean air mhean. Dìreach na biodh eagal ort, chan e inneal eile a tha seo. Is e modh sònraichte a tha seo a leigeas leat mion-sgrùdadh a dhèanamh air dìreach faidhlichean atharraichte agus an eisimeileachd, agus bidh seo a’ tachairt gu fèin-ghluasadach às deidh dhut togail ma tha thu ag obair ann an IDE leis a ’plugan air a chuir a-steach.

Ma lorgas an anailisiche duilgheadasan anns a’ chòd a chaidh atharrachadh o chionn ghoirid, bheir e cunntas neo-eisimeileach air seo. Mar eisimpleir, innsidh PVS-Studio dhut mu dheidhinn seo le bhith a’ cleachdadh rabhadh:

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh
Gu dearbh, chan eil e gu leòr innse do luchd-leasachaidh an inneal a chleachdadh. Feumaidh sinn dòigh air choireigin innse dhaibh dè a th’ ann agus ciamar a tha e. An seo, mar eisimpleir, tha artaigilean mu thoiseach tòiseachaidh luath airson PVS-Studio, ach gheibh thu clasaichean oideachaidh coltach ris airson inneal sam bith as fheàrr leat:

Bidh artaigilean mar seo a ’toirt seachad a h-uile fiosrachadh a tha riatanach airson a chleachdadh gu làitheil agus chan eil iad a’ toirt mòran ùine. 🙂

Fiù ‘s aig an ìre de bhith a’ faighinn eòlas air an inneal, chuir sinn às do mhòran rabhaidhean aig aon de na ciad chuir air bhog. Gu mì-fhortanach, chan eil sgrùdairean statach foirfe, agus mar sin bho àm gu àm bidh iad a ’toirt seachad rudan ceàrr. Mar as trice tha e furasta an cumail suas; mar eisimpleir, anns a ’plugan PVS-Studio airson Visual Studio chan fheum thu ach aon phutan a bhriogadh:

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh
Ach, faodaidh tu barrachd a dhèanamh na dìreach cuir às dhaibh. Mar eisimpleir, faodaidh tu cunntas a thoirt air duilgheadas airson taic. Mas urrainnear an dearbhach meallta a cheartachadh, an uairsin ann an ùrachaidhean san àm ri teachd chì thu gu bheil nas lugha agus nas lugha de nithean meallta a tha sònraichte don bhun-chòd agad gach uair.

Eadar-theangachaidhean

Mar sin tha sinn air a dhol tro gach ìre de bhith ag amalachadh mion-sgrùdadh statach a-steach don phròiseas leasachaidh. A dh 'aindeoin cho cudromach' sa tha e innealan mar sin a stèidheachadh air CI, is e coimpiutair an leasaiche an àite as cudromaiche airson an ruith. Às deidh na h-uile, chan e britheamh a th’ ann an anailisiche statach a tha ag ràdh an àiteigin fada air falbh bhuat nach eil an còd math. Air an làimh eile, is e neach-cuideachaidh a th ’ann a dh’ innse dhut ma tha thu sgìth agus a chuireas nad chuimhne ma tha thu air rudeigin a dhìochuimhneachadh.

Fìor, gun a bhith ga chleachdadh gu cunbhalach, chan eil e coltach gum bi mion-sgrùdadh statach a ’dèanamh leasachadh nas sìmplidhe gu mòr. Às deidh na h-uile, chan eil a phrìomh bhuannachd airson leasaiche a 'laighe cho mòr ann a bhith a' lorg earrannan còd iom-fhillte agus connspaideach, ach anns an lorg tràth aca. Aontaich gu bheil a bhith a’ faighinn a-mach duilgheadas às deidh na deasachaidhean a bhith air an cur airson deuchainn chan ann a-mhàin mì-thlachdmhor, ach cuideachd a ’toirt ùine mhòr. Bidh mion-sgrùdadh statach, nuair a thèid a chleachdadh gu cunbhalach, a’ coimhead air gach atharrachadh gu dìreach air a’ choimpiutair agad agus ag aithris air àiteachan amharasach fhad ‘s a tha thu ag obair air a’ chòd.

Agus mura h-eil thu fhèin no do cho-obraichean fhathast cinnteach an fhiach e an anailisiche a chuir an gnìomh, tha mi a’ moladh dhut a-nis tòiseachadh air an artaigil a leughadh "Adhbharan airson an anailisiche còd statach PVS-Studio a thoirt a-steach don phròiseas leasachaidhBidh e a’ dèiligeadh ri draghan àbhaisteach luchd-leasachaidh gun toir mion-sgrùdadh statach an ùine agus mar sin air adhart.

Mion-sgrùdadh statach - bho ro-ràdh gu amalachadh

Ma tha thu airson an artaigil seo a cho-roinn le luchd-èisteachd Beurla, cleachd an ceangal eadar-theangachaidh: Maxim Zvyagintsev. Mion-sgrùdadh Statach: Bho Tòiseachadh gu Amalachadh.

Source: www.habr.com

Cuir beachd ann