Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

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.

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

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:

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

Skripta komentāros var redzēt, ka kļūdu skaits funkciju zarā nav pieaudzis. Tātad viss ir kārtībā.

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

Kļūst pieejama poga Sapludināt.

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

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.

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

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ē.

Kā mēs ieviesām SonarQube un realizējām tās lielo potenciālu

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: atanya

Avots: www.habr.com

Pievieno komentāru