Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

Želimo podijeliti iskustvo implementacije platforme za kontinuiranu analizu i mjerenje kvalitete koda SonarQube u postojeće procese razvoja sustava DPO (dopuna sustava depozitarnog i klirinškog obračuna „Alameda”) Nacionalnog klirinškog depozitara.

Nacionalni klirinški depozitar (grupa kompanija „Moskovska burza”) jedna je od ključnih kompanija financijske infrastrukture, čuva i evidentira vrijednosne papire ruskih i stranih emitenta u iznosu većem od 50 trilijuna RUB. Rastući obujam operacija koje sustav provodi, kao i kontinuirano povećavanje funkcionalnosti zahtijevaju održavanje visoke kvalitete izvornih kodova sustava. Jedan od alata za postizanje ovog cilja je statički analitičar SonarQube. U ovom članku opisujemo uspješno iskustvo neprekidne implementacije statičkog analitičara SonarQube u postojeće procese razvoja našeg odjela.

Kratko o odjelu

U našoj nadležnosti su sljedeći moduli: isplate klijentima NRD-a, elektronička razmjena dokumenata (ERD), obrada poruka trgovačkog depozitara (registracija izvanburzovnih transakcija), kanali elektroničke interakcije između klijenata i NRD-a i mnogo toga drugog. Uglavnom, veliki dio posla na tehničkoj strani operativnog poslovanja. Radimo na temelju zahtjeva. Zahtjeve operatera obrađuju analitičari: oni prikupljaju zahtjeve klijenata i predstavljaju nam svoju viziju kako to treba biti implementirano u programu. Nakon toga slijedi standardna shema: razvoj koda – testiranje – pilotska eksploatacija – isporuka koda na produkcijski kontur izravnom naručitelju.

Zašto baš SonarQube?

Ovo je prvo iskustvo našeg odjela u implementaciji platforme za kontrolu kvalitete koda – ranije smo to radili ručno, provodili smo samo kod pregled. Međutim, rastući volumen posla zahtijeva automatizaciju ovog procesa. Osim toga, u timu imamo i neiskusne zaposlenike koji nisu u potpunosti upoznati s internim pravilnicima razvoja i skloni su činiti više grešaka. Odluka je donesena da se za kontrolu kvalitete koda implementira statički analizator. Kako je SonarQube već korišten u nekim sustavima NRD-a, dugo se nije razmišljalo. Ranije su kolege iz drugih odjela analizirale uz pomoć njega kod mikroservisa u sustavu "Alameda" (vlastiti sustav depozitarnog-kirinskog računovodstva NRD-a), u CFT-u (informacijski sustav za vođenje računovodstva, bilance, priprema obvezne i interne izvještaje) i u još nekim drugim sustavima. Za eksperiment odlučili smo početi s besplatnom verzijom SonarQube-a. Dakle, pređimo na naš slučaj.

Proces implementacije

Imamo:

  • automatska izgradnja sustava u TeamCity-u;
  • postavljen proces slanja koda putem MergeRequest-a iz feature grane u master granu u GitLab-u (proces razvoja prema GitHub Flow-u);
  • SonarQube, postavljen za analizu koda za sustav DPO prema rasporedu.

Naš cilj: implementirati automatsku analizu koda u CI/CD procese DPO.

Treba postaviti: proces automatske provjere koda pomoću statičkog analizatora pri svakom MergeRequest-u u glavnu granu.

To jest, ciljana slika je sljedeća: čim programer pošalje promjene u feature granu, pokreće se automatska provjera kako bi se utvrdilo ima li novih grešaka u kodu. Ako grešaka nema, promjene se mogu prihvatiti, inače će biti potrebno ispraviti greške. Već u početnoj fazi uspjeli smo identificirati određeni broj grešaka u kodu. Sustav ima vrlo fleksibilne postavke: može se konfigurirati na način da radi prema specifičnim zadacima programera, za svaku sustav i stil programiranja.

Postavka QualityGate-a u SonarQube-u

Analiza QualityGate predstavlja koncept koji smo pronašli u dubinama interneta. Isprva smo koristili drugačiji pristup, složeniji i s neke strane ne potpuno ispravan. Prvo smo dvaput pokretali skeniranje putem SonarQube-a: skenirali smo feature granu i granu u koju smo planirali integirati feature granu, a zatim smo uspoređivali broj grešaka. Ova metoda nije bila stabilna i nije uvijek davala točne rezultate. Onda smo saznali da umjesto dvostrukog pokretanja SonarQube-a, možemo postaviti limit na broj dopuštenih grešaka (QualityGate) i analizirati samo onu granu koju dodajemo i uspoređujemo.

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

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

Radi to ovako:

  • Analiziramo samo PL/SQL kod za naš projekt.
  • U SonarQube-u je QualityGate postavljen tako da se broj grešaka ne povećava s commitom.
  • Broj grešaka prilikom prvog pokretanja iznosio je 229. Ako broj grešaka prilikom commita postane veći, merge nije dozvoljen.
  • Nakon ispravka grešaka moguće je ponovno postaviti QualityGate.
  • Također je moguće dodavati nove stavke za analizu, na primjer, pokrivenost koda testovima itd.

Shema rada:

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

U komentarima rada skripte vidljivo je da se broj grešaka u feature-grani nije povećao. Znači, sve je u redu.

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

Dostupna je gumb Merge.

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

U komentarima rada skripte vidljivo je da je broj grešaka u feature-grani premašio dozvoljeno. Znači, sve je LOŠE.

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

Gumb Merge je crven. Trenutno ne postoji zabrana za dodavanje promjena s greškom kodom, ali to se radi prema nahođenju odgovornog programera. U budućnosti se može zabraniti unos takvih commit-a u glavnu granu.

Kako smo implementirali SonarQube i svjesni njegovog velikog potencijala

Samostalni rad na greškama

Nakon toga potrebno je provjeriti sve greške koje je sustav otkrio jer SonarQube analizira prema svojim strogim standardima. Ono što smatra greškom možda u našem kodu nije greška. Stoga je potrebno provjeriti i označiti, doista li je to greška ili ono što nije potrebno ispraviti u našim uvjetima. Na taj način smanjujemo broj grešaka. S vremenom će se sustav naučiti razumjeti te nijanse.

Do čega smo došli

Naš cilj je bio razumjeti je li u našem slučaju opravdano prevesti provjeru koda na automatizaciju. I rezultat je ispunio očekivanja. SonarQube nam omogućuje rad s jezicima koji su nam potrebni, provodi prilično kvalitetnu analizu i ima potencijal učiti na savjetima programera. U cjelini, zadovoljni smo našim prvim iskustvom s SonarQube-om i planiramo se dalje razvijati u tom smjeru. Očekujemo da ćemo u budućnosti uštedjeti više vremena i truda na provjeri koda i učiniti je kvalitetnijom, uklanjajući ljudski faktor. Moguće je da ćemo u procesu otkriti nedostatke platforme ili, suprotno, ponovo se uvjeriti da je to sjajna stvar s velikim potencijalom.

U ovom pregledu smo pisali o našem upoznavanju sa statičkim analizatorom SonarQube. Ako imate pitanja, slobodno ih postavite u komentarima. Ako vas zanima ova tema, u novoj publikaciji ćemo detaljnije opisati kako pravilno sve postaviti i napisati kod za sličnu provjeru.

Autor teksta: atanya

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster