
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ë.

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:

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.

Bënte e disponueshme butonin Merge.

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.

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.

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:
Burimi: habr.com
