Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

Wy wolle ús ûnderfining diele mei it ymplementearjen fan it SonarQube-platfoarm foar kontinuze analyse en mjitting fan koadekwaliteit yn 'e besteande ûntwikkelingsprosessen fan it DPO-systeem (tafoeging oan it Alameda-depot- en clearing-accountingsysteem) fan' e National Settlement Depository.

De National Settlement Depository (Moskou Exchange-groep fan bedriuwen) is ien fan 'e wichtige bedriuwen yn' e finansjele ynfrastruktuer, opslach en boekhâlding foar weardepapieren fan Russyske en bûtenlânske útjouwers wurdich mear as 50 trillion roebel. It groeiende folume fan operaasjes útfierd troch it systeem, lykas ek de trochgeande útwreiding fan funksjonaliteit, fereaskje it behâld fan hege kwaliteit boarnekoade fan 'e systemen. Ien ark om dit doel te berikken is de SonarQube statyske analysator. Yn dit artikel sille wy de suksesfolle ûnderfining beskriuwe fan it naadloos ymplementearjen fan de SonarQube statyske analysator yn 'e besteande ûntwikkelingsprosessen fan ús ôfdieling.

Koartsein oer de ôfdieling

Us kompetinsje omfettet de folgjende modules: betellingen oan NSD-kliïnten, elektroanysk dokumintbehear (EDF), ferwurkjen fan hannelsrepositoryberjochten (registraasje fan transaksjes sûnder kontrôle), kanalen fan elektroanyske ynteraksje tusken kliïnten en NSD, en folle mear. Yn it algemien is der in soad wurk te dwaan oan de technyske kant fan operasjonele aktiviteiten. Wy wurkje op basis fan oanfragen. Oanfragen fan operaasjeoffisieren wurde ferwurke troch analisten: se sammelje de easken fan 'e klant en presintearje ús har fyzje fan hoe't it yn it programma passe moat. Folgjende is it standertskema: koadeûntwikkeling - testen - proefoperaasje - levering fan de koade oan it produksjesirkwy oan 'e direkte klant.

Wêrom SonarQube?

Dit is de earste ûnderfining fan ús ôfdieling by it ymplementearjen fan in platfoarm foar koadekwaliteitskontrôle - earder diene wy ​​it mei de hân, mei allinich koadebeoardielingen. Mar it groeiende folume fan wurk fereasket automatisearring fan dit proses. Derneist omfettet it team ek sûnder ûnderfining meiwurkers dy't net alhiel bekend binne mei ynterne ûntwikkelingsregels en de neiging hawwe om mear flaters te meitsjen. Om de kwaliteit fan 'e koade te kontrolearjen, waard besletten om in statyske analysator út te fieren. Sûnt SonarQube waard al brûkt yn guon NSD-systemen, duorre it net lang om te kiezen. Earder brûkten kollega's fan oare ôfdielingen it om de koade fan mikrotsjinsten yn it Alameda-systeem (NSD's eigen depot- en clearing-boekhâldingsysteem) te analysearjen, yn CFT (in ynformaasjesysteem foar it byhâlden fan boekhâlding, balâns, it tarieden fan ferplichte en ynterne rapportaazje), yn guon oare systemen. Foar eksperiminten hawwe wy besletten om te begjinnen mei de fergese ferzje fan SonarQube. Dus litte wy nei ús saak gean.

Implementaasje proses

Wy hawwe:

  • automatyske systeem gearkomste yn TeamCity;
  • it proses fan it uploaden fan koade fia MergeRequest fan 'e funksje-tûke nei de mastertûke yn GitLab is konfigureare (ûntwikkelingsproses neffens GitHub Flow);
  • SonarQube, konfigureare om koade te analysearjen foar it DPO-systeem op in skema.

Ús doel: ymplemintearje automatyske koade analyze yn CI / CD prosessen fan DPO.

Moatte konfigurearje: it proses fan automatysk kontrolearjen fan koade mei in statyske analysator mei elke MergeRequest nei de haadtûke.

Dy. It doelôfbylding is as folget: sa gau as de ûntwikkelder feroaringen uploadt nei de funksje-tûke, wurdt in automatyske kontrôle foar nije flaters yn 'e koade lansearre. As der gjin flaters binne, dan meie de wizigingen akseptearre wurde, oars moatte de flaters korrizjearre wurde. Al yn 'e earste faze kinne wy ​​​​in bepaald oantal flaters yn' e koade identifisearje. It systeem hat heul fleksibele ynstellings: it kin sa ynsteld wurde dat it wurket foar de spesifike taken fan ûntwikkelders, foar elk systeem en programmearringstyl.

