Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

Vulemu sparte a nostra sperienza di implementà una piattaforma per l'analisi continua è a misurazione di a qualità di u codice SonarQube in i prucessi esistenti per u sviluppu di u sistema DPO (un aghjuntu à u sistema di depositariu Alameda è di cuntabilità di clearing) di u Depositu Naziunale di Settlement.

U Dipositariu Naziunale di Settlement (Gruppu di Cumpagnia di u Scambio di Mosca) hè una di e cumpagnie chjave di l'infrastruttura finanziaria chì guarda è registra i titoli di emittenti russi è stranieri per un valore di più di 50 trilioni di rubli. U voluminu crescente di l'operazioni realizati da u sistema, cum'è l'aumentu cuntinuu di e funziunalità, esigenu mantene l'alta qualità di u codice fonte di i sistemi. Unu di l'arnesi per ottene stu scopu hè l'analizzatore staticu SonarQube. In questu articulu, descrivimu l'esperienza di successu di implementà senza saldatura l'analizzatore staticu SonarQube in i prucessi di sviluppu esistenti di u nostru dipartimentu.

In breve nantu à u dipartimentu

A nostra cumpetenza include i seguenti moduli: pagamenti à i clienti NSD, gestione di documenti elettronichi (EDF), trattamentu di messagi di repository di cummerciale (registrazione di transazzioni off-exchange), canali d'interazione elettronica trà i clienti è NSD, è assai di più. In generale, una grande capa di travagliu nantu à u latu tecnicu di l'operazioni. Travagliemu nantu à a basa di l'applicazioni. L'applicazioni di i teller sò trattate da l'analista: cullighjanu i bisogni di i clienti è ci prisentanu a so visione di cumu si deve inserisce in u prugramma. In più, u schema standard: sviluppu di codice - prova - operazione di prova - consegna di u codice à u circuitu produtivu à u cliente direttu.

Perchè SonarQube?

Questa hè a prima sperienza di u nostru dipartimentu in l'implementazione di una piattaforma per u cuntrollu di qualità di codice - prima avemu fattu manualmente, solu rivisione di codice. Ma u voluminu crescente di travagliu richiede l'automatizazione di stu prucessu. Inoltre, ci sò ancu impiegati inexperienced in a squadra chì ùn sò micca sanu sanu familiarizati cù i reguli di sviluppu internu è tendenu à fà più sbagli. Per cuntrullà a qualità di u codice, hè statu decisu di implementà un analizatore staticu. Siccomu SonarQube hè digià statu utilizatu in certi sistemi NSD, ùn hà micca pigliatu assai per sceglie. Nanzu, i culleghi di l'altri divisioni l'anu utilizatu per analizà u codice di i microservizi in u sistema Alameda (sistema di cuntabilità di depositu di NSD è di clearing), in u CFT (sistema d'infurmazione per a contabilità, equilibriu, preparazione di rapportu obligatoriu è internu), in qualchì altru. sistemi. Per a sperimentazione, avemu decisu di principià cù a versione libera di SonarQube. Allora andemu à u nostru casu.

Prucessu di implementazione

Avemu:

  • assemblea automatica di u sistema in TeamCity;
  • cunfigurà u prucessu di uploading code via MergeRequest da un ramu di funziunalità à u ramu maestru in GitLab (processu di sviluppu secondu GitHub Flow);
  • SonarQube cunfiguratu per analizà u codice per u sistema DPO in u calendariu.

U nostru scopu: implementà l'analisi automatica di codice in i prucessi CI/CD di AVE.

Hè bisognu di persunalizà: u prucessu di verificà automaticamente u codice da un analizatore staticu cù ogni MergeRequest à u ramu principale.

Quelli. a stampa di destinazione hè a siguenti: appena u sviluppatore carica cambiamenti in u ramu di funziunalità, un cuntrollu automaticu per novi errori in u codice principia. Se ùn ci sò micca errori, i cambiamenti sò permessi per esse accettati, altrimente l'errori anu da esse curretti. Dighjà in u stadiu iniziale, avemu pussutu identificà un certu nùmeru di errore in u codice. U sistema hà paràmetri assai flexibuli: pò esse cunfigurati in modu cusì chì travaglia per compiti specifichi di sviluppatori, per ogni sistema è stile di prugrammazione.

Configurazione di QualityGate in SonarQube

L'analisi QualityGate hè una cosa chì avemu lettu in l'intestini di Internet. In principiu, avemu usatu un approcciu differente, più cumplessu è in qualchì manera micca abbastanza currettu. Prima, avemu scansatu à traversu SonarQube duie volte: avemu scansatu u ramu di funziunalità è u ramu induve andava à unisce u ramu di funziunalità, è dopu avemu paragunatu u numeru di errori. Stu metudu ùn era micca stabile è ùn hà micca sempre datu u risultatu currettu. E poi avemu amparatu chì invece di eseguisce SonarQube duie volte, pudete stabilisce un limitu in u numeru di errori fatti (QualityGate) è analizà solu u ramu chì caricate è paragunate.

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

Per avà, avemu sempre aduprà un cuntrollu di codice piuttostu primitivu. Hè da nutà chì SonarQube ùn hè micca cumpatibile cù certi linguaggi di prugrammazione, cumpresu Delphi. À u mumentu, per u nostru sistema, analizemu solu u codice PLSql.

Funziona cusì:

  • Analizemu solu u codice PL / SQL per u nostru prughjettu.
  • QualityGate hè cunfiguratu in SonarQube per chì u nùmeru d'errori ùn aumenta micca cù l'impegnu.
  • U numaru d'errori in a prima corsa era 229. Se ci sò più errori durante l'impegnu, allora a fusione ùn hè micca permessa.
  • In più, sottumessu à a correzione di l'errori, serà pussibule ricunfigurà QualityGate.
  • Pudete ancu aghjunghje novi elementi per l'analisi, per esempiu, a cobertura di codice cù testi, etc.

Schema di travagliu:

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

In i cumenti di u script, pudete vede chì u nùmeru d'errori in u ramu di funziunalità ùn hè micca aumentatu. Allora tuttu hè bè.

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

U buttone Merge diventa dispunibule.

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

In i cumenti di u script, pudete vede chì u numeru di errori in u ramu di funziunalità hè diventatu più di permessu. Allora tuttu hè BAD.

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

U buttone Merge hè rossu. À u mumentu, ùn ci hè micca pruibizione di uploading cambiamenti à u codice erratu, ma questu hè fattu à a discrezione di u sviluppatore rispunsevule. In u futuru, pudete prevene tali impegni da esse fatti à u ramu principale.

Cumu avemu implementatu SonarQube è realizatu u so grande putenziale

Trattamentu stessu cù i bug

In seguitu, avete bisognu di verificà tutti l'errori rilevati da u sistema, perchè SonarQube analizà secondu i so standard stretti. Ciò chì cunsidereghja un errore ùn pò micca esse veramente unu in u nostru codice. Dunque, avete bisognu di verificà è nutà s'ellu hè veramente un sbagliu, o s'ellu ùn hè micca bisognu di edità in i nostri cundizioni. Cusì, riducemu u numeru di errori. À u tempu, u sistema hà da amparà à capisce sti sfumature.

Chì avemu ghjuntu

U nostru scopu era di capisce s'ellu hè conveniente in u nostru casu di trasfiriri a verificazione di codice à l'automatizazione. Et le résultat a été à la hauteur des attentes. SonarQube ci permette di travaglià cù e lingue chì avemu bisognu, face una analisi abbastanza cumpetente, è hà u putenziale di amparà da i cunsiglii di sviluppatori. In generale, simu cuntenti di a nostra prima sperienza cù SonarQube è prughjettanu di sviluppà più in questa direzzione. Aspittemu chì in u futuru puderemu salvà più tempu è sforzu nantu à a revisione di u codice è facenu megliu eliminendu u fattore umanu. Forsi in u prucessu scupreremu i difetti di a piattaforma, o, à u cuntrariu, avemu da assicurà una volta di più chì questu hè una cosa fresca cù un grande putenziale.

In questu articulu generale, avemu parlatu di a nostra cunniscenza cù l'analizzatore staticu SonarQube. Sì avete dumande, scrivite in i cumenti. Sè vo site interessatu in questu tema, in a nova publicazione, descriveremu in più dettagliu cumu si stallanu tuttu bè è scrive u codice per fà un tali cuntrollu.

Auteur du texte : atanya

Source: www.habr.com

Add a comment