Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Soovime jagada oma kogemusi koodikvaliteedi pidevaks analüüsiks ja mõõtmiseks mõeldud SonarQube'i platvormi juurutamisel riikliku arveldusdepositooriumi andmekaitseametniku süsteemi (täiendus Alameda depoopangale ja arveldusarvestuse süsteemile) olemasolevatesse arendusprotsessidesse.

Rahvuslik arveldusdepositoorium (Moskva börsi ettevõtete grupp) on üks finantsinfrastruktuuri võtmeettevõtteid, mis hoiab ja arvestab Venemaa ja välismaiste emitentide väärtpabereid enam kui 50 triljoni rubla väärtuses. Süsteemi tehtavate toimingute kasvav maht ja funktsionaalsuse pidev laienemine nõuavad süsteemide kvaliteetse lähtekoodi säilitamist. Üks tööriist selle eesmärgi saavutamiseks on SonarQube staatiline analüsaator. Selles artiklis kirjeldame SonarQube'i staatilise analüsaatori sujuva rakendamise edukat kogemust meie osakonna olemasolevatesse arendusprotsessidesse.

Lühidalt osakonnast

Meie kompetentsi kuuluvad järgmised moodulid: maksed NSD klientidele, elektrooniline dokumendihaldus (EDF), kauplemisteadete töötlemine (börsiväliste tehingute registreerimine), klientide ja NSD vahelise elektroonilise suhtluse kanalid ja palju muud. Üldiselt on operatiivtegevuse tehnilise poolega palju tööd teha. Töötame taotluste alusel. Operatiivametnike taotlusi töötlevad analüütikud: nad koguvad kokku kliendi nõuded ja esitavad meile oma nägemuse, kuidas see peaks programmi sobituma. Järgmine on standardskeem: koodiarendus – testimine – proovitöö – koodi tarnimine tootmisahelasse otsesele kliendile.

Miks SonarQube?

See on meie osakonna esimene kogemus koodikvaliteedi kontrolli platvormi juurutamisel – varem tegime seda käsitsi, tehes ainult koodide ülevaatusi. Kuid kasvav töömaht nõuab selle protsessi automatiseerimist. Lisaks on meeskonnas ka kogenematuid töötajaid, kes pole sisemiste arendusreeglitega täielikult kursis ja kipuvad rohkem vigu tegema. Koodi kvaliteedi kontrollimiseks otsustati rakendada staatiline analüsaator. Kuna SonarQube oli mõnes NSD-süsteemis juba kasutusel, ei võtnud valimine kaua aega. Varem kasutasid kolleegid teistest osakondadest mikroteenuste koodi analüüsimiseks Alameda süsteemis (NSD enda depoo- ja arveldusarvestussüsteem), CFT-s (arvestuse, bilansi pidamise, kohustusliku ja sisearuandluse koostamise infosüsteem), mõnes osas. muud süsteemid. Katsete jaoks otsustasime alustada SonarQube'i tasuta versiooniga. Liigume siis meie juhtumi juurde.

Rakendusprotsess

Meil on:

  • automaatne süsteemi kokkupanek TeamCitys;
  • koodi üleslaadimise protsess MergeRequesti kaudu funktsiooniharust GitLabi põhiharusse on konfigureeritud (arendusprotsess vastavalt GitHub Flow'le);
  • SonarQube, mis on konfigureeritud analüüsima DPO süsteemi koodi ajakava järgi.

Meie eesmärk: rakendage andmekaitseametniku CI/CD protsessides automaatset koodianalüüsi.

Vaja konfigureerida: koodi automaatse kontrollimise protsess staatilise analüsaatoriga iga põhiharule suunatud MergeRequestiga.

Need. Sihtpilt on järgmine: niipea, kui arendaja laadib muudatused funktsiooniharusse, käivitatakse automaatne koodi uute vigade kontroll. Kui vigu pole, siis on lubatud muudatused vastu võtta, vastasel juhul tuleb vead parandada. Juba algfaasis suutsime tuvastada koodis teatud arvu vigu. Süsteem on väga paindlike seadistustega: seda saab konfigureerida nii, et see toimiks arendajate konkreetsete ülesannete jaoks, iga süsteemi ja programmeerimisstiili jaoks.

QualityGate'i seadistamine SonarQube'is

QualityGate'i analüüs on midagi, mida me loeme Interneti sügavustest. Algselt kasutasime teistsugust lähenemist, keerukamat ja mõnes mõttes mitte päris õiget. Esiteks käivitasime skannimise kaks korda SonarQube'i kaudu: skannisime funktsiooniharu ja haru, kuhu kavatsesime funktsiooniharu liita, ning seejärel võrdlesime vigade arvu. See meetod ei olnud stabiilne ega andnud alati õiget tulemust. Ja siis avastasime, et SonarQube'i kahekordse käivitamise asemel saame määrata tehtud vigade arvule piirangu (QualityGate) ning analüüsida ainult üleslaaditud haru ja võrrelda.

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Praegu kasutame endiselt üsna primitiivset koodiülevaatust. Väärib märkimist, et SonarQube ei ühildu mõne programmeerimiskeelega, sealhulgas Delphiga. Hetkel analüüsime oma süsteemi jaoks ainult PLSql-koodi.

See toimib järgmiselt:

  • Analüüsime oma projekti jaoks ainult PL/SQL-koodi.
  • SonarQube'il on QualityGate konfigureeritud nii, et vigade arv ei suureneks koos kinnitamisega.
  • Vigade arv esimesel käivitamisel oli 229. Kui commit'i ajal on vigu rohkem, siis ühendamine pole lubatud.
  • Lisaks on vigade parandamisel võimalik QualityGate'i uuesti konfigureerida.
  • Analüüsiks saab lisada ka uusi punkte, näiteks koodi katmine testidega jne.

Töö skeem:

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Skripti kommentaarid näitavad, et funktsiooniharu vigade arv pole suurenenud. Nii et kõik on korras.

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Nupp Ühenda muutub kättesaadavaks.

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Skripti kommentaarides on näha, et funktsiooniharu vigade arv on muutunud enam kui vastuvõetavaks. Nii et kõik on HALB.

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Ühenda nupp on punane. Hetkel ei ole vigase koodi alusel muudatuste üleslaadimise keeldu, kuid seda tehakse vastutava arendaja äranägemisel. Tulevikus saate takistada selliste kohustuste lisamist põhiharusse.

Kuidas me SonarQube'i rakendasime ja selle suure potentsiaali realiseerisime

Iseseisev töö vigadega

Järgmiseks peate kontrollima kõiki süsteemi tuvastatud vigu, sest SonarQube analüüsib oma rangete standardite järgi. See, mida ta peab veaks, ei pruugi meie koodis tegelikult olla. Seetõttu peate kontrollima ja märkima, kas see on tõesti viga või pole meie tingimustes vaja redigeerida. Nii vähendame vigade arvu. Aja jooksul õpib süsteem neid nüansse mõistma.

Milleni me oleme jõudnud

Meie eesmärk oli mõista, kas meie puhul oleks soovitatav koodide ülevaatus üle viia automatiseerimisse. Ja tulemus vastas ootustele. SonarQube võimaldab meil töötada vajalike keeltega, teha üsna pädevaid analüüse ja tal on potentsiaali arendajate nõuannetest õppida. Üldiselt oleme oma esimese SonarQube'i kasutamise kogemusega rahul ja plaanime selles suunas edasi areneda. Eeldame, et tulevikus suudame koodide ülevaatamisele rohkem aega ja vaeva säästa ning inimteguri elimineerimisega seda paremaks muuta. Võib-olla avastame selle käigus platvormi kitsaskohad või, vastupidi, veendume taas, et tegemist on laheda ja suure potentsiaaliga asjaga.

Selles ülevaateartiklis rääkisime oma tutvusest SonarQube staatilise analüsaatoriga. Kui teil on küsimusi, kirjutage kommentaaridesse. Kui olete selle teema vastu huvitatud, kirjeldame uues väljaandes üksikasjalikumalt, kuidas kõike õigesti seadistada ja kirjutada kood sellise kontrolli tegemiseks.

Teksti autor: atanya

Allikas: www.habr.com

Lisa kommentaar