Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

Ens agradaria compartir la nostra experiència d'implementació d'una plataforma d'anàlisi i mesura contínua de la qualitat del codi SonarQube en els processos existents de desenvolupament del sistema DPO (un complement al sistema de dipòsit i comptabilitat de compensació Alameda) del Dipòsit Nacional de Liquidacions.

El dipòsit nacional de liquidacions (Grup d'empreses de l'intercanvi de Moscou) és una de les principals empreses d'infraestructura financera que emmagatzema i registra valors d'emissors russos i estrangers per valor de més de 50 bilions de rubles. El creixent volum d'operacions que realitza el sistema, així com l'augment continu de la funcionalitat, requereixen mantenir l'alta qualitat del codi font dels sistemes. Una de les eines per aconseguir aquest objectiu és l'analitzador estàtic SonarQube. En aquest article, descrivim l'experiència d'èxit d'implementar perfectament l'analitzador estàtic SonarQube als processos de desenvolupament existents del nostre departament.

Breument sobre el departament

La nostra competència inclou els mòduls següents: pagaments a clients de NSD, gestió de documents electrònics (EDF), processament de missatges del dipòsit comercial (registre d'operacions fora de borsa), canals d'interacció electrònica entre clients i NSD, i molt més. En general, una gran capa de treball en la part tècnica de les operacions. Treballem a partir de les aplicacions. Les sol·licituds dels caixers són processades pels analistes: recullen els requisits dels clients i ens presenten la seva visió de com hauria d'encaixar en el programa. A més, l'esquema estàndard: desenvolupament de codi - prova - operació de prova - lliurament del codi al circuit productiu al client directe.

Per què SonarQube?

Aquesta és la primera experiència del nostre departament en la implementació d'una plataforma per al control de la qualitat del codi; anteriorment ho fèiem manualment, només la revisió del codi. Però el creixent volum de treball requereix l'automatització d'aquest procés. A més, també hi ha empleats sense experiència a l'equip que no estan del tot familiaritzats amb la normativa interna de desenvolupament i tendeixen a cometre més errors. Per controlar la qualitat del codi, es va decidir implementar un analitzador estàtic. Com que SonarQube ja s'ha utilitzat en alguns sistemes NSD, no va trigar gaire a triar. Prèviament, companys d'altres divisions l'utilitzaven per analitzar el codi de microserveis del sistema Alameda (sistema de dipòsit i comptabilitat de compensació pròpia de NSD), en el CFT (sistema d'informació de comptabilitat, balanç, elaboració d'informes obligatoris i interns), en alguns altres. sistemes. Per experimentar, vam decidir començar amb la versió gratuïta de SonarQube. Passem, doncs, al nostre cas.

Procés d'implementació

Tenim:

  • muntatge automàtic del sistema a TeamCity;
  • configurar el procés de càrrega de codi mitjançant MergeRequest des d'una branca de funcions a la branca mestra a GitLab (procés de desenvolupament segons GitHub Flow);
  • SonarQube s'ha configurat per analitzar el codi del sistema DPO a temps.

El nostre objectiu: implementar l'anàlisi automàtica de codi en els processos CI/CD de l'AVE.

Necessitat de personalitzar: el procés de comprovació automàtica del codi mitjançant un analitzador estàtic amb cada MergeRequest a la branca principal.

Aquells. la imatge de destinació és la següent: tan bon punt el desenvolupador penja canvis a la branca de funcions, s'inicia una comprovació automàtica de nous errors al codi. Si no hi ha errors, es permeten acceptar els canvis, en cas contrari s'hauran de corregir els errors. Ja en l'etapa inicial, vam poder identificar un cert nombre d'errors en el codi. El sistema té una configuració molt flexible: es pot configurar de manera que funcioni per a tasques específiques dels desenvolupadors, per a cada sistema i estil de programació.

Configuració de QualityGate a SonarQube

L'anàlisi de QualityGate és una cosa que llegim a les entranyes d'Internet. En un principi, vam utilitzar un enfocament diferent, més complex i, d'alguna manera, no del tot correcte. Primer, vam fer l'exploració a través de SonarQube dues vegades: vam escanejar la branca de funcions i la branca on anàvem a fusionar la branca de funcions, i després vam comparar el nombre d'errors. Aquest mètode no era estable i no sempre donava el resultat correcte. I aleshores vam saber que en comptes d'executar SonarQube dues vegades, podeu establir un límit en el nombre d'errors comesos (QualityGate) i analitzar només la branca que carregueu i compareu.

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

De moment, encara fem servir una comprovació de codi més aviat primitiva. Cal tenir en compte que SonarQube no és compatible amb alguns llenguatges de programació, inclòs Delphi. De moment, per al nostre sistema, només analitzem codi PLSql.

Funciona així:

  • Analitzem només el codi PL/SQL per al nostre projecte.
  • QualityGate està configurat a SonarQube perquè el nombre d'errors no augmenti amb la confirmació.
  • El nombre d'errors a la primera execució va ser de 229. Si hi ha més errors durant la confirmació, no es permet la combinació.
  • A més, subjecte a la correcció d'errors, serà possible reconfigurar QualityGate.
  • També podeu afegir nous elements per a l'anàlisi, per exemple, la cobertura de codi amb proves, etc.

Esquema de treball:

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

Als comentaris de l'script, podeu veure que el nombre d'errors a la branca de funcions no ha augmentat. Així que tot està bé.

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

El botó Combinar està disponible.

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

Als comentaris de l'script, podeu veure que el nombre d'errors a la branca de funcions s'ha convertit en més del permès. Així que tot està malament.

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

El botó Combinar és vermell. De moment, no hi ha cap prohibició de penjar canvis en codis erronis, però això es fa a criteri del desenvolupador responsable. En el futur, podeu evitar que es facin aquests compromisos a la branca principal.

Com vam implementar SonarQube i vam adonar-nos del seu gran potencial

Autogestionar els errors

A continuació, cal comprovar tots els errors detectats pel sistema, perquè SonarQube analitza segons els seus estrictes estàndards. El que considera un error pot no ser-ne realment un del nostre codi. Per tant, cal comprovar i anotar si realment es tracta d'un error, o si no cal editar-los a les nostres condicions. Així, reduïm el nombre d'errors. Amb el temps, el sistema aprendrà a entendre aquests matisos.

A què hem arribat

El nostre objectiu era entendre si és convenient en el nostre cas transferir la verificació del codi a l'automatització. I el resultat va estar a l'altura de les expectatives. SonarQube ens permet treballar amb els idiomes que necessitem, fa anàlisis bastant competents i té el potencial d'aprendre dels consells dels desenvolupadors. En general, estem satisfets amb la nostra primera experiència amb SonarQube i pensem seguir desenvolupant-nos en aquesta direcció. Esperem que en el futur podrem estalviar més temps i esforç en la revisió del codi i millorar-lo eliminant el factor humà. Potser en el procés descobrirem les mancances de la plataforma o, per contra, ens assegurarem una vegada més que això és una cosa genial amb un gran potencial.

En aquest article de visió general, hem parlat del nostre coneixement de l'analitzador estàtic SonarQube. Si teniu preguntes, escriviu als comentaris. Si esteu interessats en aquest tema, a la nova publicació us explicarem amb més detall com configurar-ho tot correctament i escriure codi per fer aquesta comprovació.

Autor del text: atanya

Font: www.habr.com

Afegeix comentari