Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

Szeretnénk megosztani tapasztalatainkat a SonarQube kódminőség folyamatos elemzésére és mérésére szolgáló platform bevezetésével kapcsolatban, amelyet a DPO rendszer fejlesztési folyamataiba integráltunk (kiegészítés az "Alameda" letéti-kollégiumi nyilvántartási rendszerhez) a Nemzeti elszámolóházban.

A Nemzeti elszámolóház (a Moszkvai Tőzsde csoportja) a pénzügyi infrastruktúra egyik kulcsszereplője, amely több mint 50 ezer milliárd rubel értékű orosz és külföldi kibocsátók értékpapírjait tárolja és számolja el. A rendszeren végzett tranzakciók növekvő volumene, valamint a folyamatos funkcióbővülés megköveteli a rendszerek forráskódjának magas minőségének fenntartását. Ennek a célnak az elérésére az egyik eszköz a SonarQube statikus elemző. Ebben a cikkben bemutatjuk a SonarQube statikus elemző zökkenőmentes bevezetésének sikeres tapasztalatait a részlegünk fejlesztési folyamataiba.

Röviden a részlegről

Kompetenciánkba tartozik a következő modulok: kifizetések az NRD ügyfeleinek, elektronikus dokumentumforgalom (EDO), tőzsdei letéti rendszer üzeneteinek feldolgozása (tőzsdén kívüli ügyletek nyilvántartása), elektronikus kapcsolattartási csatornák az NRD ügyfelei és a vállalat között, és sok más. Összességében nagy területet képvisel a működés technikai oldalával kapcsolatos munka. Kérelem alapján dolgozunk. Az operátorok kéréseit az elemzők dolgozzák fel: ők összegyűjtik az ügyfél követelményeit, és bemutatják nekünk, hogy szerintük hogyan kellene a programba integrálni. A szokásos forgatókönyv: kódfejlesztés – tesztelés – próbaüzem – kód átadása a végfelhasználónak.

Miért éppen a SonarQube?

Ez az első tapasztalatunk a kódminőség-ellenőrző platform bevezetésében – korábban manuálisan végeztük ezt, csak kódellenőrzéseket végeztünk. De a növekvő munkamennyiség automatizálást igényel. Ezen kívül a csapatban vannak tapasztalatlan munkatársak is, akik nem ismerik teljesen a fejlesztési belső szabályokat, és hajlamosak több hibát elkövetni. A kódminőség ellenőrzésére úgy döntöttünk, hogy statikus elemzőt vezetünk be. Mivel a SonarQube már használták egyes NRD rendszerekben, így nem kellett sokat választanunk. Korábban a más osztályokból származó kollégák a mikroservice kódját elemezték a “Alameda” rendszerben (NRD sajátlet érdem-számláló-kliens rendszere), a CFT-ben (számviteli rendszer a könyvelés, egyensúly, kötelező és belső jelentések előkészítése szempontjából), és néhány más rendszerben. Kísérletekhez úgy döntöttünk, hogy a SonarQube ingyenes verziójával kezdünk. Tehát lépjünk tovább az esettanulmányunkra.

A bevezetési folyamat

Van egy:

  • automatikus rendszerépítés a TeamCity-ben;
  • be van állítva a kód feltöltése MergeRequest-en keresztül a feature-ágból a master-ágba a GitLab-ban (fejlesztési folyamat a GitHub Flow szerint);
  • SonarQube, amely a DPO rendszer kódanalízisére van beállítva ütemezés szerint.

Célunk: bevezetni a kód automatikus ellenőrzését a DPO CI/CD folyamatokban.

Be kell állítani: a kód automatikus ellenőrzési folyamatát statikus elemzővel minden MergeRequest esetén a fő ágba.

Tehát a célszerű helyzet a következő: amint a fejlesztő feltölti a módosításokat a feature-ágba, elindul az automatikus ellenőrzés az új hibákra a kódban. Ha nincsenek hibák, akkor engedélyezhetők a módosítások, ellenkező esetben javítani kell a hibákat. Már az első lépésben képesek voltunk meghatározott számú hibát felfedezni a kódban. A rendszer nagyon rugalmas beállításokkal rendelkezik: úgy konfigurálható, hogy a fejlesztők konkrét feladataihoz, minden rendszerhez és programozási stílushoz illeszkedjen.

