Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Željeli bismo podijeliti naše iskustvo implementacije platforme za kontinuiranu analizu i mjerenje kvalitete SonarQube koda u postojeće procese razvoja DPO sustava (dodatak Alameda depozitarno-klirinškom računovodstvenom sustavu) Nacionalnog depozita za namire.

National Settlement Depository (Moscow Exchange Group of Companies) jedna je od ključnih tvrtki za financijsku infrastrukturu koja pohranjuje i evidentira vrijednosne papire ruskih i stranih izdavatelja u vrijednosti većoj od 50 trilijuna rubalja. Sve veći obujam operacija koje provodi sustav, kao i kontinuirano povećanje funkcionalnosti, zahtijevaju održavanje visoke kvalitete izvornog koda sustava. Jedan od alata za postizanje ovog cilja je statički analizator SonarQube. U ovom članku opisujemo uspješno iskustvo besprijekorne implementacije statičkog analizatora SonarQube u postojeće razvojne procese našeg odjela.

Ukratko o odjelu

Naša kompetencija uključuje sljedeće module: plaćanja prema klijentima NSD-a, upravljanje elektroničkim dokumentima (EDF), obrada poruka trgovinskog repozitorija (registracija izvanberzanskih transakcija), elektronički kanali interakcije između klijenata i NSD-a i još mnogo toga. Općenito, veliki sloj posla na tehničkoj strani operacija. Radimo na temelju prijava. Prijave šaltera obrađuju analitičari: prikupljaju zahtjeve kupaca i iznose nam svoju viziju kako bi se to trebalo uklopiti u program. Nadalje, standardna shema: razvoj koda - testiranje - probni rad - isporuka koda u proizvodni krug izravnom kupcu.

Zašto SonarQube?

Ovo je prvo iskustvo našeg odjela u implementaciji platforme za kontrolu kvalitete koda - prije smo to radili ručno, samo pregled koda. Ali sve veći obujam posla zahtijeva automatizaciju ovog procesa. Osim toga, u timu ima i neiskusnih zaposlenika koji nisu u potpunosti upoznati s internim razvojnim propisima te su skloni više griješiti. Kako bi se kontrolirala kvaliteta koda, odlučeno je implementirati statički analizator. Budući da je SonarQube već korišten u nekim NSD sustavima, nije trebalo dugo birati. Prethodno su ga kolege iz drugih odjela koristili za analizu koda mikroservisa u sustavu Alameda (vlastiti depozitarni i klirinški računovodstveni sustav NSD-a), u CFT-u (informacijski sustav za računovodstvo, bilancu, pripremu obveznog i internog izvještavanja), u nekim drugim sustavi . Radi eksperimentiranja, odlučili smo započeti s besplatnom verzijom SonarQubea. Pa prijeđimo na naš slučaj.

Proces implementacije

Imamo:

  • automatska montaža sustava u TeamCity;
  • postaviti proces učitavanja koda putem MergeRequesta iz grane značajke u glavnu granu u GitLabu (proces razvoja prema GitHub Flowu);
  • SonarQube konfiguriran za analizu koda za DPO sustav prema rasporedu.

Naš cilj: implementirati automatsku analizu koda u CI/CD procesima AVE.

Treba prilagoditi: proces automatske provjere koda pomoću statičkog analizatora sa svakim MergeRequestom prema glavnoj grani.

Oni. ciljna slika je sljedeća: čim programer učita promjene u granu značajki, počinje automatska provjera novih grešaka u kodu. Ako nema grešaka, promjene se mogu prihvatiti, u suprotnom će se pogreške morati ispraviti. Već u početnoj fazi uspjeli smo identificirati određeni broj grešaka u kodu. Sustav ima vrlo fleksibilne postavke: može se konfigurirati tako da radi za specifične zadatke programera, za svaki sustav i stil programiranja.

Konfiguriranje QualityGate-a u SonarQubeu

QualityGate analiza je stvar koju čitamo u utrobi Interneta. U početku smo koristili drugačiji pristup, složeniji i nekako ne baš ispravan. Prvo smo dvaput pokrenuli skeniranje kroz SonarQube: skenirali smo granu značajke i granu u koju smo namjeravali spojiti granu značajke, a zatim smo usporedili broj pogrešaka. Ova metoda nije bila stabilna i nije uvijek davala točan rezultat. A onda smo naučili da umjesto dvaput pokretanja SonarQubea, možete postaviti ograničenje broja napravljenih pogrešaka (QualityGate) i analizirati samo granu koju učitate i usporedite.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Za sada još uvijek koristimo prilično primitivnu provjeru koda. Treba napomenuti da SonarQube nije kompatibilan s nekim programskim jezicima, uključujući Delphi. Trenutno za naš sustav analiziramo samo PLSql kod.

Djeluje ovako:

  • Za naš projekt analiziramo samo PL/SQL kod.
  • QualityGate je konfiguriran u SonarQubeu tako da se broj pogrešaka ne povećava s predajom.
  • Broj pogrešaka pri prvom izvođenju bio je 229. Ako postoji više pogrešaka tijekom urezivanja, spajanje nije dopušteno.
  • Nadalje, podložno ispravljanju pogrešaka, bit će moguće ponovno konfigurirati QualityGate.
  • Također možete dodati nove stavke za analizu, na primjer, pokrivenost koda testovima itd.

Shema rada:

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

U komentarima skripte možete vidjeti da se broj pogrešaka u grani značajki nije povećao. Dakle, sve je OK.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Gumb Spoji postaje dostupan.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

U komentarima skripte možete vidjeti da je broj pogrešaka u grani značajki postao veći od dopuštenog. Dakle, sve je LOŠE.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Gumb Spoji je crven. Trenutačno ne postoji zabrana učitavanja promjena pogrešnog koda, ali to se radi prema nahođenju odgovornog programera. Ubuduće možete spriječiti da se takva predavanja izvrše glavnoj grani.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Samostalno rješavanje grešaka

Zatim morate provjeriti sve greške koje je otkrio sustav, jer SonarQube analizira prema svojim strogim standardima. Ono što on smatra pogreškom možda zapravo i nije u našem kodu. Stoga je potrebno provjeriti i zabilježiti radi li se doista o pogrešci ili nema potrebe za uređivanjem u našim uvjetima. Time smanjujemo broj grešaka. S vremenom će sustav naučiti razumjeti te nijanse.

Do čega smo došli

Cilj nam je bio shvatiti je li u našem slučaju svrsishodno prebaciti provjeru koda na automatizaciju. I rezultat je opravdao očekivanja. SonarQube nam omogućuje rad s jezicima koji su nam potrebni, radi prilično kompetentnu analizu i ima potencijal za učenje iz savjeta programera. Općenito, zadovoljni smo našim prvim iskustvom sa SonarQubeom i planiramo daljnji razvoj u tom smjeru. Očekujemo da ćemo u budućnosti moći uštedjeti više vremena i truda na pregledu koda i učiniti ga boljim eliminacijom ljudskog faktora. Možda ćemo tijekom procesa otkriti nedostatke platforme, ili ćemo se, naprotiv, još jednom uvjeriti da je ovo cool stvar s velikim potencijalom.

U ovom preglednom članku govorili smo o našem poznanstvu sa statičkim analizatorom SonarQube. Ako imate pitanja, napišite u komentarima. Ako vas zanima ova tema, u novoj publikaciji ćemo detaljnije opisati kako sve ispravno postaviti i napisati kod za takvu provjeru.

Autor teksta: atanija

Izvor: www.habr.com

Dodajte komentar