Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Želimo podijeliti svoje iskustvo implementacije SonarQube platforme za kontinuiranu analizu i mjerenje kvaliteta koda u postojeće razvojne procese DPO sistema (dodatak Alameda depozitarnom i klirinškom računovodstvenom sistemu) Nacionalnog depozita za poravnanje.

Nacionalni depozitar za poravnanje (grupa kompanija Moskovske berze) jedna je od ključnih kompanija u finansijskoj infrastrukturi, koja čuva i obračunava hartije od vrednosti ruskih i stranih emitenata u vrednosti većoj od 50 triliona rubalja. Sve veći obim operacija koje sistem izvodi, kao i kontinuirano proširenje funkcionalnosti, zahtijevaju održavanje visokog kvaliteta izvornog koda sistema. Jedan alat za postizanje ovog cilja je statički analizator SonarQube. U ovom članku ćemo opisati 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 klijentima NSD-a, elektronsko upravljanje dokumentima (EDF), obrada poruka repozitorija trgovanja (registracija vanberzanskih transakcija), kanali elektronske interakcije između klijenata i NSD-a i još mnogo toga. Općenito, ima puno posla koji treba uraditi na tehničkoj strani operativnih aktivnosti. Radimo na osnovu zahtjeva. Prijave operativnih službenika obrađuju analitičari: prikupljaju zahtjeve kupaca i prezentiraju nam svoju viziju kako bi se to trebalo uklopiti u program. Slijedi standardna shema: razvoj koda – testiranje – probni rad – isporuka koda u proizvodni krug direktnom kupcu.

Zašto SonarQube?

Ovo je prvo iskustvo našeg odeljenja u implementaciji platforme za kontrolu kvaliteta koda - ranije smo to radili ručno, vršeći samo preglede koda. Ali sve veći obim posla zahtijeva automatizaciju ovog procesa. Osim toga, u timu su i neiskusni zaposlenici koji nisu u potpunosti upoznati sa internim razvojnim propisima i skloniji su da prave više grešaka. Za kontrolu kvaliteta koda, odlučeno je da se implementira statički analizator. Budući da se SonarQube već koristio u nekim NSD sistemima, nije trebalo dugo da se izabere. Ranije su ga kolege iz drugih resora koristile za analizu šifre mikroservisa u sistemu Alameda (sopstveni depozitno-klirinški računovodstveni sistem NSD-a), u CFT-u (informacioni sistem za vođenje računovodstva, bilansa, priprema obaveznog i internog izveštavanja), u nekim drugi sistemi. Za eksperimente, odlučili smo početi s besplatnom verzijom SonarQube-a. Dakle, pređimo na naš slučaj.

Proces implementacije

Imamo:

  • automatska montaža sistema u TeamCity-u;
  • konfigurisan je proces učitavanja koda putem MergeRequest-a iz grane funkcije u glavnu granu u GitLabu (proces razvoja prema GitHub Flow-u);
  • SonarQube, konfiguriran za analizu koda za DPO sistem po rasporedu.

Naš cilj: implementirati automatsku analizu koda u CI/CD procesima DPO-a.

Potrebno je konfigurisati: proces automatske provjere koda pomoću statičkog analizatora sa svakim MergeRequest-om do glavne grane.

One. Ciljna slika je sljedeća: čim programer učita promjene u granu karakteristika, pokreće se automatska provjera novih grešaka u kodu. Ako nema grešaka, onda se promjene mogu prihvatiti, u suprotnom će se greške morati ispraviti. Već u početnoj fazi uspjeli smo identificirati određeni broj grešaka u kodu. Sistem ima vrlo fleksibilna podešavanja: može se konfigurisati na način da radi za specifične zadatke programera, za svaki sistem i stil programiranja.

Postavljanje QualityGate-a u SonarQubeu

QualityGate analiza je nešto što čitamo u dubinama interneta. U početku smo koristili drugačiji pristup, složeniji i, na neki način, ne sasvim ispravan. Prvo smo skenirali dva puta kroz SonarQube: skenirali smo granu funkcije i granu gdje ćemo spojiti granu značajke, a zatim uporedili broj grešaka. Ova metoda nije bila stabilna i nije uvijek davala ispravan rezultat. A onda smo saznali da umjesto da dvaput pokrenemo SonarQube, možemo postaviti ograničenje broja napravljenih grešaka (QualityGate) i analizirati samo granu koju učitavate i usporedite.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

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

Radi ovako:

  • Analiziramo samo PL/SQL kod za naš projekat.
  • SonarQube ima QualityGate konfiguriran tako da se broj grešaka ne povećava s urezivanjem.
  • Broj grešaka pri prvom pokretanju bio je 229. Ako ima više grešaka tokom urezivanja, spajanje nije dozvoljeno.
  • Nadalje, ako se greške isprave, bit će moguće rekonfigurirati QualityGate.
  • Također možete dodati nove točke za analizu, na primjer, pokrivenost koda testovima itd.

Šema rada:

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Komentari skripte pokazuju da se broj grešaka u grani karakteristika nije povećao. Dakle, sve je u redu.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Dugme za spajanje postaje dostupno.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

U komentarima skripte možete vidjeti da je broj grešaka u grani funkcija postao više nego prihvatljiv. Dakle, sve je LOŠE.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Dugme za spajanje je crveno. Trenutno ne postoji zabrana učitavanja izmjena na osnovu pogrešnog koda, ali se to radi po nahođenju odgovornog programera. U budućnosti možete spriječiti da se takva urezivanja dodaju u glavnu granu.

Kako smo implementirali SonarQube i shvatili njegov veliki potencijal

Samostalan rad na greškama

Zatim morate provjeriti sve greške koje je sistem otkrio, jer SonarQube analizira prema svojim strogim standardima. Ono što on smatra greškom možda zapravo nije u našem kodu. Stoga morate provjeriti i zabilježiti da li je to zaista greška, ili nema potrebe za uređivanjem u našim uslovima. Na taj način smanjujemo broj grešaka. Vremenom će sistem naučiti da razumije ove nijanse.

Do čega smo došli

Naš cilj je bio da shvatimo da li bi u našem slučaju bilo preporučljivo prebaciti pregled koda na automatizaciju. I rezultat je opravdao očekivanja. SonarQube nam omogućava da radimo sa jezicima koji su nam potrebni, radi prilično kompetentne analize i ima potencijal da uči iz savjeta programera. Sve u svemu, zadovoljni smo našim prvim iskustvom korištenja SonarQubea i planiramo se dalje razvijati 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 u tom procesu otkriti nedostatke platforme ili ćemo se, obrnuto, još jednom uvjeriti da je ovo super stvar s velikim potencijalom.

U ovom preglednom članku govorili smo o našem upoznavanju sa statičkim analizatorom SonarQube. Ako imate pitanja, piš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: atanya

izvor: www.habr.com

Dodajte komentar