Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Soovime jagada kogemusi SonarQube'i platvormi rakendamisest pidevaks koodikvaliteedi analüüsiks ja mõõtmiseks DPO süsteemi arendusprotsessides (täiendamine deponeerimise ja kliirimise arvestussüsteemis „Alameda”) Rahvuslikus Arveldusdepoos.

Rahvuslik Arveldusdepoo (Moskva börsi kontsern) on üks finantsinfrastruktuuri keskseid ettevõtteid, mis hoiab ja arvestab Venemaa ja välismaiste emitterite väärtpabereid üle 50 triljoni rubla. Suurenev tehingute maht süsteemis ning funktsionaalsuse pidev suurendamine nõuavad süsteemide lähtekoodi kvaliteedi kõrge taseme säilitamist. Üks vahend selle eesmärgi saavutamiseks on staatiline analüsaator SonarQube. Selles artiklis kirjeldame edukat SonarQube'i staatilise analüsaatori sujuvat integreerimist meie osakonna olemasolevatesse arenduse protsessidesse.

Lühidalt osakonnast

Meie pädevusse kuuluvad järgmised moodulid: NRD klientidele maksed, elektrooniline dokumendihaldus (EDO), kauplemisregisteri sõnumite töötlemine (ülevahetuste registreerimine), elektroonilise koostöö kanalid klientide ja NRDi vahel ning palju muud. Ühesõnaga, suur hulk tööd tehnilise poolega operatiivsete tegevuste osas. Töö toimub taotluste alusel. Operatiivide taotlusi töötlevad analüütikud: nad koguvad tellija nõuded ja esitavad meile oma nägemuse, kuidas see programmile paigutada. Edasi käib standardne skeem: koodi arendamine – testimine – katseperiood – koodi tarnimine tootmisettevõtte otse tellijale.

Miks just SonarQube?

See on meie osakonna esimene kogemus koodikvaliteedi kontrollimise platvormi rakendamisel – varem tegime seda käsitsi, tehes ainult koodikontrolle. Kuid kasvav töömaht nõuab selle protsessi automatiseerimist. Lisaks on meeskonnas ka kogenematuid töötajaid, kes ei ole täielikult tuttavad arenduse sisereeglitega ja kipuvad rohkem vigu tegema. Koodikvaliteedi kontrollimiseks otsustati rakendada staatiline analüsaator. Kuna SonarQube oli juba kasutusel mõnedes NRD süsteemides, ei pidanud kaua valima. Varem on kolleegid teiste osakondade juures kasutanud seda mikroteenuste koodi analüüsimiseks süsteemis „Alameda“ (NRD enda deposiitide ja kliiringu arvestuse süsteem), CFT-s (info süsteem raamatupidamise, bilansi ja kohustusliku ning sisereportingu koostamiseks) ning mõnedes teistes süsteemides. Katsed otsustasime alustada SonarQube'i tasuta versiooniga. Nii et liigume edasi meie juhtumiga.

Rakendamisprotsess

