Conas anailísí cód statach a chur i bhfeidhm i dtionscadal oidhreachta gan an fhoireann a dhíspreagadh

Conas anailísí cód statach a chur i bhfeidhm i dtionscadal oidhreachta gan an fhoireann a dhíspreagadh
Tá sé éasca anailíseoir cód statach a thriail. Ach chun é a chur i bhfeidhm, go háirithe i bhforbairt tionscadal mór d'aois, éilíonn scil. Má dhéantar go mícheart é, féadfaidh an t-anailíseoir obair a chur leis, an fhorbairt a mhoilliú agus an fhoireann a dhíspreagadh. Labhraímis go hachomair faoi conas tabhairt faoi chomhtháthú na hanailíse statach sa phróiseas forbartha i gceart agus tosú á úsáid mar chuid de CI/CD.

Réamhrá

Le déanaí tarraingíodh m’aird ar an bhfoilseachán “Tús a chur le hAnailís Statach Gan an Fhoireann a Shárú". Ar thaobh amháin, tá sé seo le alt maith is fiú a fháil acquainted leis. Ar an láimh eile, feictear dom nach bhfuil sé fós ar fáil freagra iomlán ar conas a painlessly chur i bhfeidhm anailís statach i dtionscadal le go leor de chód oidhreachta. Deir an t-alt go Is féidir leat glacadh le fiachas teicniúil agus oibriú ach amháin ar chód nua, ach níl aon fhreagra ar cad atá le déanamh leis an bhfiach teicniúil seo níos déanaí.

Tugann ár bhfoireann PVS-Studio a dearcadh ar an ábhar seo. Breathnaímid ar an gcaoi a n-eascraíonn an fhadhb a bhaineann le hanailíseoir cód statach a chur i bhfeidhm ar an gcéad dul síos, conas an fhadhb seo a shárú, agus conas fiacha teicniúla a dhíchur de réir a chéile gan phian.

Saincheisteanna

De ghnáth ní bhíonn sé deacair a sheoladh agus a fheiceáil conas a oibríonn anailísí statach [1]. Seans go bhfeicfidh tú earráidí suimiúla nó fiú leochaileachtaí féideartha scanrúla sa chód. Is féidir leat rud éigin a shocrú fiú, ach ansin tugann go leor ríomhchláraitheoirí suas.

Táirgeann gach anailísí statacha dearfacha bréagacha. Is gné é seo den mhodheolaíocht anailíse cód statach, agus ní féidir aon rud a dhéanamh faoi. Go ginearálta, is fadhb í seo nach féidir a réiteach, mar atá deimhnithe ag teoirim Rice [2]. Ní chuideoidh halgartaim meaisínfhoghlama ach an oiread [3]. Fiú mura féidir le duine a rá i gcónaí an bhfuil an cód seo nó an cód sin mícheart, níor cheart duit a bheith ag súil leis seo ón gclár :).

Ní fadhb iad dearfacha bréagacha má tá an anailísí statach cumraithe cheana féin:

  • Leagann rialacha nach mbaineann le hábhar do dhaoine faoi mhíchumas;
  • Díchumasaíodh roinnt diagnóisic nach mbaineann le hábhar;
  • Má tá muid ag caint faoi C nó C++, ansin tá macraí marcáilte suas go bhfuil tógálacha sonracha a chuireann faoi deara rabhaidh useless le feiceáil i ngach áit a bhfuil a leithéid de macraí a úsáid;
  • Tá feidhmeanna dílse marcáilte a dhéanann gníomhartha cosúil le feidhmeanna córais (a analóg féin memcpy prionta) [4];
  • Díchumasaítear dearfacha bréagacha go sonrach trí nótaí tráchta a úsáid;
  • Agus mar sin de.

Sa chás seo, is féidir linn a bheith ag súil le ráta dearfach íseal bréagach de thart ar 10-15% [5]. I bhfocail eile, léireoidh 9 as 10 rabhadh anailíseora fíorfhadhb sa chód, nó ar a laghad “cód a bhfuil boladh láidir air.” Aontaigh, tá an cás seo thar a bheith taitneamhach, agus is fíor-chara don ríomhchláraitheoir an anailíseoir.

Conas anailísí cód statach a chur i bhfeidhm i dtionscadal oidhreachta gan an fhoireann a dhíspreagadh
I ndáiríre, i dtionscadal mór, beidh an pictiúr tosaigh go hiomlán difriúil. Eisíonn an anailíseoir na céadta nó na mílte rabhadh maidir le cód oidhreachta. Ní féidir a thuiscint go tapa cé acu de na rabhaidh seo atá ábhartha agus nach bhfuil. Tá sé neamhréasúnach suí síos agus tosú ag déileáil leis na rabhaidh seo go léir, ós rud é go stopfaidh an phríomhobair sa chás seo ar feadh laethanta nó seachtainí. Go hiondúil, ní féidir le foireann cás den sórt sin a íoc. Beidh líon mór difrí ann freisin a mhilleann stair an athraithe. Agus is cinnte go mbeidh clóscríobh agus earráidí nua mar thoradh ar olleagarthóireacht thapa ar an oiread sin blúirí sa chód.

Agus is tábhachtaí fós, is beag ciall a dhéanann a leithéid de éacht sa troid i gcoinne rabhaidh. Aontaigh go bhfuil an chuid is mó de na hearráidí criticiúla ceartaithe cheana féin ó tharla go bhfuil an tionscadal ar siúl go rathúil le blianta fada. Sea, bhí na réitigh seo an-chostasach, b'éigean iad a dhífhabhtú, fuair siad aiseolas diúltach ó úsáideoirí faoi fhabhtanna, agus mar sin de. Chabhródh anailísí statach le go leor de na hearráidí seo a shocrú ag an gcéim códaithe, go tapa agus go saor. Ach i láthair na huaire, ar bhealach amháin nó eile, socraíodh na hearráidí seo, agus is é an t-anailíseoir a bhraitheann go príomha earráidí neamhchriticiúil sa seanchód. Ní féidir an cód seo a úsáid, d’fhéadfaí é a úsáid go hannamh, agus b’fhéidir nach mbeadh iarmhairtí suntasacha mar thoradh ar earráid ann. B'fhéidir go bhfuil an dath mícheart ar scáth an chnaipe, ach ní chuireann sé seo isteach ar úsáid an táirge ag aon duine.

Ar ndóigh, is botúin fós iad fiú mionbhotúin. Agus uaireanta is féidir le botún fíor-leochaileacht a cheilt. Mar sin féin, is smaoineamh amhrasach é éirí as gach rud agus laethanta / seachtainí a chaitheamh ag déileáil le lochtanna ar ar éigean a léiríonn iad féin.

Féachann ríomhchláraitheoirí, féach, féach ar na rabhaidh seo go léir faoin seanchód oibre ... Agus is dóigh leo: is féidir linn a dhéanamh gan anailís statach. Scríobhaimis feidhmiúlacht úsáideach nua.

Ar a mbealach féin, tá siad ceart. Is éard a dhéanann siad ná go gcaithfidh siad fáil réidh leis na rabhaidh seo go léir ar dtús. Is ansin amháin a bheidh siad in ann leas a bhaint as úsáid rialta an anailísí cóid. Seachas sin, báthfaidh rabhaidh nua go simplí i sean-cinn, agus ní thabharfaidh aon duine aird orthu.

Is é seo an analaí céanna agus atá le rabhaidh tiomsaitheora. Ní gan chúis a mholann siad líon na rabhaidh tiomsaitheora a choinneáil ag 0. Má tá 1000 rabhadh ann, ansin nuair a bhíonn 1001 ann, ní thabharfaidh aon duine aird air, agus níl sé soiléir cén áit ar cheart an rabhadh is nuaí seo a chuardach.

Conas anailísí cód statach a chur i bhfeidhm i dtionscadal oidhreachta gan an fhoireann a dhíspreagadh
Is é an rud is measa sa scéal seo má chuireann duine ó thuas iallach ort ag an nóiméad seo anailís cód statach a úsáid. Ní dhéanfaidh sé seo ach an fhoireann a dhíspreagadh, ós rud é óna dtuairim féin beidh castacht mhaorlathach bhreise ann nach gcuirfear isteach air ach amháin. Ní bhreathnóidh aon duine ar thuarascálacha an anailísí, agus ní bhainfear úsáid as ach “ar pháipéar”. Iad siúd. Go foirmiúil, tá anailís ionsuite i bpróiseas DevOps, ach i ndáiríre ní bhaineann sé seo le haon duine leas. Chuala muid mionscéalta ó lucht freastail na comhdhála ag bothanna. Is féidir le taithí den sórt sin ríomhchláraitheoirí a dhíspreagadh ó uirlisí anailíse statacha a úsáid ar feadh i bhfad, más rud é nach go deo.