A QualityGate beállítása a SonarQube-ban

A QualityGate elemzés az a téma, amelyet az internet mélyén találtunk. Eleinte egy másik, bonyolultabb és bizonyos szempontból nem teljesen helyes megközelítést használtunk. Először kétszer futtattuk a szkennelést a SonarQube-on: beolvastuk a funkcióágat és azt az ágat, ahová a funkcióágat akartuk integrálni, majd összehasonlítottuk a hibák számát. Ez a módszer nem volt stabil, és nem mindig adott helyes eredményt. Aztán megtudtuk, hogy a dupla SonarQube végrehajtás helyett beállíthatunk egy határt az elfogadott hibák számára (QualityGate), és csak azt az ágat elemezhetjük, amelyet feltöltünk és összehasonlítunk.

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

Jelenleg még mindig viszonylag primitív kódellenőrzést alkalmazunk. Meg kell jegyezni, hogy a SonarQube nem kompatibilis bizonyos programozási nyelvekkel, beleértve a Delphi-t is. Jelenleg csak a PLSQL kódot elemezzük a rendszerünkben.

Ez így működik:

  • A projektünk számára kizárólag PL/SQL kódot elemezünk.
  • A SonarQube QualityGate beállítva úgy, hogy a hibák száma ne növekedjen a commit során.
  • Az első futtatás során 229 hibát találtunk. Ha commit során a hibák száma nő, akkor a merge nem engedélyezett.
  • Hibák javításának feltétele mellett a QualityGate újra beállítható.
  • Újabb elemzési elemeket is hozzáadhatunk, például a tesztlefedettséget stb.

Működési séma:

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

A script futásának megjegyzéseiből látható, hogy a hibák száma a funkcióágban nem nőtt. Tehát minden rendben van.

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

A Merge gomb elérhetővé válik.

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

A script futásának megjegyzéseiből látható, hogy a hibák száma a funkcióágban meghaladta a megengedett értéket. Tehát mindenROSSZ.

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

A Merge gomb piros. Jelenleg nincs tilalom arra, hogy a hibás kód módosításait feltöltsük, de ezt a felelős fejlesztő megítélése szerint kell tenni. Jövőben megtiltható a hasonló commitok végrehajtása az alapágban.

Hogyan vezettük be a SonarQube-ot, és hogyan ismertük fel annak nagy potenciálját

Hibák önálló megoldása

Ezután szükséges ellenőrizni az összes, a rendszer által észlelt hibát, mivel a SonarQube szigorú szabványok szerint végez elemzést. Amit ő hibának tart, az valójában nem biztos, hogy hibás a kódunkban. Ezért ellenőrizni kell, és meg kell jelölni, hogy ez valóban hiba-e, vagy olyan dolog, amire nincs szükség a környezetünkben. Ezzel csökkentjük a hibák számát. Idővel a rendszer megtanulja, hogyan érti ezeket a finomságokat.

Hova jutottunk?

Célunk az volt, hogy megértsük, célszerű-e az automatizált kódellenőrzést a mi esetünkben bevezetni. Az eredmény meghaladta a várakozásainkat. A SonarQube lehetővé teszi számunkra, hogy a számunkra szükséges nyelvekkel dolgozzunk, meglehetősen pontos elemzést végez, és képes tanulni a fejlesztők útmutatásaiból. Összességében elégedettek vagyunk az első SonarQube-élményünkkel, és továbbra is fejlődni szeretnénk ezen a téren. Arra számítunk, hogy a jövőben még több időt és energiát tudunk megtakarítani a kódellenőrzés során, és javítani tudjuk annak minőségét, kiküszöbölve az emberi tényezőt. Lehetséges, hogy a folyamat során felfedezünk a platform hiányosságait, vagy éppen ellenkezőleg, újra megerősítjük, hogy ez egy nagyszerű dolog, nagy potenciállal.

Ebben az áttekintő cikkben beszámoltunk a SonarQube statikus elemzővel való ismerkedésünkről. Ha kérdései vannak, kérjük, írja meg kommentben. Ha érdekli ez a téma, egy új bejegyzésben részletesebben leírjuk, hogyan állíthatjuk be helyesen mindezt, és hogyan írhatunk kódot, hogy ilyen ellenőrzést végezhessünk.

A szöveg szerzője: atanya

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster