Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Dëshirojmë të ndajmë përvojën e implementimit të platformës për analizën dhe matjen e vazhdueshme të cilësisë së kodit SonarQube në proceset ekzistuese të zhvillimit të sistemit DPO (shtesë për sistemin e llogarive depozitare dhe clearings «Alameda») të Depositarit të Kuvendit Kombëtar.

Depositar i Kuvendit Kombëtar (grupi i kompanive «Bursa e Moskës») është një nga kompanitë kyçe të infrastrukturës financiare, ruan dhe llogarit titujt e pronësisë së emituar nga kompani ruse dhe të huaja me një vlerë mbi 50 trilion rubla. Rritja e volumit të operacioneve që sistemi kryen, si dhe rritja e vazhdueshme e funksionalitetit kërkon mbajtjen e cilësisë së lartë të kodit burimor të sistemeve. Një nga mjetet për arritjen e këtij qëllimi është analisti statik SonarQube. Në këtë artikull do të përshkruajmë përvojën tonë të suksesshme për integrimin pa probleme të analistit statik SonarQube në proceset ekzistuese të zhvillimit të departamentit tonë.

Përmbledhje mbi departamentin

NĂ« kompetencĂ«n tonĂ« janĂ« moduli tĂ« ndryshĂ«m: pagesat pĂ«r klientĂ«t e NRD, dokumentet elektronike (EDO), pĂ«rpunimi i mesazheve tĂ« depozitit tregtar (regjistrimi i transaksioneve jashtĂ« bursĂ«s), kanalet e bashkĂ«punimit elektronik mes klientĂ«ve dhe NRD e shumĂ« tĂ« tjera. NĂ« pĂ«rgjithĂ«si, Ă«shtĂ« njĂ« punĂ« e madhe mbi faqen teknike tĂ« aktivitetit operativ. Ne punojmĂ« mbi bazĂ«n e kĂ«rkesave. KĂ«rkesat e operatorĂ«ve pĂ«rpunohen nga analistĂ«t: ata mbledhin kĂ«rkesat e klientĂ«ve dhe na paraqesin vizionin e tyre se si duhet tĂ« materializohet nĂ« program. Pastaj, skema standarde: zhvillimi i kodit – testimi – eksplorimi pilot – dorĂ«zimi i kodit nĂ« linjĂ«n produktive pĂ«r klientin pĂ«rkatĂ«s.

Pse SonarQube?

Ky Ă«shtĂ« pĂ«rvoja e parĂ« e departamentit tonĂ« nĂ« zbatuar njĂ« platformĂ« pĂ«r kontrollin e cilĂ«sisĂ« sĂ« kodit – mĂ« parĂ« e bĂ«mĂ« kĂ«tĂ« manualisht, duke kryer vetĂ«m kontrollin e kodit. Por volumi nĂ« rritje i punĂ«ve kĂ«rkon automatizimin e kĂ«tij procesi. PĂ«rveç kĂ«saj, nĂ« ekip ka edhe punonjĂ«s tĂ« pakualifikuar, tĂ« cilĂ«t nuk janĂ« tĂ« njohur me rregullat e brendshme tĂ« zhvillimit dhe janĂ« mĂ« tĂ« prirur tĂ« bĂ«jnĂ« gabime. PĂ«r kontrollin e cilĂ«sisĂ« sĂ« kodit, u vendos tĂ« implementohet njĂ« analizues statik. Duke qenĂ« se SonarQube ishte pĂ«rdorur tashmĂ« nĂ« disa sisteme tĂ« NRD-sĂ«, nuk u desh shumĂ« kohĂ« pĂ«r tĂ« zgjedhur. MĂ« parĂ«, kolegĂ«t nga departamente tĂ« tjera kishin analizuar me ndihmĂ«n e tij kodin e mikroshĂ«rbimeve nĂ« sistemin "Alemida" (sistemi ynĂ« pĂ«r regjistrimin dhe llogaritĂ« depozitare tĂ« NRD-sĂ«), nĂ« CFT (sistemi informativ pĂ«r mbajtjen e llogarive tĂ« kĂ«rkesave, bilancit dhe pĂ«rgatitjen e raportimeve tĂ« detyrueshme dhe tĂ« brendshme), dhe nĂ« disa sisteme tĂ« tjera. PĂ«r eksperimente, vendosĂ«m tĂ« fillojmĂ« me versionin falas tĂ« SonarQube. Tani, le tĂ« kalojmĂ« nĂ« rastin tonĂ«.

Procesi i implementimit

Ne kemi:

  • ndĂ«rtime automatike tĂ« sistemit nĂ« TeamCity;
  • procesi i ngarkimit tĂ« kodit pĂ«rmes MergeRequest nga dega feature nĂ« dega master nĂ« GitLab (procesi i zhvillimit sipas GitHub Flow);
  • SonarQube, i konfiguruar pĂ«r analizimin e kodit pĂ«r sistemin DPO sipas njĂ« orari.

Qëllimi ynë: të implementohet analiza automatike e kodit në proceset CI/CD të DPO-së.

Duhet të konfigurohet: procesi i kontrollit automatike të kodit me analizuesin statik për çdo MergeRequest në degën kryesore.

