Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Norėtume pasidalinti savo patirtimi diegiant nuolatinės SonarQube kodo kokybės analizės ir matavimo platformą į esamus Nacionalinio atsiskaitymų depozitoriumo DAP sistemos (Alameda depozitoriumo ir kliringo apskaitos sistemos priedas) kūrimo procesus.

Nacionalinis atsiskaitymų depozitoriumas (Maskvos biržos įmonių grupė) yra viena iš pagrindinių finansinės infrastruktūros įmonių, kuri saugo ir registruoja Rusijos ir užsienio emitentų vertybinius popierius, kurių vertė viršija 50 trilijonų rublių. Didėjantis sistemos atliekamų operacijų apimtys ir nuolatinis funkcionalumo didėjimas reikalauja išlaikyti aukštą sistemų pirminio kodo kokybę. Viena iš priemonių šiam tikslui pasiekti yra „SonarQube“ statinis analizatorius. Šiame straipsnyje aprašome sėkmingą patirtį sklandžiai diegiant SonarQube statinį analizatorių esamuose mūsų skyriaus kūrimo procesuose.

Trumpai apie skyrių

Mūsų kompetencija apima šiuos modulius: mokėjimai NSD klientams, elektroninis dokumentų valdymas (EDF), sandorių duomenų saugyklų pranešimų apdorojimas (ne biržos sandorių registravimas), elektroniniai klientų ir NSD sąveikos kanalai ir daug daugiau. Apskritai, didelis darbo sluoksnis techninėje operatyvinės veiklos pusėje. Dirbame paraiškų pagrindu. Balsininkų prašymus apdoroja analitikai: jie surenka klientų reikalavimus ir pateikia mums savo viziją, kaip tai turėtų tilpti į programą. Be to, standartinė schema: kodo kūrimas - testavimas - bandomasis veikimas - kodo pristatymas į gamybinę grandinę tiesioginiam klientui.

Kodėl „SonarQube“?

Tai pirmoji mūsų skyriaus patirtis diegiant kodo kokybės kontrolės platformą – anksčiau tai darydavome rankiniu būdu, tik kodo peržiūra. Tačiau didėjantis darbų apimtys reikalauja automatizuoti šį procesą. Be to, kolektyve yra ir nepatyrusių darbuotojų, kurie nėra iki galo susipažinę su vidaus plėtros reglamentais ir linkę daryti daugiau klaidų. Norint kontroliuoti kodo kokybę, buvo nuspręsta įdiegti statinį analizatorių. Kadangi „SonarQube“ jau buvo naudojamas kai kuriose NSD sistemose, rinktis nereikėjo ilgai. Anksčiau kolegos iš kitų padalinių juo analizavo mikropaslaugų kodą sistemoje Alameda (NSD nuosava depozitoriumo ir kliringo apskaitos sistema), CFT (informacinė sistema apskaitai, balansui, privalomų ir vidinių ataskaitų rengimui), kai kuriose kitose. sistemos . Norėdami eksperimentuoti, nusprendėme pradėti nuo nemokamos „SonarQube“ versijos. Taigi, pereikime prie mūsų bylos.

Įgyvendinimo procesas

Mes turime:

  • automatinis sistemos surinkimas TeamCity;
  • nustatyti kodo įkėlimo per MergeRequest procesą iš funkcijos šakos į pagrindinę GitLab šaką (kūrimo procesas pagal GitHub Flow);
  • SonarQube sukonfigūruotas analizuoti DAP sistemos kodą pagal grafiką.

Mūsų tikslas: įdiegti automatinę kodų analizę AVE CI/CD procesuose.

Reikia pritaikyti: automatinio kodo tikrinimo statiniu analizatoriumi procesas su kiekviena MergeRequest į pagrindinę šaką.

Tie. tikslinė nuotrauka yra tokia: kai tik kūrėjas įkelia pakeitimus į funkcijų šaką, automatiškai pradedama tikrinti, ar kode nėra naujų klaidų. Jei klaidų nėra, tada pakeitimus leidžiama priimti, kitaip klaidas teks taisyti. Jau pradiniame etape galėjome nustatyti tam tikrą kodo klaidų skaičių. Sistema turi labai lanksčius nustatymus: ją galima sukonfigūruoti taip, kad ji veiktų konkrečioms kūrėjų užduotims, kiekvienai sistemai ir programavimo stiliui.

