Hur vi implementerade SonarQube och insÄg dess stora potential

Hur vi implementerade SonarQube och insÄg dess stora potential

Vi vill dela med oss av vÄr erfarenhet av att implementera plattformen för kontinuerlig analys och mÀtning av kodkvalitet SonarQube i de befintliga utvecklingsprocesserna för DPO-systemet (komplettering till depÄ- och clearingredovisningssystemet "Alameda") vid den nationella avrÀkningsdeponeringen.

Den nationella avrÀkningsdeponeringen (gruppen av företag "Moskva-börsen") Àr ett av de nyckelföretag inom den finansiella infrastrukturen, som förvarar och redovisar vÀrdepapper frÄn ryska och utlÀndska utgivare till ett vÀrde av över 50 biljoner rubel. Det vÀxande antalet transaktioner som systemet utför, samt den kontinuerliga utvecklingen av funktionalitet, krÀver att vi upprÀtthÄller en hög kodkvalitet i systemen. Ett av verktygen för att nÄ detta mÄl Àr den statiska kodanalysatorn SonarQube. I denna artikel kommer vi att beskriva vÄr framgÄngsrika erfarenhet av sömlös implementering av den statiska analysatorn SonarQube i de befintliga utvecklingsprocesserna i vÄr avdelning.

Kort om avdelningen

VĂ„ra kompetenser omfattar följande moduler: utbetalningar till NRD:s kunder, elektronisk dokumenthantering (EDO), behandling av meddelanden frĂ„n handelsdepotet (registrering av OTC-transaktioner), elektroniska interaktionskanaler mellan kunder och NRD, och mycket mer. Sammanfattningsvis en stor mĂ€ngd arbete med den tekniska sidan av den operationella verksamheten. Vi arbetar pĂ„ begĂ€ran. BegĂ€rningar frĂ„n operatörerna behandlas av analytiker: de samlar krav frĂ„n kunden och presenterar sin vision för hur detta ska implementeras i programmet. DĂ€refter följer en standardprocess: kodutveckling – testning – pilotdrift – leverans av koden till produktionsmiljön till den direkta bestĂ€llaren.

Varför just SonarQube?

Det hĂ€r Ă€r vĂ„r avdelnings första erfarenhet av att implementera en plattform för kodkvalitetskontroll – tidigare gjorde vi detta manuellt genom att enbart göra code review. Men den vĂ€xande arbetsvolymen krĂ€ver automatisering av denna process. Dessutom finns det nyare medarbetare i teamet som inte Ă€r helt bekanta med interna utvecklingsregler och tenderar att göra fler misstag. För kodkvalitetskontroll har vi beslutat att införa en statisk analysator. Eftersom SonarQube redan anvĂ€nts i vissa system inom NDR, var det ingen lĂ„ng valprocess. Tidigare har kollegor frĂ„n andra avdelningar analyserat koden för mikrotjĂ€nster i systemet "Alameda" (NDR:s egen system för deponerings- och clearingredovisning), i CFT (informationssystem för bokföring, balansrĂ€kning, samt förberedelse av obligatoriska och interna rapporter), och i nĂ„gra andra system. För experimenten beslöt vi oss för att börja med den kostnadsfria versionen av SonarQube. LĂ„t oss nu gĂ„ vidare till vĂ„rt fall.

Implementeringsprocess

Vi har:

  • automatisk systemuppbyggnad i TeamCity;
  • processen för att ladda upp kod via MergeRequest frĂ„n feature-grenen till master-grenen i GitLab (utvecklingsprocess enligt GitHub Flow) Ă€r instĂ€lld;
  • SonarQube, konfigurerat för att analysera koden för DPO-systemet enligt schema.

VÄrt mÄl: införa automatiserad kodanalys i CI/CD-processerna för DPO.

Behöver stÀllas in: processen för automatisk kontroll av koden med den statiska analysatorn vid varje MergeRequest i huvudgrenen.

Det vill sÀga, den önskade bilden Àr följande: sÄ snart en utvecklare laddar upp Àndringar i feature-grenen, startar en automatisk kontroll för att upptÀcka nya fel i koden. Om inga fel finns tillÄts godkÀnnande av Àndringarna, annars mÄste felen ÄtgÀrdas. Redan i det tidiga skedet har vi kunnat identifiera ett visst antal fel i koden. Systemet har mycket flexibla instÀllningar: det kan anpassas sÄ att det fungerar för specifika uppgifter, för varje system och programmeringsstil.

InstÀllning av QualityGate i SonarQube

Analys av QualityGate Àr nÄgot vi stötte pÄ i djupet av internet. Ursprungligen anvÀnde vi en annan, mer komplicerad och pÄ vissa sÀtt felaktig metod. Först körde vi en skanning genom SonarQube tvÄ gÄnger: vi skannade feature-grenen och grenen dit vi planerade att slÄ samman feature-grenen, och jÀmförde sedan antalet fel. Denna metod var inte stabil och gav inte alltid rÀtt resultat. Sedan fick vi veta att man istÀllet för att köra SonarQube tvÄ gÄnger kan sÀtta en grÀns för antal tillÄtna fel (QualityGate) och analysera endast den gren som man laddar upp och jÀmför.

Hur vi implementerade SonarQube och insÄg dess stora potential

För nÀrvarande anvÀnder vi fortfarande en ganska primitiv kodgranskning. Det bör noteras att SonarQube inte Àr kompatibelt med vissa programmeringssprÄk, inklusive Delphi. För nÀrvarande analyserar vi endast PLSql-kod för vÄrt system.

Det fungerar sÄ hÀr:

  • Vi analyserar endast PL/SQL-kod för vĂ„rt projekt.
  • QualityGate i SonarQube Ă€r instĂ€llt sĂ„ att antalet fel inte ökar med varje commit.
  • Antalet fel vid första körningen blev 229. Om antalet fel vid commit ökar, sĂ„ tillĂ„ts inte sammanslagning.
  • Vid Ă„tgĂ€rdande av fel kan QualityGate stĂ€llas om.
  • Det gĂ„r ocksĂ„ att lĂ€gga till nya punkter för analys, till exempel kodtĂ€ckning med tester osv.

Arbetsflöde:

Hur vi implementerade SonarQube och insÄg dess stora potential

I kommentarerna frÄn skriptets arbete syns det att antalet fel i feature-grenen inte har ökat. SÄ allt Àr bra.

Hur vi implementerade SonarQube och insÄg dess stora potential

Knappen Merge blir tillgÀnglig.

Hur vi implementerade SonarQube och insÄg dess stora potential

I kommentarerna frÄn skriptets arbete syns det att antalet fel i feature-grenen har blivit fler Àn tillÄtet. SÄ det Àr dÄligt.

Hur vi implementerade SonarQube och insÄg dess stora potential

Merge-knappen Àr röd. För nÀrvarande finns det inget förbud mot att ladda upp Àndringar med felaktig kod, men det görs pÄ ansvarig utvecklares eget godtycke. I framtiden kan sÄdana commits förbjudas i huvudgrenen.

Hur vi implementerade SonarQube och insÄg dess stora potential

SjÀlvstÀndigt arbete med felen

Det Àr nödvÀndigt att kontrollera alla fel som systemet identifierat, eftersom SonarQube analyserar efter sina strikta standarder. Det som anses vara ett fel av SonarQube, kan i verkligheten i vÄr kod sÄvÀl vara en icke-frÄga. DÀrför mÄste vi kontrollera och notera om detta Àr ett verkligt fel, eller om det som vi har verkar vara i god ordning. PÄ sÄ sÀtt minskar vi antalet fel. Med tiden kommer systemet att lÀra sig att förstÄ dessa nyanser.

Vad har vi kommit fram till

VÄrt mÄl var att förstÄ om det var rimligt att automatisera kodgranskning i vÄrt fall. Och resultatet har övertrÀffat förvÀntningarna. SonarQube lÄter oss arbeta med de sprÄk vi behöver, gör en ganska noggrann analys och har potentialen att lÀra sig av utvecklarnas tips. Sammanfattningsvis Àr vi nöjda med vÄr första erfarenhet av att anvÀnda SonarQube och planerar att fortsÀtta utvecklas inom detta omrÄde. Vi förvÀntar oss att vi i framtiden kommer att kunna spara mer tid och kraft pÄ kodgranskning och göra den av högre kvalitet genom att eliminera den mÀnskliga faktorn. Kanske kommer vi under processen att upptÀcka plattformens brister, eller Ä andra sidan, bli övertygade om att det verkligen Àr nÄgot bra med stor potential.

I denna översiktsartikel har vi berÀttat om vÄr bekantskap med den statiska analysatorn SonarQube. Om du har nÄgra frÄgor, skriv gÀrna i kommentarerna. Om du Àr intresserad av detta Àmne, kommer vi i en ny publikation att mer detaljerat beskriva hur man korrekt stÀller in allt och skriver kod för att göra en sÄdan kontroll.

Textens författare: atanya

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster