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.
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:
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.
Sprístupní sa tlačidlo Zlúčiť.
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.
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.
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:
Zdroj: hab.com