Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

Rádi bychom se podělili o naše zkušenosti s implementací platformy pro průběžnou analýzu a měření kvality kódu SonarQube do stávajících procesů vývoje systému DPO (doplněk k depozitnímu a clearingovému účetnímu systému Alameda) Národního vypořádacího depozitáře.

National Settlement Depository (skupina společností na moskevské burze) je jednou z klíčových společností v oblasti finanční infrastruktury, která uchovává a eviduje cenné papíry ruských a zahraničních emitentů v hodnotě více než 50 bilionů rublů. Rostoucí objem operací prováděných systémem, stejně jako neustálé zvyšování funkčnosti, vyžadují udržení vysoké kvality zdrojového kódu systémů. Jedním z nástrojů k dosažení tohoto cíle je statický analyzátor SonarQube. V tomto článku popisujeme úspěšné zkušenosti s bezproblémovou implementací statického analyzátoru SonarQube do stávajících vývojových procesů našeho oddělení.

Krátce o oddělení

Naše kompetence zahrnuje následující moduly: platby klientům NSD, elektronická správa dokumentů (EDF), zpracování zpráv registru obchodů (registrace mimoburzovních transakcí), kanály elektronické interakce mezi klienty a NSD a mnoho dalšího. Obecně velká vrstva práce na technické stránce operací. Pracujeme na základě aplikací. Aplikace bankomatů zpracovávají analytici: shromažďují požadavky zákazníků a prezentují nám svou vizi, jak by to mělo zapadnout do programu. Dále standardní schéma: vývoj kódu - testování - zkušební provoz - dodání kódu do výrobního okruhu přímému zákazníkovi.

Proč SonarQube?

Jde o první zkušenost našeho oddělení s implementací platformy pro kontrolu kvality kódu – dříve jsme to dělali ručně, pouze kontrola kódu. Rostoucí objem práce však vyžaduje automatizaci tohoto procesu. V týmu jsou navíc i nezkušení zaměstnanci, kteří nejsou zcela obeznámeni s interními vývojovými předpisy a mají tendenci více chybovat. Pro kontrolu kvality kódu bylo rozhodnuto implementovat statický analyzátor. Vzhledem k tomu, že SonarQube již byl použit v některých systémech NSD, netrvalo dlouho s výběrem. Dříve s ním kolegové z jiných divizí analyzovali kód mikroslužeb v systému Alameda (vlastní depozitní a clearingový účetní systém NSD), v CFT (informační systém pro účetnictví, bilanci, přípravu povinného a interního výkaznictví), v některých dalších systémy . Pro experimentování jsme se rozhodli začít s bezplatnou verzí SonarQube. Pojďme tedy k našemu případu.

Proces implementace

Máme:

  • automatická montáž systému v TeamCity;
  • nastavit proces nahrávání kódu přes MergeRequest z větve funkcí do hlavní větve v GitLab (proces vývoje podle GitHub Flow);
  • SonarQube nakonfigurován tak, aby analyzoval kód pro systém DPO podle plánu.

Náš cíl: implementace automatické analýzy kódu v procesech CI/CD společnosti AVE.

Nutno přizpůsobit: proces automatické kontroly kódu statickým analyzátorem s každým MergeRequest do hlavní větve.

Tito. cílový obrázek je následující: jakmile vývojář nahraje změny do větve funkcí, spustí se automatická kontrola nových chyb v kódu. Pokud nejsou žádné chyby, je povoleno přijmout změny, jinak bude nutné chyby opravit. Již v počáteční fázi jsme byli schopni identifikovat určitý počet chyb v kódu. Systém má velmi flexibilní nastavení: lze jej nakonfigurovat tak, aby fungoval pro specifické úkoly vývojářů, pro každý systém a styl programování.

Konfigurace QualityGate v SonarQube

Analýza QualityGate je věc, kterou čteme v útrobách internetu. Zpočátku jsme používali jiný přístup, složitější a v některých ohledech ne zcela správný. Nejprve jsme dvakrát provedli skenování přes SonarQube: naskenovali jsme větev funkcí a větev, kde jsme chtěli sloučit větev funkcí, a poté jsme porovnali počet chyb. Tato metoda nebyla stabilní a ne vždy dávala správný výsledek. A pak jsme se dozvěděli, že místo toho, abyste spouštěli SonarQube dvakrát, můžete nastavit limit na počet provedených chyb (QualityGate) a analyzovat pouze větev, kterou nahrajete a porovnáte.

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

Zatím stále používáme spíše primitivní kontrolu kódu. Je třeba poznamenat, že SonarQube není kompatibilní s některými programovacími jazyky, včetně Delphi. V současné době pro náš systém analyzujeme pouze kód PLSql.

Funguje to takto:

  • Pro náš projekt analyzujeme pouze PL/SQL kód.
  • QualityGate je v SonarQube nakonfigurován tak, aby se počet chyb s potvrzením nezvyšoval.
  • Počet chyb při prvním spuštění byl 229. Pokud je během odevzdání více chyb, sloučení není povoleno.
  • Dále, s výhradou opravy chyb, bude možné znovu nastavit QualityGate.
  • Můžete také přidat nové položky pro analýzu, například pokrytí kódu pomocí testů atd.

Pracovní schéma:

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

V komentářích skriptu můžete vidět, že počet chyb ve větvi feature se nezvýšil. Vše je tedy v pořádku.

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

Zpřístupní se tlačítko Sloučit.

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

V komentářích skriptu můžete vidět, že počet chyb ve větvi funkcí je více než povolený. Vše je tedy ŠPATNÉ.

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

Tlačítko Sloučit je červené. V současné době neexistuje žádný zákaz nahrání změn chybného kódu, ale toto se děje na uvážení odpovědného vývojáře. V budoucnu můžete zabránit provádění takových commitů do hlavní větve.

Jak jsme implementovali SonarQube a uvědomili si jeho velký potenciál

Svépomocné řešení chyb

Dále musíte zkontrolovat všechny chyby detekované systémem, protože SonarQube analyzuje podle svých přísných standardů. To, co považuje za chybu, nemusí být ve skutečnosti chyba v našem kódu. Proto je třeba zkontrolovat a poznamenat, zda se jedná skutečně o chybu, nebo zda není potřeba úpravy v našich podmínkách. Snížíme tak počet chyb. Postupem času se systém naučí těmto nuancím rozumět.

K čemu jsme dospěli

Naším cílem bylo pochopit, zda je v našem případě účelné přenést ověřování kódu do automatizace. A výsledek splnil očekávání. SonarQube nám umožňuje pracovat s jazyky, které potřebujeme, provádí poměrně kompetentní analýzu a má potenciál učit se z tipů pro vývojáře. Obecně jsme potěšeni naší první zkušeností se SonarQube a plánujeme se v tomto směru dále rozvíjet. Očekáváme, že v budoucnu budeme schopni ušetřit více času a úsilí při kontrole kódu a vylepšit ji odstraněním lidského faktoru. Snad během toho objevíme nedostatky platformy, nebo se naopak ještě jednou přesvědčíme, že jde o vychytávku s velkým potenciálem.

V tomto přehledovém článku jsme hovořili o našem seznámení se statickým analyzátorem SonarQube. Pokud máte dotazy, napište do komentářů. Pokud vás toto téma zajímá, v nové publikaci si podrobněji popíšeme, jak vše správně nastavit a napsat kód, který takovou kontrolu provede.

Autor textu: atanya

Zdroj: www.habr.com

Přidat komentář