MÄs vÄlamies dalÄ«ties pieredzÄ par SonarQube koda kvalitÄtes nepÄrtrauktas analÄ«zes un mÄrÄ«Å”anas platformas ievieÅ”anu esoÅ”ajos NacionÄlÄ norÄÄ·inu depozitÄrija DPO sistÄmas (papildinÄjums Alameda depozitÄrija un klÄ«ringa uzskaites sistÄmai) izstrÄdes procesos.
NacionÄlais norÄÄ·inu depozitÄrijs (Maskavas biržas uzÅÄmumu grupa) ir viens no galvenajiem finanÅ”u infrastruktÅ«ras uzÅÄmumiem, kas glabÄ un reÄ£istrÄ Krievijas un Ärvalstu emitentu vÄrtspapÄ«rus vairÄk nekÄ 50 triljonu rubļu vÄrtÄ«bÄ. PieaugoÅ”ais sistÄmas veikto operÄciju apjoms, kÄ arÄ« nepÄrtraukts funkcionalitÄtes pieaugums prasa uzturÄt sistÄmu avota koda augsto kvalitÄti. Viens no instrumentiem Ŕī mÄrÄ·a sasniegÅ”anai ir SonarQube statiskais analizators. Å ajÄ rakstÄ mÄs aprakstÄm veiksmÄ«go pieredzi, nevainojami ievieÅ”ot SonarQube statisko analizatoru esoÅ”ajos mÅ«su nodaļas attÄ«stÄ«bas procesos.
ÄŖsi par nodaļu
MÅ«su kompetencÄ ietilpst sekojoÅ”i moduļi: maksÄjumi NSD klientiem, elektroniskÄ dokumentu pÄrvaldÄ«ba (EDF), darÄ«jumu reÄ£istra ziÅojumu apstrÄde (Ärpusbiržas darÄ«jumu reÄ£istrÄcija), elektroniskie mijiedarbÄ«bas kanÄli starp klientiem un NSD un daudz kas cits. KopumÄ liels darba slÄnis operÄciju tehniskajÄ pusÄ. StrÄdÄjam uz pieteikumu pamata. Balsu skaitÄ«tÄju pieteikumus apstrÄdÄ analÄ«tiÄ·i: viÅi apkopo klientu prasÄ«bas un sniedz mums savu redzÄjumu par to, kÄ tam vajadzÄtu iekļauties programmÄ. TÄlÄk standarta shÄma: koda izstrÄde - testÄÅ”ana - izmÄÄ£inÄjuma darbÄ«ba - koda piegÄde uz ražoÅ”anas Ä·Ädi tieÅ”ajam klientam.
KÄpÄc SonarQube?
Å Ä« ir mÅ«su nodaļas pirmÄ pieredze koda kvalitÄtes kontroles platformas ievieÅ”anÄ ā iepriekÅ” to darÄ«jÄm manuÄli, tikai koda pÄrskatÄ«Å”anu. TaÄu pieaugoÅ”ais darba apjoms prasa Ŕī procesa automatizÄciju. TurklÄt komandÄ ir arÄ« nepieredzÄjuÅ”i darbinieki, kuri lÄ«dz galam nepÄrzina iekÅ”ÄjÄs attÄ«stÄ«bas noteikumus un mÄdz vairÄk kļūdÄ«ties. Lai kontrolÄtu koda kvalitÄti, tika nolemts ieviest statisko analizatoru. TÄ kÄ SonarQube jau ir izmantots dažÄs NSD sistÄmÄs, nebija vajadzÄ«gs ilgs laiks, lai izvÄlÄtos. IepriekÅ” kolÄÄ£i no citÄm nodaļÄm to izmantoja, lai analizÄtu mikropakalpojumu kodu sistÄmÄ Alameda (paÅ”a NSD depozitÄrija un klÄ«ringa uzskaites sistÄma), CFT (informÄcijas sistÄma grÄmatvedÄ«bai, bilancei, obligÄto un iekÅ”Äjo pÄrskatu sagatavoÅ”anai), dažÄs citÄs sistÄmas. Eksperimentu nolÅ«kos mÄs nolÄmÄm sÄkt ar SonarQube bezmaksas versiju. TÄtad, pÄriesim pie mÅ«su lietas.
ÄŖstenoÅ”anas process
Mums ir:
- automÄtiska sistÄmas montÄža TeamCity;
- iestatiet koda augÅ”upielÄdes procesu, izmantojot MergeRequest no lÄ«dzekļa filiÄles uz galveno filiÄli GitLab (izstrÄdes process saskaÅÄ ar GitHub Flow);
- SonarQube ir konfigurÄts, lai pÄc grafika analizÄtu DPO sistÄmas kodu.
MÅ«su mÄrÄ·is: ieviest automÄtisko kodu analÄ«zi AVE CI/CD procesos.
NepiecieÅ”ams pielÄgot: koda automÄtiskas pÄrbaudes process, ko veic statiskais analizators ar katru MergeRequest galvenajam atzaram.
Tie. mÄrÄ·a attÄls ir Å”Äds: tiklÄ«dz izstrÄdÄtÄjs augÅ”upielÄdÄ izmaiÅas funkciju zarÄ, sÄkas automÄtiska jaunu kļūdu pÄrbaude kodÄ. Ja kļūdu nav, tad izmaiÅas atļauts pieÅemt, pretÄjÄ gadÄ«jumÄ kļūdas bÅ«s jÄlabo. Jau sÄkotnÄjÄ posmÄ mÄs varÄjÄm identificÄt noteiktu skaitu kļūdu kodÄ. SistÄmai ir ļoti elastÄ«gi iestatÄ«jumi: to var konfigurÄt tÄ, lai tÄ darbotos konkrÄtiem izstrÄdÄtÄju uzdevumiem, katrai sistÄmai un programmÄÅ”anas stilam.
QualityGate konfigurÄÅ”ana programmÄ SonarQube
QualityGate analÄ«ze ir lieta, ko mÄs lasÄm internetÄ. SÄkotnÄji mÄs izmantojÄm citu pieeju, sarežģītÄku un kaut kÄ ne visai korektu. Vispirms mÄs veicÄm skenÄÅ”anu, izmantojot SonarQube divas reizes: skenÄjÄm lÄ«dzekļa atzaru un atzaru, kurÄ plÄnojÄm sapludinÄt lÄ«dzekļa atzaru, un pÄc tam salÄ«dzinÄjÄm kļūdu skaitu. Å Ä« metode nebija stabila un ne vienmÄr deva pareizu rezultÄtu. Un tad mÄs uzzinÄjÄm, ka tÄ vietÄ, lai divreiz palaistu SonarQube, varat iestatÄ«t pieļaujamo kļūdu skaita ierobežojumu (QualityGate) un analizÄt tikai to atzaru, kuru augÅ”upielÄdÄjat un salÄ«dzinÄt.
PagaidÄm mÄs joprojÄm izmantojam diezgan primitÄ«vu koda pÄrbaudi. JÄatzÄ«mÄ, ka SonarQube nav saderÄ«gs ar dažÄm programmÄÅ”anas valodÄm, tostarp Delphi. PaÅ”laik mÅ«su sistÄmai mÄs analizÄjam tikai PLSql kodu.
Tas darbojas Å”Ädi:
- MÄs analizÄjam tikai mÅ«su projekta PL/SQL kodu.
- QualityGate ir konfigurÄts SonarQube tÄ, lai kļūdu skaits nepalielinÄtos, veicot apÅemÅ”anos.
- PirmajÄ piegÄjienÄ kļūdu skaits bija 229. Ja commit laikÄ ir vairÄk kļūdu, tad sapludinÄÅ”ana nav atļauta.
- TurklÄt, ja tiks labotas kļūdas, bÅ«s iespÄjams pÄrkonfigurÄt QualityGate.
- Varat arÄ« pievienot jaunus analÄ«zes vienumus, piemÄram, koda pÄrklÄjumu ar testiem utt.
Darba shÄma:
Skripta komentÄros var redzÄt, ka kļūdu skaits funkciju zarÄ nav pieaudzis. TÄtad viss ir kÄrtÄ«bÄ.
Kļūst pieejama poga SapludinÄt.
Skripta komentÄros var redzÄt, ka funkciju zarÄ kļūdu skaits ir kļuvis vairÄk nekÄ atļauts. TÄtad viss ir SLIKTI.
Poga SapludinÄt ir sarkana. Å obrÄ«d nepastÄv aizliegums augÅ”upielÄdÄt izmaiÅas kļūdainÄ kodÄ, taÄu tas tiek darÄ«ts pÄc atbildÄ«gÄ izstrÄdÄtÄja ieskatiem. NÄkotnÄ jÅ«s varat novÄrst Å”Ädu saistÄ«bu veikÅ”anu galvenajÄ filiÄlÄ.
PaÅ”nodarboÅ”anÄs ar kļūdÄm
TÄlÄk jums ir jÄpÄrbauda visas sistÄmas atklÄtÄs kļūdas, jo SonarQube analizÄ saskaÅÄ ar saviem stingriem standartiem. Tas, ko viÅÅ” uzskata par kļūdu, var nebÅ«t mÅ«su kodÄ. TÄpÄc jums ir jÄpÄrbauda un jÄatzÄ«mÄ, vai tÄ patieÅ”Äm ir kļūda, vai arÄ« mÅ«su apstÄkļos nav nepiecieÅ”ams rediÄ£Ät. TÄdÄjÄdi mÄs samazinÄm kļūdu skaitu. Laika gaitÄ sistÄma iemÄcÄ«sies saprast Ŕīs nianses.
Pie kÄ esam nonÄkuÅ”i
MÅ«su mÄrÄ·is bija saprast, vai mÅ«su gadÄ«jumÄ ir lietderÄ«gi koda verifikÄciju pÄrnest uz automatizÄciju. Un rezultÄts attaisnoja cerÄ«bas. SonarQube ļauj mums strÄdÄt ar mums vajadzÄ«gajÄm valodÄm, veic diezgan kompetentu analÄ«zi un var mÄcÄ«ties no izstrÄdÄtÄju padomiem. KopumÄ esam gandarÄ«ti par savu pirmo pieredzi ar SonarQube un plÄnojam attÄ«stÄ«ties Å”ajÄ virzienÄ. MÄs ceram, ka nÄkotnÄ mÄs varÄsim ietaupÄ«t vairÄk laika un pūļu koda pÄrskatÄ«Å”anai un padarÄ«t to labÄku, novÄrÅ”ot cilvÄcisko faktoru. VarbÅ«t Å”ajÄ procesÄ atklÄsim platformas nepilnÄ«bas vai, gluži otrÄdi, kÄrtÄjo reizi pÄrliecinÄsimies, ka Ŕī ir forÅ”a lieta ar lielu potenciÄlu.
Å ajÄ pÄrskata rakstÄ mÄs runÄjÄm par mÅ«su iepazÄ«Å”anos ar SonarQube statisko analizatoru. Ja jums ir jautÄjumi, lÅ«dzu, rakstiet komentÄros. Ja jÅ«s interesÄ Å”Ä« tÄma, jaunajÄ publikÄcijÄ mÄs sÄ«kÄk aprakstÄ«sim, kÄ visu pareizi iestatÄ«t un ierakstÄ«t kodu, lai veiktu Å”Ädu pÄrbaudi.
Teksta autors:
Avots: www.habr.com