„QualityGate“ konfigūravimas „SonarQube“.

„QualityGate“ analizė yra dalykas, kurį skaitome internete. Iš pradžių taikėme kitokį metodą, sudėtingesnį ir tam tikrais atžvilgiais ne visiškai teisingą. Pirmiausia du kartus atlikome nuskaitymą per „SonarQube“: nuskaitėme funkcijos šaką ir šaką, kurioje ketiname sujungti funkcijų šaką, tada palyginome klaidų skaičių. Šis metodas nebuvo stabilus ir ne visada davė teisingą rezultatą. Tada sužinojome, kad užuot paleidę „SonarQube“ du kartus, galite nustatyti padarytų klaidų skaičiaus apribojimą („QualityGate“) ir analizuoti tik įkeltą ir palyginti atšaką.

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Kol kas vis dar naudojame gana primityvią kodo patikrą. Reikėtų pažymėti, kad „SonarQube“ nesuderinamas su kai kuriomis programavimo kalbomis, įskaitant „Delphi“. Šiuo metu mūsų sistemoje analizuojame tik PLSql kodą.

Tai veikia taip:

  • Savo projektui analizuojame tik PL/SQL kodą.
  • „QualityGate“ yra sukonfigūruotas „SonarQube“, kad klaidų skaičius nepadidėtų atliekant įsipareigojimą.
  • Klaidų skaičius per pirmąjį paleidimą buvo 229. Jei įvykdymo metu klaidų yra daugiau, sujungimas neleidžiamas.
  • Be to, ištaisius klaidas, bus galima iš naujo sukonfigūruoti „QualityGate“.
  • Taip pat galite pridėti naujų elementų analizei, pavyzdžiui, kodo aprėptį su testais ir pan.

Darbo schema:

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Scenarijaus komentaruose matosi, kad funkcijų šakoje klaidų skaičius nepadidėjo. Taigi viskas gerai.

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Mygtukas Sujungti tampa prieinamas.

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Scenarijaus komentaruose matosi, kad funkcijų šakoje klaidų skaičius tapo daugiau nei leidžiama. Taigi viskas BLOGAI.

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Mygtukas Sujungti yra raudonas. Šiuo metu nėra draudimo įkelti klaidingo kodo pakeitimus, tačiau tai daroma atsakingo kūrėjo nuožiūra. Ateityje galite užkirsti kelią tokiems įsipareigojimams pagrindiniame filiale.

Kaip įdiegėme „SonarQube“ ir realizavome didelį jos potencialą

Savarankiškas susidorojimas su klaidomis

Toliau turite patikrinti visas sistemos aptiktas klaidas, nes „SonarQube“ analizuoja pagal griežtus standartus. Tai, ką jis laiko klaida, mūsų kode gali nebūti. Todėl reikia patikrinti ir pažymėti, ar tai tikrai klaida, ar mūsų sąlygomis nereikia redaguoti. Taip sumažiname klaidų skaičių. Laikui bėgant sistema išmoks suprasti šiuos niuansus.

Prie ko priėjome

Mūsų tikslas buvo suprasti, ar mūsų atveju tikslinga kodo tikrinimą perkelti į automatizavimą. Ir rezultatas pateisino lūkesčius. „SonarQube“ leidžia mums dirbti su mums reikalingomis kalbomis, atlieka gana kompetentingą analizę ir gali pasimokyti iš kūrėjų patarimų. Apskritai esame patenkinti savo pirmąja patirtimi su SonarQube ir planuojame toliau tobulėti šia kryptimi. Tikimės, kad ateityje galėsime sutaupyti daugiau laiko ir pastangų kodo peržiūrai bei pagerinti jį pašalindami žmogiškąjį faktorių. Galbūt proceso metu atrasime platformos trūkumus arba, priešingai, dar kartą įsitikinsime, kad tai šaunus, didelį potencialą turintis dalykas.

Šiame apžvalginiame straipsnyje mes kalbėjome apie mūsų pažintį su SonarQube statiniu analizatoriumi. Jei turite klausimų, rašykite komentaruose. Jei jus domina ši tema, naujame leidinyje plačiau aprašysime, kaip viską teisingai nustatyti ir parašyti kodą tokiam patikrinimui atlikti.

Teksto autorius: atanya

Šaltinis: www.habr.com

Добавить комментарий