Fiachas teicniúil a chur i bhfeidhm agus a dhíchur

Go deimhin, níl aon rud deacair nó scary faoi anailís statach a thabhairt isteach fiú i dtionscadal mór d'aois.

CI / CD

Thairis sin, is féidir an anailíseoir a dhéanamh láithreach mar chuid den phróiseas forbartha leanúnach. Mar shampla, tá fóntais sa dáileadh PVS-Studio chun an tuarascáil a fheiceáil san fhormáid atá uait, agus fógraí d'fhorbróirí a scríobh codanna fadhbacha den chód. Dóibh siúd a bhfuil níos mó suim acu i PVS-Studio ó chórais CI/CD a sheoladh, molaim duit eolas a chur ar na sonraí comhfhreagracha. alt doiciméadú agus sraith alt:

Ach fillfimid ar cheist líon mór rudaí dearfacha bréagacha ag na chéad chéimeanna d'uirlisí anailíse cód a chur i bhfeidhm.

Fiachas teicniúil atá ann cheana a shocrú agus déileáil le rabhaidh nua

Ceadaíonn anailíseoirí statacha tráchtála nua-aimseartha duit staidéar a dhéanamh ar rabhaidh nua amháin atá le feiceáil i gcód nua nó athraithe. Athraíonn cur i bhfeidhm na meicníochta seo, ach tá an bunúsach mar an gcéanna. San anailíseoir statach PVS-Studio, cuirtear an fheidhmiúlacht seo i bhfeidhm mar seo a leanas.

Chun tús a chur go tapa le hanailís statach a úsáid, molaimid d’úsáideoirí PVS-Studio an mheicníocht a úsáid chun rabhaidh a chur faoi chois [6]. Seo a leanas an smaoineamh ginearálta. Sheol an t-úsáideoir an anailíseoir agus fuair sé go leor rabhaidh. Ós rud é go bhfuil tionscadal atá á fhorbairt le blianta fada beo, ag forbairt agus ag déanamh airgid, is dóichí nach mbeidh mórán rabhaidh sa tuarascáil a léiríonn lochtanna criticiúla. I bhfocail eile, tá fabhtanna criticiúla socraithe cheana féin bealach amháin nó bealach eile ag baint úsáide as modhanna níos costasaí nó a bhuíochas le haiseolas ó chustaiméirí. Dá réir sin, is féidir gach rud a aimsíonn an t-anailíseoir faoi láthair a mheas mar fhiach teicniúil, rud nach bhfuil praiticiúil iarracht a dhéanamh deireadh a chur láithreach.

Is féidir leat a rá le PVS-Studio na rabhaidh seo a mheas nach mbaineann le hábhar faoi láthair (sáigh fiachas teicniúil le haghaidh níos déanaí), agus ní thaispeánfaidh sé iad a thuilleadh. Cruthaíonn an anailíseoir comhad speisialta ina sábhálann sé faisnéis faoi earráidí nach bhfuil suimiúil fós. Agus anois ní eiseoidh PVS-Studio rabhaidh ach le haghaidh cód nua nó athraithe. Thairis sin, cuirtear seo go léir i bhfeidhm go cliste. Más rud é, mar shampla, go gcuirtear líne folamh le tús an chomhaid cód foinse, ansin tuigeann an anailísí, i ndáiríre, nach bhfuil aon rud athraithe, agus leanfaidh sé de bheith ciúin. Is féidir an comhad marcála seo a chur isteach i gcóras rialaithe leagain. Tá an comhad mór, ach ní fadhb é seo, mar níl aon phointe ann é a stóráil go minic.

Anois feicfidh gach ríomhchláraitheoir rabhaidh a bhaineann le cód nua nó athraithe amháin. Mar sin, is féidir leat tosú ag baint úsáide as an anailíseoir, mar a deir siad, ón lá dár gcionn. Agus is féidir leat filleadh ar fhiach teicniúil níos déanaí, agus earráidí a cheartú de réir a chéile agus an anailísí a chumrú.

Mar sin, tá an chéad fhadhb le cur i bhfeidhm an anailísí i dtionscadal mór d'aois réitithe. Anois déanaimis amach cad atá le déanamh le fiachas teicniúil.

Ceartúcháin agus athfhachtóirí fabhtanna

Is é an rud is simplí agus is nádúrtha ná roinnt ama a chur ar leataobh chun anailís a dhéanamh ar rabhaidh anailísí atá faoi chois go mór agus déileáil leo de réir a chéile. Áit éigin ba chóir duit earráidí sa chód a shocrú, áit éigin ba cheart duit athfhachtóir a chur in iúl don anailísí nach bhfuil fadhb leis an gcód. Sampla simplí:

if (a = b)

Déanann formhór na dtiomsaitheoirí agus na n-anailíseoirí C++ gearán faoi chód dá leithéid, toisc go bhfuil dóchúlacht ard ann gur theastaigh uathu scríobh (a == b). Ach tá comhaontú unspoken ann, agus de ghnáth tugtar faoi deara sa doiciméadú seo, má tá lúibíní breise ann, ansin meastar gur scríobh an ríomhchláraitheoir cód den sórt sin d'aon ghnó, agus níl aon ghá le mionnú. Mar shampla, sa doiciméadú PVS-Studio le haghaidh diagnóisic V559 (CWE-481) tá sé scríofa go soiléir go measfar an líne seo a leanas a bheith ceart agus sábháilte:

if ((a = b))

Sampla eile. An ndéantar dearmad air sa chód C++ seo? bhriseadh nó nach bhfuil?

case A:
  foo();
case B:
  bar();
  break;

Eiseoidh an anailísí PVS-Studio rabhadh anseo V796 (CWE-484). B’fhéidir nach earráid é seo, agus sa chás sin ba cheart duit leid a thabhairt don pharsálaí tríd an tréith a chur leis [[fallthrough]] nó mar shampla __tréith__((fallthrough)):

case A:
  foo();
  [[fallthrough]];
case B:
  bar();
  break;

Is féidir a rá nach socraíonn athruithe cód den sórt sin an fabht. Sea, tá sé seo fíor, ach déanann sé dhá rud úsáideach. Ar an gcéad dul síos, faigheann tuarascáil an anailíseora fáil réidh le dearfacha bréagacha. Ar an dara dul síos, éiríonn an cód níos intuigthe do na daoine a bhfuil baint acu lena chothabháil. Agus tá sé seo an-tábhachtach! Ar an ábhar seo amháin, is fiú mionathruithe a dhéanamh chun an cód a dhéanamh níos soiléire agus níos éasca le cothabháil. Ós rud é nach dtuigeann an t-anailíseoir an bhfuil gá le “sos” nó nach bhfuil, ní bheidh sé soiléir do chomh-ríomhchláraitheoirí freisin.

Chomh maith le ceartúcháin agus athfhachtóirí fabhtanna, is féidir leat rabhaidh anailíseora atá bréagach ar ndóigh a chosc go sonrach. Is féidir roinnt diagnóisic nach mbaineann le hábhar a dhíchumasú. Mar shampla, is dóigh le duine nach bhfuil aon phointe ag rabhaidh V550 faoi ​​luachanna snámhphointe/dúbailte a chur i gcomparáid. Agus rangaíonn cuid acu iad mar thábhachtach agus ar fiú staidéar a dhéanamh orthu [7]. Cé na rabhaidh a mheastar a bheith ábhartha agus cé na cinn nach bhfuil faoi réir ag an bhfoireann forbartha cinneadh a dhéanamh.

Tá bealaí eile ann chun foláirimh bhréagacha a chosc. Mar shampla, luadh macramharcáil níos luaithe. Déantar cur síos níos mine ar seo go léir sna doiciméid. Is é an rud is tábhachtaí ná a thuiscint má théann tú chuige de réir a chéile agus go córasach ag obair le dearfacha bréagacha, nach bhfuil aon rud cearr leo. Imíonn formhór mór na rabhaidh uninteresting tar éis cumraíochta, agus ní fhanann ach áiteanna a dteastaíonn staidéar cúramach orthu agus roinnt athruithe sa chód.

Chomh maith leis sin, cabhraímid i gcónaí lenár gcliaint PVS-Studio a bhunú má thagann aon deacrachtaí chun cinn. Ina theannta sin, bhí cásanna ann nuair a chuireamar deireadh le rabhaidh bhréagacha agus nuair a cheartaíodh earráidí [8]. Ar eagla na heagla, chinn mé a lua go bhfuil an rogha seo le haghaidh comhar leathnaithe indéanta freisin :).

Modh ratchet

Tá cur chuige suimiúil eile ann chun cáilíocht an chóid a fheabhsú de réir a chéile trí rabhadh an anailíseora statach a dhíchur. Is é an bun líne nach féidir ach líon na rabhadh a laghdú.

Conas anailísí cód statach a chur i bhfeidhm i dtionscadal oidhreachta gan an fhoireann a dhíspreagadh

Taifeadtar líon na rabhadh arna n-eisiúint ag an anailísí statach. Tá geata Cáilíochta cumraithe sa chaoi is gur féidir leat anois dul isteach ach cód nach bhfuil méadú ar líon na n-oibríochtaí. Mar thoradh air sin, tosaíonn an próiseas chun líon na n-aláram a laghdú de réir a chéile tríd an anailísí a choigeartú agus earráidí a cheartú.

Fiú má tá duine ag iarraidh beagán a cheat agus go gcinnfidh sé pas a fháil sa gheata cáilíochta ní trí rabhaidh a dhíchur ina chód nua, ach trí fheabhas a chur ar an seanchód tríú páirtí, níl sé seo scanrúil. Mar an gcéanna, rothlaíonn an ratchet i dtreo amháin, agus de réir a chéile laghdóidh líon na lochtanna. Fiú mura bhfuil duine ag iarraidh a chuid lochtanna nua féin a shocrú, beidh air fós rud éigin a fheabhsú sa chód comharsanachta. Ag pointe éigin, cuirtear deireadh leis na bealaí éasca chun líon na rabhaidh a laghdú, agus tagann pointe nuair a shocrófar fíor-fhabhtanna.

Déantar cur síos níos mine ar an modheolaíocht seo in alt an-suimiúil le Ivan Ponomarev "Anailís statach a chur i bhfeidhm sa phróiseas, seachas é a úsáid chun fabhtanna a aimsiú", rud a molaim léamh d'aon duine ar spéis leo cáilíocht an chóid a fheabhsú.

Tá tuairisc ag údar an ailt ar an ábhar seo freisin: “Anailís statach leanúnach".

Conclúid

Tá súil agam, tar éis an ailt seo, go nglacfaidh léitheoirí níos mó le huirlisí anailíse statacha agus go mbeidh siad ag iarraidh iad a chur i bhfeidhm sa phróiseas forbartha. Má tá aon cheist agat, táimid réidh i gcónaí comhairle úsáideoirí ár n-anailísí statach PVS-Studio agus cuidíonn siad lena chur i bhfeidhm.

Tá amhras tipiciúil eile ann maidir le cibé an féidir anailís statach a bheith áisiúil agus úsáideach i ndáiríre. Rinne mé iarracht deireadh a chur leis an gcuid is mó de na hamhrais sin san fhoilseachán “Cúiseanna chun an anailísí cód statach PVS-Studio a thabhairt isteach sa phróiseas forbartha” [9].

Go raibh maith agat as do aire agus teacht скачать agus bain triail as an anailíseoir PVS-Studio.

Naisc bhreise

  1. Andrey Karpov. Conas is féidir liom rabhaidh suimiúla a fheiceáil go tapa a tháirgeann an anailísí PVS-Studio le haghaidh cód C agus C ++?
  2. Vicipéid. Teoirim Rís.
  3. Andrey Karpov, Victoria Khanieva. Meaisín-fhoghlaim a úsáid in anailís statach ar chód foinse an chláir.
  4. PVS-Stiúideo. Doiciméadúchán. Socruithe diagnóiseacha breise.
  5. Andrey Karpov. Tréithe an anailísí PVS-Studio ag baint úsáide as an sampla de Lárleabharlanna EFL, 10-15% dearfach bréagach.
  6. PVS-Stiúideo. Doiciméadúchán. Sárú mais teachtaireachtaí anailíseora.
  7. Ivan Andryashin. Maidir leis an gcaoi a ndearnamar tástáil ar anailís statach ar ár dtionscadal d'insamhlóir oideachasúil ar mháinliacht X-ghathach ionshoithíoch.
  8. Pavel Eremeev, Svyatoslav Razmyslov. Mar a d'fheabhsaigh an fhoireann PVS-Studio cód Unreal Engine.
  9. Andrey Karpov. Cúiseanna leis an anailísí cód statach PVS-Studio a thabhairt isteach sa phróiseas forbartha.

Conas anailísí cód statach a chur i bhfeidhm i dtionscadal oidhreachta gan an fhoireann a dhíspreagadh

Más mian leat an t-alt seo a roinnt le lucht féachana Béarla, bain úsáid as an nasc aistriúcháin: Andrey Karpov. Conas anailísí cód statach a thabhairt isteach i dtionscadal oidhreachta agus gan an fhoireann a dhíspreagadh.

Foinse: will.com

Add a comment