Meil on:

  • automaatne süsteemi koostamine TeamCity's;
  • protsess on seadistatud koodi üleslaadimiseks MergeRequestiga feature-haru master-harusse GitLabis (arendusprotsess vastavalt GitHub Flow'le);
  • SonarQube, mis on seadistatud koodi analüüsiks DPO süsteemi jaoks graafiku alusel.

Meie eesmärk: rakendada automaatset koodi analüüsi DPO CI/CD protsessidesse.

Peab seadistama: automaatse koodi kontrollimise protsessi staatilise analüsaatori abil iga MergeRequest’i puhul põhiharu.

Tähtis on see, et kui arendaja üleslaadib muudatused feature-haru, käivitatakse automaatne kontroll uute koodivigade olemasolu suhtes. Kui vigu ei leita, on muudatuste vastuvõtmine lubatud, vastasel juhul tuleb vead parandada. Juba algusetapis õnnestus meil tuvastada teatud arv vigu koodis. Süsteemil on väga paindlikud seadistused: seda saab konfigureerida nii, et see töötaks arendajate konkreetsete ülesannete jaoks, iga süsteemi ja programmeerimisstiili jaoks.

QualityGate seadistamine SonarQubes

QualityGate analüüs on asi, mille me interneti sügavustest välja kaevandasime. Alguses kasutasime keerulisemat ja mingil määral vale lähenemist. Esiteks skanneerisime kaks korda SonarQube'iga: skanneerisime feature-haru ja haru, kuhu plaanisime feature-haru sulandada, ning seejärel võrdlesime vigu. See meetod ei olnud stabiilne ja ei andnud alati õigeid tulemusi. Siis saime teada, et kahekordse skaneerimise asemel saab SonarQube'is seadistada lubatud vigade arvu piiri (QualityGate) ja analüüsida ainult seda haru, mille tõukad ja mille võrdled.

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Praegu kasutame endiselt üsna primitiivset koodi kontrolli. Tuleb märkida, et SonarQube ei ole ühilduv mõnede programmeerimiskeeltega, sealhulgas Delphiga. Praegu analüüsime meie süsteemis ainult PLSQL koodi.

See töötab nii:

  • Analüüsime oma projekti jaoks ainult PL/SQL koodi.
  • SonarQube'is on QualityGate seadistatud nii, et vigade arv ei suurene koos commit'iga.
  • Esimese skaneerimise ajal olid meil vead 229. Kui commit'i korral vigade arv suureneb, siis merge ei ole lubatud.
  • Järgmises etapis, kui vead on parandatud, saab QualityGate'i seadeid uuesti kohandada.
  • Samuti saab lisada uusi analüüsipunkte, näiteks koodi katvuse testide jms.

Tööprotsess:

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Skripti kommentaarides on näha, et feature-haru veanumber ei ole suurenenud. See tähendab, et kõik on korras.

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Merge nupp muutub kergesti kättevõetavaks.

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Skripti kommentaarides on näha, et feature-haru veanumber on ületanud lubatud arvu. See tähendab, et kõik on halvasti.

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Merge nupp on punane. Praeguseks ei ole keelatud teha muutusi vigase koodi tõttu, kuid see sõltub vastutava arendaja äranägemisest. Edaspidi võib sellised commit'id põhiharu juurde lisamise keelata.

Kuidas me rakendasime SonarQube'i ja mõistsime selle suurt potentsiaali

Iseseisev töö vigadega

Seejärel tuleb kontrollida kõiki süsteemi tuvastatud vigu, kuna SonarQube analüüsib vastavalt oma rangetele standarditele. See, mida ta veaks peab, ei pruugi meie koodis tegelikult vea olema. Seetõttu tuleb kontrollida ja märkida, kas see on tõeliselt viga või kas sellele ei ole meie tingimustes vaja parandusi. Nii vähendame veate arvu. Aja jooksul õpib süsteem neid nüansse mõistma.

Kuhu me jõudnud oleme

Meie eesmärk oli mõista, kas meie jaoks on mõistlik koodi kontrolli automatiseerimist tõlkida. Ja tulemus oli ootuspärane. SonarQube võimaldab meil töötada vajalike keeltes, teeb üsna täpset analüüsi ja omab potentsiaali arendajate soovitustest õppida. Üldiselt oleme meie esimese SonarQube'i kasutuskogemusega rahul ja plaanime selles suunas edasi areneda. Ootame, et tulevikus suudame koodi kontrollimise peale rohkem aega ja vaeva kokku hoida ning muuta selle kvaliteet paremaks, vähendades inimfaktorit. Võib-olla avastame protsessi käigus platvormi puudusi või tõestame vastupidi veel kord, et see on äge asi suure potentsiaaliga.

Selles ülevaateartiklis rääkisime meie tutvusest SonarQube'i staatilise analüsaatoriga. Kui teil on küsimusi, siis kirjutage palun kommentaarides. Kui see teema huvitab teid, siis uus avaldus, milles me juba täpsemalt kirjeldame, kuidas kõike õigesti seadistada ja koodi kirjutada, et sarnast kontrolli teha.

Teksti autor: atanya

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster