Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

Ni ŝatus kunhavigi nian sperton pri efektivigo de platformo por kontinua analizo kaj mezurado de la kvalito de la SonarQube-kodo en la ekzistantajn procezojn por disvolvi la DPO-sistemon (aldonon al la Alameda-deponejo kaj klariganta kontada sistemo) de la Nacia Kompromisa Deponejo.

La Nacia Konstanta Deponejo (Moskva Interŝanĝa Grupo de Firmaoj) estas unu el la ĉefaj financaj infrastrukturaj kompanioj, kiu stokas kaj registras valorpaperojn de rusaj kaj eksterlandaj emisiantoj kun valoro de pli ol 50 bilionoj da rubloj. La kreskanta volumo de operacioj faritaj de la sistemo, same kiel la kontinua pliiĝo de funkcieco, postulas konservi la altan kvaliton de la fontkodo de la sistemoj. Unu el la iloj por atingi ĉi tiun celon estas la statika analizilo SonarQube. En ĉi tiu artikolo ni priskribos la sukcesan sperton de perfekte efektivigi la statikan analizilon SonarQube en la ekzistantajn evoluajn procezojn de nia fako.

Mallonge pri la fako

Nia kompetenteco inkluzivas la jenajn modulojn: pagoj al NSD-klientoj, elektronika dokumenta administrado (EDF), prilaborado de komercaj deponejoj (registrado de senreceptaj transakcioj), kanaloj de elektronika interago inter klientoj kaj NSD, kaj multe pli. Ĝenerale, estas multe da laboro farenda sur la teknika flanko de operaciaj agadoj. Ni laboras surbaze de aplikoj. Aplikoj de operaciaj oficiroj estas traktataj de analizistoj: ili kolektas la postulojn de la kliento kaj prezentas al ni sian vizion pri kiel ĝi devus konveni en la programo. Sekva estas la norma skemo: koda evoluo - provado - prova operacio - livero de la kodo al la produktadcirkvito al la rekta kliento.

Kial SonarQube?

Ĉi tio estas la unua sperto de nia fako en efektivigo de platformo por koda kvalitkontrolo - antaŭe ni faris ĝin permane, nur koda revizio. Sed la kreskanta volumeno de laboro postulas aŭtomatigon de ĉi tiu procezo. Krome, estas ankaŭ nespertaj dungitoj en la teamo, kiuj ne tute konas internajn disvolvajn regularojn kaj emas fari pli da eraroj. Por kontroli la kvaliton de la kodo, oni decidis efektivigi senmovan analizilon. Ĉar SonarQube jam estis uzata en iuj NSD-sistemoj, la elekto ne bezonis longe. Antaŭe, kolegoj de aliaj dividoj uzis ĝin por analizi la kodon de mikroservoj en la Alameda sistemo (la propra deponejo kaj klarigkontadsistemo de NSD), en la CFT (informsistemo por kontado, bilanco, preparado de deviga kaj interna raportado), en iu alia. sistemoj. Por eksperimentado, ni decidis komenci per la senpaga versio de SonarQube. Do ni transiru al nia kazo.

Procezo de efektivigo

Ni havas:

  • aŭtomata muntado de la sistemo en TeamCity;
  • starigu la procezon de alŝuto de kodo per MergeRequest de trajtobranĉo al la majstra branĉo en GitLab (procezo de disvolviĝo laŭ GitHub Flow);
  • SonarQube agordita por analizi la kodon por la DPO-sistemo laŭhoraro.

Nia celo: efektivigi aŭtomatan kodan analizon en CI/KD-procezoj de DPO.

Necesas agordi: la procezo aŭtomate kontroli la kodon per senmova analizilo kun ĉiu MergeRequest al la ĉefa branĉo.

Tiuj. La cela bildo estas jena: tuj kiam la programisto alŝutas ŝanĝojn al la ĉefbranĉo, aŭtomata kontrolo pri novaj eraroj en la kodo estas lanĉita. Se ne estas eraroj, tiam la ŝanĝoj rajtas esti akceptitaj, alie la eraroj devos esti korektitaj. Jam en la komenca etapo, ni povis identigi certan nombron da eraroj en la kodo. La sistemo havas tre flekseblajn agordojn: ĝi povas esti agordita tiel, ke ĝi funkcias por specifaj taskoj de programistoj, por ĉiu sistemo kaj programa stilo.

Agordi QualityGate en SonarQube

QualityGate-analizo estas io, kion ni legas en la profundo de la Interreto. Komence, ni uzis alian aliron, pli kompleksan kaj, iel, ne tute ĝustan. Unue, ni trakuris la skanadon tra SonarQube dufoje: ni skanis la trajtobranĉon kaj la branĉon kie ni kunfandos la trajtobranĉon, kaj poste ni komparis la nombron da eraroj. Ĉi tiu metodo ne estis stabila kaj ne ĉiam donis la ĝustan rezulton. Kaj tiam ni eksciis, ke anstataŭ ruli SonarQube dufoje, vi povas agordi limon de la nombro de faritaj eraroj (QualityGate) kaj analizi nur la branĉon, kiun vi alŝutas kaj komparas.

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

Nuntempe, ni ankoraŭ uzas sufiĉe primitivan kodkontrolon. Indas noti, ke SonarQube ne kongruas kun iuj programlingvoj, inkluzive de Delphi. Nuntempe, por nia sistemo, ni analizas nur PLSql-kodon.

Ĝi funkcias tiel:

  • Ni analizas nur PL/SQL-kodon por nia projekto.
  • QualityGate estas agordita en SonarQube tiel ke la nombro da eraroj ne pliiĝas kun la kommit.
  • La nombro da eraroj dum la unua kuro estis 229. Se estas pli da eraroj dum la transdono, tiam kunfandi ne estas permesita.
  • Plue, kondiĉe de la korekto de eraroj, eblos reagordi QualityGate.
  • Vi ankaŭ povas aldoni novajn punktojn por analizo, ekzemple, koda kovrado kun testoj, ktp.

Skemo de laboro:

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

En la komentoj de la skripto, vi povas vidi, ke la nombro da eraroj en la ĉefbranĉo ne pliiĝis. Do ĉio estas en ordo.

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

La Kunfandi butonon fariĝas disponebla.

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

En la komentoj de la skripto, vi povas vidi, ke la nombro da eraroj en la ĉefbranĉo fariĝis pli ol permesita. Do ĉio estas MALBONA.

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

La Kunfandi butonon estas ruĝa. Nuntempe ne estas malpermeso alŝuti ŝanĝojn al erara kodo, sed tio estas farita laŭ la bontrovo de la respondeca programisto. Estontece, vi povas malhelpi tiajn kommitaĵojn aldoniĝi al la ĉefa branĉo.

Kiel ni efektivigis SonarQube kaj realigis ĝian grandan potencialon

Memtraktado de cimoj

Poste, vi devas kontroli ĉiujn erarojn detektitaj de la sistemo, ĉar SonarQube analizas laŭ siaj striktaj normoj. Kion li konsideras eraro eble fakte ne estas unu en nia kodo. Tial vi devas kontroli kaj noti ĉu tio vere estas eraro, aŭ ĉu ne necesas redakti en niaj kondiĉoj. Tiel, ni reduktas la nombron da eraroj. Kun la tempo, la sistemo lernos kompreni ĉi tiujn nuancojn.

Al kio ni venis

Nia celo estis kompreni, ĉu en nia kazo estus konsilinde transdoni kodan revizion al aŭtomatigo. Kaj la rezulto estis laŭ la atendoj. SonarQube permesas al ni labori kun la lingvoj, kiujn ni bezonas, faras sufiĉe kompetentajn analizojn kaj havas la eblon lerni de konsiloj por programistoj. Ĝenerale, ni ĝojas pri nia unua sperto uzante SonarQube kaj planas disvolvi plu en ĉi tiu direkto. Ni atendas, ke estonte ni povos ŝpari pli da tempo kaj peno pri koda revizio kaj plibonigi ĝin per forigo de la homa faktoro. Eble en la procezo ni malkovros la mankojn de la platformo aŭ, male, ni konvinkiĝos denove, ke ĉi tio estas bonega afero kun granda potencialo.

En ĉi tiu revizia artikolo ni parolis pri nia konato kun la statika analizilo SonarQube. Se vi havas demandojn, bonvolu skribi en la komentoj. Se vi interesiĝas pri ĉi tiu temo, en nova eldonaĵo ni priskribos pli detale kiel agordi ĉion ĝuste kaj skribi kodon por fari tian kontrolon.

Teksto aŭtoro: atanya

fonto: www.habr.com

Aldoni komenton