Pra, pamja e synuar është kështu: sa herë që zhvilluesi ngarkon ndryshime në dega feature, fillon një kontroll automatike për gabime të reja në kod. Nëse nuk ka gabime, lejohet miratimi i ndryshimeve, përndryshe do të duhet të korrigjohen gabimet. Që në fazën fillestare, arritëm të identifikojmë një numër të caktuar gabimesh në kod. Sistemi ka konfigurime shumë fleksibile: mund të konfigurohet në mënyrë që të punojë për detyrat specifike të zhvilluesve, për çdo sistem dhe stil programimi.

Konfigurimi i QualityGate në SonarQube

Analiza QualityGate është një gjë që e përmendëm në thellësi të internetit. Fillimisht përdorëm një qasje tjetër, më komplekse dhe nga një këndvështrim, jo krejtësisht të saktë. Së pari, bëmë dy herë skanimin përmes SonarQube: skanuam degën e veçorive dhe degën ku do të futnim degën e veçorive, pastaj krahasuam numrin e gabimeve. Ky metodë nuk ishte i qëndrueshëm dhe nuk jepte gjithmonë rezultatet e sakta. Pastaj mësuam se mund të vendosim një kufi për numrin e gabimeve të pranueshme (QualityGate) dhe të analizojmë vetëm atë degë që po e ngremë dhe e krahasojmë.

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Për momentin, ne ende përdorim një verifikim të thjeshtë të kodit. Duhet theksuar se SonarQube nuk është në përputhje me disa gjuhë programimi, duke përfshirë Delphi. Aktualisht për sistemin tonë analizojmë vetëm kodin PLSql.

Kjo ndodh kështu:

  • PĂ«r projektin tonĂ« analizojmĂ« vetĂ«m kodin PL/SQL.
  • NĂ« SonarQube Ă«shtĂ« vendosur QualityGate nĂ« njĂ« mĂ«nyrĂ« qĂ« numri i gabimeve tĂ« mos rritet me komitin.
  • Numri i gabimeve gjatĂ« fillimit tĂ« parĂ« e arriti 229. NĂ«se numri i gabimeve rritet me komitin, atĂ«herĂ« merge nuk lejohet.
  • Pastaj, nĂ«se gabimet korrigjohen, mund tĂ« rikonfigurohet QualityGate.
  • Po ashtu, mund tĂ« shtohen pika tĂ« reja pĂ«r analizĂ«, siç Ă«shtĂ« mbulimi i kodit me teste etj.

Skema e punës:

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Në komentet e punës së skriptit shihet që numri i gabimeve në degën e veçorive nuk është rritur. Kështu që gjithçka është në rregull.

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Bënte e disponueshme butonin Merge.

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Në komentet e punës së skriptit shihet se numri i gabimeve në degën e veçorive ka tejkaluar kufirin e pranueshëm. Kështu që gjithçka është keq.

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Butoni Merge është i kuq. Aktualisht nuk ka ndalim për të shpërndarë ndryshimet për kodin me gabime, por kjo bëhet sipas vendimit të zhvilluesit të përgjegjshëm. Në të ardhmen, mund të ndalohet bërja e komiteve të tilla në degën kryesore.

Si e implementuam SonarQube dhe kuptuam potencialin e tij të madh

Puna e pavarur mbi gabimet

Pastaj është e nevojshme të kontrolloni të gjitha gabimet e shkaktuara nga sistemi, sepse SonarQube analizon sipas standardeve të tij strikte. Ajo që ai e sheh si gabim, në kodin tonë ndoshta nuk është e tillë. Prandaj, duhet të kontrollojmë dhe të shënojmë, nëse është vërtet gabim, ose nëse është diçka që në kushtet tona nuk ka nevojë të korrigjohet. Kështu reduktojmë numrin e gabimeve. Me kalimin e kohës, sistemi do të mësojë të kuptojë këto nuanca.

ÇfarĂ« arrijmĂ«

Qëllimi ynë ishte të kuptonim nëse ishte e arsyeshme në rastin tonë të shndërronim kontrollin e kodit në automatizim. Dhe rezultati e justifikoi pritshmëritë. SonarQube na lejon të punojmë me gjuhët që na nevojiten, bën një analizë mjaft të saktë dhe ka potencialin për t'u mësuar nga sugjerimet e zhvilluesve. Në përgjithësi, jemi të kënaqur me përvojën tonë të parë me SonarQube dhe planifikojmë të zhvillohemi më tej në këtë drejtim. Prandaj, presim që në të ardhmen të mund të kursejmë më shumë kohë dhe përpjekje në kontrollin e kodit dhe ta bëjmë atë më cilësor, duke eliminuar faktorët njerëzorë. Ndoshta, gjatë procesit, do të zbulojmë mangësi të platformës ose, përndryshe, do të konfirmojmë sërish se kjo është një gjë e shkëlqyer me shumë potencial.

Në këtë artikull përmbledhës, ne bëmë të njohur SonarQube, analizuesin statik. Nëse keni pyetje, ju lutemi shkruani në komentet. Nëse jeni të interesuar në këtë temë, në një publikim të ri do të përshkruajmë më në detaje si të vendosni gjithçka siç duhet dhe të shkruani kodin në mënyrë që të bëni një kontroll të tillë.

Autori i tekstit: atanya

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster