Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Rydym am rannu ein profiad o weithredu platfform SonarQube ar gyfer dadansoddi a mesur ansawdd cod yn barhaus ym mhrosesau datblygu presennol y system DPO (yn ogystal â system gyfrifo adneuo a chlirio Alameda) y Storfa Setliad Cenedlaethol.

Mae'r Storfa Setliad Cenedlaethol (grŵp cwmnïau Cyfnewid Moscow) yn un o'r cwmnïau allweddol yn y seilwaith ariannol, sy'n storio ac yn cyfrif am warantau cyhoeddwyr Rwsiaidd a thramor sy'n werth mwy na 50 triliwn rubles. Mae'r nifer cynyddol o weithrediadau a wneir gan y system, yn ogystal ag ehangu ymarferoldeb yn barhaus, yn gofyn am gynnal cod ffynhonnell ansawdd uchel y systemau. Un offeryn i gyflawni'r nod hwn yw'r dadansoddwr statig SonarQube. Yn yr erthygl hon byddwn yn disgrifio'r profiad llwyddiannus o weithredu'r dadansoddwr statig SonarQube yn ddi-dor ym mhrosesau datblygu presennol ein hadran.

Yn fyr am yr adran

Mae ein cymhwysedd yn cynnwys y modiwlau canlynol: taliadau i gleientiaid NSD, rheoli dogfennau electronig (EDF), prosesu negeseuon storfeydd masnach (cofrestru trafodion dros y cownter), sianeli rhyngweithio electronig rhwng cleientiaid ac NSD, a llawer mwy. Yn gyffredinol, mae llawer o waith i'w wneud ar ochr dechnegol gweithgareddau gweithredol. Rydym yn gweithio ar sail ceisiadau. Mae ceisiadau gan swyddogion gweithrediadau yn cael eu prosesu gan ddadansoddwyr: maen nhw'n casglu gofynion y cwsmer ac yn cyflwyno eu gweledigaeth i ni o sut y dylai ffitio i mewn i'r rhaglen. Nesaf yw'r cynllun safonol: datblygu cod - profi - gweithrediad treial - danfon y cod i'r gylched gynhyrchu i'r cwsmer uniongyrchol.

Pam SonarQube?

Dyma brofiad cyntaf ein hadran wrth weithredu llwyfan ar gyfer rheoli ansawdd cod - yn flaenorol fe wnaethom ni â llaw, gan gynnal adolygiadau cod yn unig. Ond mae maint cynyddol y gwaith yn gofyn am awtomeiddio'r broses hon. Yn ogystal, mae'r tîm hefyd yn cynnwys gweithwyr dibrofiad nad ydynt yn gwbl gyfarwydd â rheoliadau datblygu mewnol ac sy'n tueddu i wneud mwy o gamgymeriadau. Er mwyn rheoli ansawdd y cod, penderfynwyd gweithredu dadansoddwr statig. Gan fod SonarQube eisoes wedi'i ddefnyddio mewn rhai systemau NSD, ni chymerodd lawer o amser i'w ddewis. Yn flaenorol, roedd cydweithwyr o adrannau eraill yn ei ddefnyddio i ddadansoddi'r cod microservices yn system Alameda (system gyfrifo adneuo a chlirio NSD ei hun), yn CFT (system wybodaeth ar gyfer cynnal cyfrifyddu, mantolenni, paratoi adroddiadau gorfodol a mewnol), mewn rhai systemau eraill. Ar gyfer arbrofion, fe benderfynon ni ddechrau gyda'r fersiwn am ddim o SonarQube. Felly gadewch i ni symud ymlaen at ein hachos.

Proses weithredu

Mae gennym ni:

  • cynulliad system awtomatig yn TeamCity;
  • mae'r broses o uwchlwytho cod trwy MergeRequest o'r gangen nodwedd i'r brif gangen yn GitLab wedi'i ffurfweddu (proses ddatblygu yn ôl GitHub Flow);
  • SonarQube, wedi'i ffurfweddu i ddadansoddi cod ar gyfer y system DPO ar amserlen.

Ein nod: gweithredu dadansoddiad cod awtomatig ym mhrosesau CI/CD y DPO.

Angen ffurfweddu: y broses o wirio cod yn awtomatig gyda dadansoddwr statig gyda phob MergeRequest i'r brif gangen.

Y rhai. Mae'r llun targed fel a ganlyn: cyn gynted ag y bydd y datblygwr yn uwchlwytho newidiadau i'r gangen nodwedd, caiff gwiriad awtomatig am wallau newydd yn y cod ei lansio. Os nad oes unrhyw wallau, yna caniateir i'r newidiadau gael eu derbyn, fel arall bydd yn rhaid cywiro'r gwallau. Eisoes yn y cam cychwynnol roeddem yn gallu nodi nifer penodol o wallau yn y cod. Mae gan y system leoliadau hyblyg iawn: gellir ei ffurfweddu yn y fath fodd fel ei fod yn gweithio ar gyfer tasgau penodol datblygwyr, ar gyfer pob system ac arddull rhaglennu.

Sefydlu QualityGate yn SonarQube

Dadansoddiad QualityGate yn rhywbeth yr ydym yn darllen yn nyfnderoedd y Rhyngrwyd. I ddechrau, gwnaethom ddefnyddio dull gwahanol, mwy cymhleth ac, mewn rhai ffyrdd, nid yw'n gwbl gywir. Yn gyntaf, gwnaethom redeg y sgan ddwywaith trwy SonarQube: fe wnaethom sganio'r gangen nodwedd a'r gangen lle roeddem yn mynd i uno'r gangen nodwedd, ac yna cymharu nifer y gwallau. Nid oedd y dull hwn yn sefydlog ac nid oedd bob amser yn cynhyrchu'r canlyniad cywir. Ac yna fe wnaethom ddarganfod, yn lle rhedeg SonarQube ddwywaith, y gallwn osod terfyn ar nifer y gwallau a wnaed (QualityGate) a dadansoddi dim ond y gangen rydych chi'n ei huwchlwytho a'i chymharu.

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Am y tro rydym yn dal i ddefnyddio adolygiad cod eithaf cyntefig. Mae'n werth nodi nad yw SonarQube yn gydnaws â rhai ieithoedd rhaglennu, gan gynnwys Delphi. Ar hyn o bryd, rydym yn dadansoddi cod PLSql yn unig ar gyfer ein system.

Mae'n gweithio fel hyn:

  • Rydym yn dadansoddi cod PL/SQL yn unig ar gyfer ein prosiect.
  • Mae gan SonarQube QualityGate wedi'i ffurfweddu fel nad yw nifer y gwallau yn cynyddu gydag ymrwymiad.
  • Nifer y gwallau yn y lansiad cyntaf oedd 229. Os oes mwy o wallau yn ystod ymrwymiad, ni chaniateir uno.
  • Ymhellach, os caiff gwallau eu cywiro, bydd yn bosibl ad-drefnu QualityGate.
  • Gallwch hefyd ychwanegu pwyntiau newydd i'w dadansoddi, er enghraifft, cwmpas cod gyda phrofion, ac ati.

Cynllun gwaith:

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Mae sylwadau'r sgript yn dangos nad yw nifer y gwallau yn y gangen nodwedd wedi cynyddu. Felly mae popeth yn iawn.

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Daw'r botwm Cyfuno ar gael.

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Yn sylwadau'r sgript, gallwch weld bod nifer y gwallau yn y gangen nodwedd wedi dod yn fwy na derbyniol. Felly mae popeth yn DRWG.

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Mae'r botwm Cyfuno yn goch. Ar hyn o bryd, nid oes unrhyw waharddiad ar uwchlwytho newidiadau yn seiliedig ar god gwallus, ond gwneir hyn yn ôl disgresiwn y datblygwr cyfrifol. Yn y dyfodol, gallwch atal ymrwymiadau o'r fath rhag cael eu hychwanegu at y brif gangen.

Sut y gwnaethom weithredu SonarQube a gwireddu ei botensial mawr

Gwaith annibynnol ar gamgymeriadau

Nesaf, mae angen i chi wirio'r holl wallau a ganfuwyd gan y system, oherwydd mae SonarQube yn dadansoddi yn unol â'i safonau llym. Efallai nad yw'r hyn y mae'n ei ystyried yn gamgymeriad yn un yn ein cod mewn gwirionedd. Felly, mae angen i chi wirio a nodi a yw hwn yn gamgymeriad mewn gwirionedd, neu a oes angen golygu yn ein hamodau. Fel hyn rydym yn lleihau nifer y gwallau. Dros amser, bydd y system yn dysgu deall yr arlliwiau hyn.

Beth ydyn ni wedi dod iddo

Ein nod oedd deall a fyddai'n ddoeth yn ein hachos ni i drosglwyddo adolygiad cod i awtomeiddio. Ac roedd y canlyniad yn cwrdd â'r disgwyliadau. Mae SonarQube yn ein galluogi i weithio gyda'r ieithoedd sydd eu hangen arnom, yn gwneud dadansoddiad gweddol gymwys, ac mae ganddo'r potensial i ddysgu o awgrymiadau datblygwyr. Ar y cyfan, rydym yn falch o'n profiad cyntaf o ddefnyddio SonarQube ac yn bwriadu datblygu ymhellach i'r cyfeiriad hwn. Disgwyliwn yn y dyfodol y byddwn yn gallu arbed mwy o amser ac ymdrech ar adolygu cod a'i wneud yn well trwy ddileu'r ffactor dynol. Efallai yn y broses y byddwn yn darganfod diffygion y platfform neu, i'r gwrthwyneb, byddwn yn argyhoeddedig unwaith eto bod hwn yn beth cŵl gyda photensial mawr.

Yn yr erthygl adolygu hon buom yn siarad am ein hadnabyddiaeth o ddadansoddwr statig SonarQube. Os oes gennych gwestiynau, ysgrifennwch y sylwadau. Os oes gennych ddiddordeb yn y pwnc hwn, mewn cyhoeddiad newydd byddwn yn disgrifio'n fanylach sut i osod popeth yn gywir ac ysgrifennu cod i wneud gwiriad o'r fath.

Awdur testun: atanya

Ffynhonnell: hab.com

Ychwanegu sylw