QualityGate ynstelle yn SonarQube

QualityGate-analyse is wat wy lêze yn 'e djipten fan it ynternet. Yn it earstoan brûkten wy in oare oanpak, komplekser en, op guon manieren, net hielendal korrekt. Earst hawwe wy de scan twa kear útfierd fia SonarQube: wy skennen de funksje-tûke en de tûke wêr't wy de funksje-tûke soene fusearje, en fergelike dan it oantal flaters. Dizze metoade wie net stabyl en produsearre net altyd it goede resultaat. En doe fûnen wy út dat ynstee fan SonarQube twa kear út te fieren, kinne wy ​​​​in limyt ynstelle op it oantal makke flaters (QualityGate) en allinich de tûke analysearje dy't jo uploade en fergelykje.

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

Foar no brûke wy noch in frij primitive koaderesinsje. It is de muoite wurdich op te merken dat SonarQube net kompatibel is mei guon programmeartalen, ynklusyf Delphi. Op it stuit analysearje wy allinich PLSql-koade foar ús systeem.

It wurket sa:

  • Wy analysearje allinich PL / SQL-koade foar ús projekt.
  • SonarQube hat QualityGate konfigurearre sadat it oantal flaters net tanimme mei in commit.
  • It oantal flaters by de earste lansearring wie 229. As d'r mear flaters binne tidens in commit, dan is fúzje net tastien.
  • Fierder, as flaters wurde korrizjearre, sil it mooglik wêze om QualityGate opnij te konfigurearjen.
  • Jo kinne ek tafoegje nije punten foar analyze, Bygelyks, koade dekking mei tests, etc.

Skema fan wurk:

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

De opmerkings fan it skript litte sjen dat it oantal flaters yn 'e funksje-tûke net ferhege is. Dus alles is OK.

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

De knop Merge wurdt beskikber.

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

Yn 'e opmerkings fan it skript kinne jo sjen dat it oantal flaters yn' e funksje-tûke mear as akseptabel wurden is. Dus alles is BAD.

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

De Merge knop is read. Op it stuit is d'r gjin ferbod op it uploaden fan wizigingen basearre op ferkearde koade, mar dit wurdt dien nei it goedtinken fan 'e ferantwurdlike ûntwikkelder. Yn 'e takomst kinne jo foarkomme dat sokke commits wurde tafoege oan' e haadtûke.

Hoe't wy SonarQube ymplementearre en har grutte potensjeel realisearre

Unôfhinklik wurk op flaters

Dêrnei moatte jo alle flaters kontrolearje dy't troch it systeem ûntdutsen binne, om't SonarQube analysearret neffens har strikte noarmen. Wat hy as in flater beskôget, kin eins net ien wêze yn ús koade. Dêrom moatte jo kontrolearje en notearje oft dit echt in flater is, of dat it net nedich is om te bewurkjen yn ús betingsten. Op dizze manier ferminderje wy it oantal flaters. Nei ferrin fan tiid, it systeem sil leare te begripen dizze nuânses.

Wat binne wy ​​oankommen

Us doel wie om te begripen oft it yn ús gefal oan te rieden is om koadebeoardieling oer te setten nei automatisearring. En it resultaat foldie oan ferwachtingen. SonarQube lit ús wurkje mei de talen dy't wy nedich binne, docht frij kompetinte analyse, en hat it potensjeel om te learen fan tips foar ûntwikkelders. Oer it algemien binne wy ​​bliid mei ús earste ûnderfining mei it brûken fan SonarQube en binne fan plan om fierder te ûntwikkeljen yn dizze rjochting. Wy ferwachtsje dat wy yn 'e takomst mear tiid en muoite kinne besparje op koadebeoardieling en it better meitsje troch de minsklike faktor te eliminearjen. Miskien sille wy yn it proses de tekoarten fan it platfoarm ûntdekke of, oarsom, sille wy opnij oertsjûge wurde dat dit in cool ding is mei in grut potensjeel.

Yn dit resinsjeartikel hawwe wy praat oer ús kunde mei de SonarQube statyske analysator. As jo ​​​​fragen hawwe, skriuw dan yn 'e kommentaren. As jo ​​​​ynteressearre binne yn dit ûnderwerp, sille wy yn in nije publikaasje yn mear detail beskriuwe hoe't jo alles goed kinne ynstelle en koade skriuwe om sa'n kontrôle te dwaan.

Tekst skriuwer: atanya

Boarne: www.habr.com

Add a comment