Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

Radi by sme sa podelili o naše skúsenosti s implementáciou platformy pre kontinuálnu analýzu a meranie kvality kódu SonarQube do existujúcich procesov vývoja systému DPO (doplnok k systému depozitára a zúčtovania Alameda) Národného zúčtovacieho depozitára.

National Settlement Depository (skupina spoločností na moskovskej burze) je jednou z kľúčových spoločností v oblasti finančnej infraštruktúry, ktorá uchováva a eviduje cenné papiere ruských a zahraničných emitentov v hodnote viac ako 50 biliónov rubľov. Rastúci objem operácií vykonávaných systémom, ako aj neustále zvyšovanie funkčnosti si vyžadujú zachovanie vysokej kvality zdrojového kódu systémov. Jedným z nástrojov na dosiahnutie tohto cieľa je statický analyzátor SonarQube. V tomto článku popisujeme úspešné skúsenosti s bezproblémovou implementáciou statického analyzátora SonarQube do existujúcich vývojových procesov nášho oddelenia.

Stručne o oddelení

Naša kompetencia zahŕňa nasledujúce moduly: platby klientom NSD, elektronická správa dokumentov (EDF), spracovanie správ archívu obchodných údajov (evidencia mimoburzových transakcií), kanály elektronickej interakcie medzi klientmi a NSD a mnohé ďalšie. Vo všeobecnosti veľká vrstva práce na technickej stránke prevádzky. Pracujeme na základe aplikácií. Aplikácie pokladní spracovávajú analytici: zbierajú požiadavky zákazníkov a prezentujú nám svoju víziu, ako by to malo zapadnúť do programu. Ďalej štandardná schéma: vývoj kódu - testovanie - skúšobná prevádzka - dodanie kódu do výrobného okruhu priamemu zákazníkovi.

Prečo práve SonarQube?

Ide o prvú skúsenosť nášho oddelenia s implementáciou platformy na kontrolu kvality kódu – predtým sme to robili manuálne, iba kontrola kódu. Rastúci objem práce si však vyžaduje automatizáciu tohto procesu. Okrem toho sú v tíme aj neskúsení zamestnanci, ktorí nie sú úplne oboznámení s internými vývojovými predpismi a majú tendenciu robiť viac chýb. Na kontrolu kvality kódu bolo rozhodnuté implementovať statický analyzátor. Keďže SonarQube už bol použitý v niektorých systémoch NSD, výber netrval dlho. Predtým ho kolegovia z iných divízií používali na analýzu kódu mikroslužieb v systéme Alameda (vlastný depozitný a zúčtovací účtovný systém NSD), v CFT (informačný systém pre účtovníctvo, bilanciu, prípravu povinného a interného výkazníctva), v niektorých ďalších systémy . Pre experimentovanie sme sa rozhodli začať s bezplatnou verziou SonarQube. Prejdime teda k nášmu prípadu.

Proces implementácie

Máme:

  • automatická montáž systému v TeamCity;
  • nastaviť proces nahrávania kódu cez MergeRequest z vetvy funkcií do hlavnej vetvy v GitLab (proces vývoja podľa GitHub Flow);
  • SonarQube nakonfigurovaný tak, aby analyzoval kód pre systém DPO podľa plánu.

Náš cieľ: implementovať automatickú analýzu kódu v CI/CD procesoch AVE.

Treba prispôsobiť: proces automatickej kontroly kódu statickým analyzátorom s každou požiadavkou MergeRequest do hlavnej pobočky.

Tie. cieľový obrázok je nasledovný: akonáhle vývojár nahrá zmeny do vetvy funkcií, spustí sa automatická kontrola nových chýb v kóde. Ak nie sú žiadne chyby, zmeny môžu byť prijaté, inak bude potrebné chyby opraviť. Už v počiatočnej fáze sme boli schopní identifikovať určitý počet chýb v kóde. Systém má veľmi flexibilné nastavenia: dá sa nakonfigurovať tak, aby fungoval pre špecifické úlohy vývojárov, pre každý systém a štýl programovania.

