Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ внСдрСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ измСрСния качСства ΠΊΠΎΠ΄Π° SonarQube Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ процСссы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ систСмы Π”ΠŸΠž (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ систСмС Π΄Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€Π½ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Ρ‚Π° «АламСда») ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ расчСтного дСпозитария.

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ расчСтный Π΄Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ (Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ «Московская Π±ΠΈΡ€ΠΆΠ°Β») являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ финансовой инфраструктуры, Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π½Π½Ρ‹Π΅ Π±ΡƒΠΌΠ°Π³ΠΈ российских ΠΈ иностранных эмитСнтов Π½Π° сумму Π±ΠΎΠ»Π΅Π΅ 50 Ρ‚Ρ€Π»Π½ Ρ€ΡƒΠ±. Растущий объСм ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… систСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ поддСрТания высокого качСства исходного ΠΊΠΎΠ΄Π° систСм. Одним ΠΈΠ· инструмСнтов для достиТСния этой Ρ†Π΅Π»ΠΈ являСтся статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ SonarQube. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ опишСм ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ бСсшовного внСдрСния статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° SonarQube Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ процСссы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ нашСго ΠΎΡ‚Π΄Π΅Π»Π°.

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ± ΠΎΡ‚Π΄Π΅Π»Π΅

Π’ нашСй ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ: Π²Ρ‹ΠΏΠ»Π°Ρ‚Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ НРД, элСктронный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚ (Π­Π”Πž), ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠ³ΠΎ рСпозитария (рСгистрация Π²Π½Π΅Π±ΠΈΡ€ΠΆΠ΅Π²Ρ‹Ρ… сдСлок), ΠΊΠ°Π½Π°Π»Ρ‹ элСктронного взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ НРД ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, большой пласт Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ тСхничСской стороной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΌΡ‹ Π½Π° основС заявок. Заявки опСрационистов обрабатываСтся Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°ΠΌΠΈ: ΠΎΠ½ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ трСбования Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈ прСдставляСт Π½Π°ΠΌ своС Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»Π΅Ρ‡ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π”Π°Π»Π΅Π΅ стандартная схСма: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ΄Π° – тСстированиС – опытная эксплуатация – поставка ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ нСпосрСдствСнному Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ SonarQube?

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ нашСго ΠΎΡ‚Π΄Π΅Π»Π° ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для контроля качСства ΠΊΠΎΠ΄Π° – Ρ€Π°Π½Π΅Π΅ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ лишь code review. Но растущий объСм Ρ€Π°Π±ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСсса. ΠšΡ€ΠΎΠΌΠ΅ этого, Π² составС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅ΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ сотрудники, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ совсСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ склонны Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ большС ошибок. Для контроля качСства ΠΊΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π’Π°ΠΊ ΠΊΠ°ΠΊ SonarQube ΡƒΠΆΠ΅ использовался Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах НРД, Π΄ΠΎΠ»Π³ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ. Π Π°Π½Π΅Π΅ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄ микросСрвисов Π² систСмС «АламСда» (собствСнная систСма Π΄Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€Π½ΠΎ-ΠΊΠ»ΠΈΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Ρ‚Π° НРД), Π² Π¦Π€Π’ (информационная систСма для вСдСния Π±ΡƒΡ….ΡƒΡ‡Π΅Ρ‚Π°, баланса, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ отчСтности), Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах. Для экспСримСнтов ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ с бСсплатной вСрсии SonarQube. Π˜Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ кСйсу.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ внСдрСния

Π£ нас Π΅ΡΡ‚ΡŒ:

  • автоматичСская сборка систСмы Π² TeamCity;
  • настроСн процСсс Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· MergeRequest ΠΈΠ· feature-Π²Π΅Ρ‚ΠΊΠΈ Π² master-Π²Π΅Ρ‚ΠΊΡƒ Π² GitLab (процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ согласно GitHub Flow);
  • SonarQube, настроСнный Π½Π° Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° для систСмы Π”ΠŸΠž ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ.

Наша Ρ†Π΅Π»ΡŒ: Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ автоматичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π² CI/CD процСссы Π”ΠŸΠž.

Надо Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ: процСсс автоматичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° статичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ MergeRequest’e Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Π’.Π΅. цСлСвая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ: ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π»ΠΈΠ²Π°Π΅Ρ‚ измСнСния Π² feature-Π²Π΅Ρ‚ΠΊΡƒ, запускаСтся автоматичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ошибок Π² ΠΊΠΎΠ΄Π΅. Если ошибок Π½Π΅Ρ‚, Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ принятиС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈΠ½Π°Ρ‡Π΅ придСтся ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки. Π£ΠΆΠ΅ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС ΠΌΡ‹ смогли Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство ошибок Π² ΠΊΠΎΠ΄Π΅. Π£ систСмы ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠ΅ настройки: Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ систСму ΠΈ ΡΡ‚ΠΈΠ»ΡŒ программирования.

Настройка QualityGate Π² SonarQube

Анализ QualityGate – это Π²Π΅Ρ‰ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π»ΠΈ Π² Π½Π΅Π΄Ρ€Π°Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ использовали Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π±ΠΎΠ»Π΅Π΅ слоТный ΠΈ с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ стороны Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π΄Π²Π°ΠΆΠ΄Ρ‹ запускали сканированиС Ρ‡Π΅Ρ€Π΅Π· SonarQube: сканировали feature-Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΡƒΠ΄Π° ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ feature-Π²Π΅Ρ‚ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ сравнивали количСство ошибок. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ отличался ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½Π΅ всСгда Π²Ρ‹Π΄Π°Π²Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. А Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ вмСсто Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° SonarQube, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ Π½Π° количСство Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ошибок (QualityGate) ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρƒ Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Ρ‹ заливаСшь ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΡˆΡŒ.

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Пока Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ довольно ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ΄Π°. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ SonarQube нСсовмСстим с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ языками программирования, Π² Ρ‚ΠΎΠΌ числС с Delphi. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ для нашСй систСмы Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ PLSql ΠΊΠΎΠ΄.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это Ρ‚Π°ΠΊ:

  • ΠœΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ для нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ PL/SQL ΠΊΠΎΠ΄.
  • Π’ SonarQube настроСн QualityGate Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ количСство ошибок Π½Π΅ ΠΏΡ€ΠΈΠ±Π°Π²Π»ΡΠ»ΠΎΡΡŒ с ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.
  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ошибок ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС Ρƒ нас Π²Ρ‹ΡˆΠ»ΠΎ 229. Если ошибок ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ становится большС, Ρ‚ΠΎ merge Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ.
  • Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ условии исправлСния ошибок ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ QualityGate.
  • Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ для Π°Π½Π°Π»ΠΈΠ·Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° тСстами ΠΈ Ρ‚.Π΄.

Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹:

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Π’ коммСнтариях Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта Π²ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ количСство ошибок Π² feature-Π²Π΅Ρ‚ΠΊΠ΅ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎΡΡŒ. Π—Π½Π°Ρ‡ΠΈΡ‚ всС ОК.

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Бтановится доступна ΠΊΠ½ΠΎΠΏΠΊΠ° Merge.

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Π’ коммСнтариях Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ количСство ошибок Π² feature-Π²Π΅Ρ‚ΠΊΠ΅ стало большС допустимого. Π—Π½Π°Ρ‡ΠΈΡ‚ всС ΠŸΠ›ΠžΠ₯О.

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Кнопка Merge красная. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‚Π° Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π»ΠΈΡ‚ΡŒ измСнСния ΠΏΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ, Π½ΠΎ это дСлаСтся Π½Π° усмотрСниС отвСтствСнного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π’ дальнСйшСм ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.

Как ΠΌΡ‹ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ SonarQube ΠΈ осознали Π΅Π³ΠΎ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ ошибками

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всС выявлСнныС систСмой ошибки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ SonarQube Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎ своим строгим стандартам. Π§Ρ‚ΠΎ ΠΎΠ½ считаСт ошибкой, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π² нашСм ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π΅ ΡΠ²Π»ΡΡ‚ΡŒΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это ошибка, ΠΈΠ»ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°ΡˆΠΈΡ… условиях нСобходимости Π½Π΅Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ сокращаСм количСство ошибок. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ систСма научится ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ эти Π½ΡŽΠ°Π½ΡΡ‹.

К Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ

НашСй Ρ†Π΅Π»ΡŒΡŽ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, цСлСсообразно Π»ΠΈ Π² нашСм случаС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ΄Π° Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ. И Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΡ€Π°Π²Π΄Π°Π» оТидания. SonarQube позволяСт Π½Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΌ языками, Π΄Π΅Π»Π°Π΅Ρ‚ довольно Π³Ρ€Π°ΠΌΠΎΡ‚Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒΡΡ Π½Π° подсказках Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ Ρ†Π΅Π»ΠΎΠΌ, ΠΌΡ‹ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ нашим ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ использования SonarQube ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ дальшС. ОТидаСм, Ρ‡Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ смоТСм ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ сил Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ качСствСнной, устранив чСловСчСский Ρ„Π°ΠΊΡ‚ΠΎΡ€. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² процСссС ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ нСдостатки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, убСдимся Π΅Ρ‰Π΅ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ это крутая Π²Π΅Ρ‰ΡŒ с большим ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΠΎΠΌ.

Π’ этой ΠΎΠ±Π·ΠΎΡ€Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассказали ΠΎ нашСм знакомствС со статичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ SonarQube. Если Ρƒ вас Π΅ΡΡ‚ΡŒ вопросы, ΠΏΠΈΡˆΠΈΡ‚Π΅, поТалуйста, Π² коммСнтариях. Если Π²Π°ΠΌ интСрСсна эта Ρ‚Π΅ΠΌΠ°, Π² Π½ΠΎΠ²ΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ опишСм, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ всС Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.

Автор тСкста: atanya

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