Konfigurácia QualityGate v SonarQube

Analýza QualityGate je vec, ktorú čítame v útrobách internetu. Spočiatku sme používali iný prístup, zložitejší a v niektorých smeroch nie úplne správny. Najprv sme dvakrát spustili skenovanie cez SonarQube: naskenovali sme vetvu funkcií a vetvu, kde sme chceli zlúčiť vetvu funkcií, a potom sme porovnali počet chýb. Táto metóda nebola stabilná a nie vždy poskytovala správny výsledok. A potom sme sa dozvedeli, že namiesto spustenia SonarQube dvakrát, môžete nastaviť limit počtu vykonaných chýb (QualityGate) a analyzovať iba vetvu, ktorú nahráte a porovnáte.

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

Zatiaľ stále používame pomerne primitívnu kontrolu kódu. Treba poznamenať, že SonarQube nie je kompatibilný s niektorými programovacími jazykmi, vrátane Delphi. V súčasnosti pre náš systém analyzujeme iba kód PLSql.

Funguje to takto:

  • Pre náš projekt analyzujeme iba PL/SQL kód.
  • QualityGate je v SonarQube nakonfigurovaný tak, aby sa počet chýb s odovzdaním nezvyšoval.
  • Počet chýb pri prvom spustení bol 229. Ak sa počas odovzdania vyskytne viac chýb, zlúčenie nie je povolené.
  • Ďalej, po oprave chýb, bude možné prekonfigurovať QualityGate.
  • Môžete tiež pridať nové položky na analýzu, napríklad pokrytie kódu pomocou testov atď.

Schéma práce:

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

V komentároch skriptu môžete vidieť, že počet chýb vo vetve funkcií sa nezvýšil. Takže všetko je v poriadku.

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

Sprístupní sa tlačidlo Zlúčiť.

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

V komentároch k skriptu môžete vidieť, že počet chýb vo vetve funkcií je viac ako povolený. Takže všetko je ZLE.

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

Tlačidlo Zlúčiť je červené. V súčasnosti neexistuje žiadny zákaz nahrávania zmien chybného kódu, ale to sa deje podľa uváženia zodpovedného vývojára. V budúcnosti môžete zabrániť tomu, aby sa takéto príkazy vykonávali na hlavnej pobočke.

Ako sme implementovali SonarQube a uvedomili si jeho veľký potenciál

Samostatné zaobchádzanie s chybami

Ďalej musíte skontrolovať všetky chyby zistené systémom, pretože SonarQube analyzuje podľa svojich prísnych noriem. To, čo považuje za chybu, v skutočnosti nemusí byť v našom kóde. Preto si treba skontrolovať a poznamenať, či ide naozaj o chybu, alebo či netreba upravovať v našich podmienkach. Znížime tak počet chýb. Postupom času sa systém naučí chápať tieto nuansy.

K čomu sme dospeli

Naším cieľom bolo pochopiť, či je v našom prípade účelné preniesť overovanie kódu do automatizácie. A výsledok splnil očakávania. SonarQube nám umožňuje pracovať s jazykmi, ktoré potrebujeme, robí pomerne kompetentnú analýzu a má potenciál učiť sa z tipov pre vývojárov. Vo všeobecnosti sme spokojní s našou prvou skúsenosťou so SonarQube a plánujeme sa v tomto smere ďalej rozvíjať. Očakávame, že v budúcnosti budeme môcť ušetriť viac času a úsilia pri kontrole kódu a zlepšiť ho odstránením ľudského faktora. Snáď v priebehu odhalíme nedostatky platformy, alebo sa naopak ešte raz presvedčíme, že ide o vychytávku s veľkým potenciálom.

V tomto prehľadnom článku sme hovorili o našom zoznámení sa so statickým analyzátorom SonarQube. Ak máte otázky, píšte do komentárov. Ak vás táto téma zaujala, v novej publikácii si podrobnejšie popíšeme, ako všetko správne nastaviť a napísať kód na vykonanie takejto kontroly.

Autor textu: atanya

Zdroj: hab.com

Pridať komentár