Π‘Π°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ Π½Π°ΡΠ΅ΡΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° SonarQube Π·Π° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΌΠ΅ΡΠ΅ΡΠ΅ Π½Π° ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΏΠΎΡΡΠΎΡΠ½ΠΈΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ DPO (Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π΄Π΅ΠΏΠΎΠ·ΠΈΡΠ½ΠΈΠΎΡ ΠΈ ΠΊΠ»ΠΈΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ Alameda) Π½Π° ΠΠ°ΡΠΈΠΎΠ½Π°Π»Π½ΠΈΠΎΡ Π΄Π΅ΠΏΠΎΠ·ΠΈΡΠ°Ρ Π·Π° ΠΏΠΎΡΠ°ΠΌΠ½ΡΠ²Π°ΡΠ΅.
ΠΠ°ΡΠΈΠΎΠ½Π°Π»Π½ΠΈΠΎΡ Π΄Π΅ΠΏΠΎΠ·ΠΈΡΠ°Ρ Π·Π° ΠΏΠΎΡΠ°ΠΌΠ½ΡΠ²Π°ΡΠ΅ (ΠΠΎΡΠΊΠ²Π° Π±Π΅ΡΠ·Π° Π³ΡΡΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ) Π΅ Π΅Π΄Π½Π° ΠΎΠ΄ ΠΊΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π²ΠΎ ΡΠΈΠ½Π°Π½ΡΠΈΡΠΊΠ°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Ρ Π°ΡΡΠΈΠΈ ΠΎΠ΄ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° ΡΡΡΠΊΠΈ ΠΈ ΡΡΡΠ°Π½ΡΠΊΠΈ ΠΈΠ·Π΄Π°Π²Π°ΡΠΈ Π²ΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 50 ΡΡΠΈΠ»ΠΈΠΎΠ½ΠΈ ΡΡΠ±Π»ΠΈ. ΠΠ³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈΠΎΡ ΠΎΠ±Π΅ΠΌ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠΎ Π³ΠΈ Π²ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ, ΠΊΠ°ΠΊΠΎ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΡΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ°, Π±Π°ΡΠ°Π°Ρ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠ΅Π½ ΠΈΠ·Π²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅. ΠΠ΄Π½Π° Π°Π»Π°ΡΠΊΠ° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΡΠ΅Π» Π΅ ΡΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ SonarQube. ΠΠΎ ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ Π³ΠΎ ΠΎΠΏΠΈΡΠ΅ΠΌΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ Π·Π° Π±Π΅ΡΠΏΡΠ΅ΠΊΠΎΡΠ½ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ SonarQube Π²ΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Π½Π°ΡΠΈΠΎΡ ΠΎΠ΄Π΄Π΅Π».
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ Π·Π° ΠΎΠ΄Π΄Π΅Π»ΠΎΡ
ΠΠ°ΡΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ½ΠΎΡΡ Π³ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ: ΠΏΠ»Π°ΡΠ°ΡΠ° Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π½Π° NSD, ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ (EDF), ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π·Π° ΡΡΠ³ΠΎΠ²ΠΈΡΠ° (ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΊΡ ΡΠ°Π»ΡΠ΅Ρ), ΠΊΠ°Π½Π°Π»ΠΈ Π·Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈ NSD ΠΈ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ²Π΅ΡΠ΅. ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ, ΡΡΠ΅Π±Π° ΠΌΠ½ΠΎΠ³Ρ Π΄Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠΊΠ°ΡΠ° ΡΡΡΠ°Π½Π° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. Π Π°Π±ΠΎΡΠΈΠΌΠ΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π±Π°ΡΠ°ΡΠ°. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ»ΡΠΆΠ±Π΅Π½ΠΈΡΠΈ Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ Π°Π½Π°Π»ΠΈΡΠΈΡΠ°ΡΠΈΡΠ΅: ΡΠΈΠ΅ Π³ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π°Ρ Π±Π°ΡΠ°ΡΠ°ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈ Π½ΠΈ ΡΠ° ΠΏΡΠ΅Π·Π΅Π½ΡΠΈΡΠ°Π°Ρ Π½ΠΈΠ²Π½Π°ΡΠ° Π²ΠΈΠ·ΠΈΡΠ° Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΠΎΠΏΠΈ Π²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°. Π‘Π»Π΅Π΄Π½Π° Π΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° ΡΠ΅ΠΌΠ°: ΡΠ°Π·Π²ΠΎΡ Π½Π° ΠΊΠΎΠ΄ - ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ - ΠΏΡΠΎΠ±Π½Π° ΡΠ°Π±ΠΎΡΠ° - ΠΈΡΠΏΠΎΡΠ°ΠΊΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΎ Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ.
ΠΠΎΡΡΠΎ SonarQube?
ΠΠ²Π° Π΅ ΠΏΡΠ²ΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ Π½Π° Π½Π°ΡΠΈΠΎΡ ΠΎΠ΄Π΄Π΅Π» Π²ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ - ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠ° Π³ΠΎ ΠΏΡΠ°Π²Π΅Π²ΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ, ΠΏΡΠ°Π²Π΅ΡΡΠΈ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. ΠΠΎ, Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈΠΎΡ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π±Π°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΎΡΠ΅Ρ. ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΡΠΈΠΌΠΎΡ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΈ Π½Π΅ΠΈΡΠΊΡΡΠ½ΠΈ Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ΠΈ ΡΠΎ ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ Π·Π° Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠ°Π·Π²ΠΎΡ ΠΈ ΠΈΠΌΠ°Π°Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡΠ° Π΄Π° ΠΏΡΠ°Π²Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΠΊΠ²Π°Π»ΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ, Π±Π΅ΡΠ΅ ΠΎΠ΄Π»ΡΡΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠΈΠ΄Π΅ΡΡΠΈ SonarQube Π²Π΅ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ NSD ΡΠΈΡΡΠ΅ΠΌΠΈ, Π½Π΅ΠΌΠ°ΡΠ΅ Π΄ΠΎΠ»Π³ ΠΈΠ·Π±ΠΎΡ. ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ, ΠΊΠΎΠ»Π΅Π³ΠΈΡΠ΅ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΎΠ΄Π΄Π΅Π»ΠΈ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π° Π·Π° Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π°Ρ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΠ»Π°ΠΌΠ΅Π΄Π° (ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΎΡ Π΄Π΅ΠΏΠΎΠ·ΠΈΡΠ΅Π½ ΠΈ ΠΊΠ»ΠΈΡΠΈΠ½ΡΠΊΠΈ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ Π½Π° NSD), Π²ΠΎ CFT (ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌ Π·Π° Π²ΠΎΠ΄Π΅ΡΠ΅ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π±ΠΈΠ»Π°Π½ΡΠΈ, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΠΈ Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°ΡΠ΅), Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ Π΄ΡΡΠ³ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ, ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌΠ΅ ΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° SonarQube. ΠΠ° Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ ΡΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ.
ΠΡΠΎΡΠ΅Ρ Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°
ΠΠΈΠ΅ ΠΈΠΌΠ°ΠΌΠ΅:
- Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π²ΠΎ TeamCity;
- ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΊΡ MergeRequest ΠΎΠ΄ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎ Π³Π»Π°Π²Π½Π°ΡΠ° Π³ΡΠ°Π½ΠΊΠ° Π²ΠΎ GitLab (ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·Π²ΠΎΡ ΡΠΏΠΎΡΠ΅Π΄ GitHub Flow);
- SonarQube, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΠ΄ΠΎΡ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ DPO Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄.
ΠΠ°ΡΠ°ΡΠ° ΡΠ΅Π»: ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π²ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° CI/CD Π½Π° DPO.
Π’ΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°: ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠΎ ΡΠ΅ΠΊΠΎΠ΅ MergeRequest Π΄ΠΎ Π³Π»Π°Π²Π½Π°ΡΠ° Π³ΡΠ°Π½ΠΊΠ°.
ΠΠ½ΠΈΠ΅. Π¦Π΅Π»Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° Π΅ ΡΠ»Π΅Π΄Π½Π°: ΡΡΠΎΠΌ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅, ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. ΠΠΊΠΎ Π½Π΅ΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ³Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ°ΡΠ°Ρ, Π²ΠΎ ΡΠΏΡΠΎΡΠΈΠ²Π½ΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²Π°Ρ. ΠΠ΅ΡΠ΅ Π²ΠΎ ΠΏΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ°Π·Π° ΡΡΠΏΠ΅Π°Π²ΠΌΠ΅ Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ: ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° Π½Π° ΡΠ°ΠΊΠΎΠ² Π½Π°ΡΠΈΠ½ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅, Π·Π° ΡΠ΅ΠΊΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΡΠΈΠ» Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅.
ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ QualityGate Π²ΠΎ SonarQube
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠ° Π½Π° QualityGate Π΅ Π½Π΅ΡΡΠΎ ΡΡΠΎ Π³ΠΎ ΡΠΈΡΠ°ΠΌΠ΅ Π²ΠΎ Π΄Π»Π°Π±ΠΎΡΠΈΠ½ΠΈΡΠ΅ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΡΠ²ΠΈΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΏΠΎΠΈΠ½Π°ΠΊΠΎΠ² ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΏΠΎΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅Π½ ΠΈ, Π½Π° Π½Π΅ΠΊΠΎΡ Π½Π°ΡΠΈΠ½, Π½Π΅ ΡΠΎΡΠ΅ΠΌΠ° ΡΠΎΡΠ΅Π½. ΠΡΠ²ΠΎ, Π΄Π²Π°ΠΏΠ°ΡΠΈ Π³ΠΎ ΠΈΠ·Π²ΡΡΠΈΠ²ΠΌΠ΅ ΡΠΊΠ΅Π½ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΡΠ΅ΠΊΡ SonarQube: ΡΠ° ΡΠΊΠ΅Π½ΠΈΡΠ°Π²ΠΌΠ΅ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° ΡΠ° ΡΠΏΠΎΠΈΠΌΠ΅ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΠΏΠΎΡΠΎΠ° Π³ΠΎ ΡΠΏΠΎΡΠ΅Π΄ΠΈΠ²ΠΌΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ²ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ Π±Π΅ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π΄Π°Π²Π°ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. Π ΡΠΎΠ³Π°Ρ Π΄ΠΎΠ·Π½Π°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ Π΄Π²Π°ΠΏΠ°ΡΠΈ Π½Π° SonarQube, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ (QualityGate) ΠΈ Π΄Π° ΡΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° ΡΡΠΎ ΡΠ° ΠΏΡΠΈΠΊΠ°ΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅.
ΠΠ°ΡΠ΅Π³Π° ΡΓ¨ ΡΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄ΠΎΡ. ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° SonarQube Π½Π΅ Π΅ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π΅Π½ ΡΠΎ Π½Π΅ΠΊΠΎΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΡΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΎ ΠΈ Delphi. ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ PLSql ΠΊΠΎΠ΄ Π·Π° Π½Π°ΡΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ.
Π Π°Π±ΠΎΡΠΈ Π²Π°ΠΊΠ°:
- ΠΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ PL/SQL ΠΊΠΎΠ΄ Π·Π° Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ.
- SonarQube ΠΈΠΌΠ° QualityGate ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΡΠ°ΠΊΠ° ΡΡΠΎ Π±ΡΠΎΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° ΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅.
- ΠΡΠΎΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠ²ΠΎΡΠΎ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π±Π΅ΡΠ΅ 229. ΠΠΊΠΎ ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅, ΡΠΎΠ³Π°Ρ ΡΠΏΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π΅ Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ.
- ΠΠΎΠ½Π°ΡΠ°ΠΌΡ, Π°ΠΊΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²Π°Ρ, ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° QualityGate.
- ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠΎΡΠΊΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ·Π°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΡΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΈΡΠ½.
Π¨Π΅ΠΌΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°:
ΠΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π΄Π΅ΠΊΠ° Π±ΡΠΎΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π΅ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½. ΠΠ½Π°ΡΠΈ ΡΠ΅ Π΅ Π²ΠΎ ΡΠ΅Π΄.
ΠΠΎΠΏΡΠ΅ΡΠΎ Π‘ΠΏΠΎΡΡΠ²Π°ΡΠ΅ ΡΡΠ°Π½ΡΠ²Π° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎ.
ΠΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° Π±ΡΠΎΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ ΠΏΡΠΈΡΠ°ΡΠ»ΠΈΠ². ΠΠ½Π°ΡΠΈ ΡΠ΅ Π΅ ΠΠΠ¨Π.
ΠΠΎΠΏΡΠ΅ΡΠΎ Π·Π° ΡΠΏΠΎΡΡΠ²Π°ΡΠ΅ Π΅ ΡΡΠ²Π΅Π½ΠΎ. ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ΠΌΠ° Π·Π°Π±ΡΠ°Π½Π° Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΠΎΠ³ΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄, Π½ΠΎ ΡΠΎΠ° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΏΠΎ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΡΠ° Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ. ΠΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΏΡΠ΅ΡΠΈΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° ΡΠ°ΠΊΠ²ΠΈ ΠΎΠ±Π²ΡΡΠΊΠΈ Π²ΠΎ Π³Π»Π°Π²Π½Π°ΡΠ° Π³ΡΠ°Π½ΠΊΠ°.
Π‘Π°ΠΌΠΎΡΡΠΎΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΎΡΠΊΡΠΈΠ΅Π½ΠΈ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠΎΡ, Π±ΠΈΠ΄Π΅ΡΡΠΈ SonarQube Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΏΠΎΡΠ΅Π΄ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠΎΠ³ΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΈ. ΠΠ½Π° ΡΡΠΎ ΡΠΎΡ Π³ΠΎ ΡΠΌΠ΅ΡΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΠΌΠΎΠΆΠ΅Π±ΠΈ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ Π΅ Π³ΡΠ΅ΡΠΊΠ° Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄. ΠΠ°ΡΠΎΠ°, ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΈ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΎΠ²Π° Π΅ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠ΄ ΡΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π²ΠΎ Π½Π°ΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈ. ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½ Π³ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΠΌΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. Π‘ΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ Π½Π°ΡΡΠΈ Π΄Π° Π³ΠΈ ΡΠ°Π·Π±ΠΈΡΠ° ΠΎΠ²ΠΈΠ΅ Π½ΠΈΡΠ°Π½ΡΠΈ.
ΠΠΎ ΡΡΠΎ Π΄ΠΎΡΠ΄ΠΎΠ²ΠΌΠ΅
ΠΠ°ΡΠ°ΡΠ° ΡΠ΅Π» Π±Π΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΠ΅ Π΄Π°Π»ΠΈ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΠ»ΠΈΠ²ΠΎ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π½Π΅ΡΠ΅ΠΌΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΠ°. Π ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ Π³ΠΈ ΠΎΠΏΡΠ°Π²Π΄Π° ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ°ΡΠ°. SonarQube Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎ ΡΠ°Π·ΠΈΡΠΈΡΠ΅ ΡΡΠΎ Π½ΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ, ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΈΠΌΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π» Π΄Π° ΡΡΠΈΠΌΠ΅ ΠΎΠ΄ ΡΠΎΠ²Π΅ΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ. ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ, Π·Π°Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ ΡΠΌΠ΅ ΠΎΠ΄ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠ²ΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° SonarQube ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ½Π°ΡΠ°ΠΌΡ Π²ΠΎ ΠΎΠ²Π°Π° Π½Π°ΡΠΎΠΊΠ°. ΠΡΠ΅ΠΊΡΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π·Π°ΡΡΠ΅Π΄ΠΈΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π½Π°ΠΏΠΎΡ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌΠ΅ ΡΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠ²Π΅ΡΠΊΠΈΠΎΡ ΡΠ°ΠΊΡΠΎΡ. ΠΠΎΠΆΠ΅Π±ΠΈ Π²ΠΎ ΡΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ Π³ΠΈ ΠΎΡΠΊΡΠΈΠ΅ΠΌΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΈΠ»ΠΈ, ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΡΡΡΠ΅ Π΅Π΄Π½Π°Ρ ΡΠ΅ ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ ΠΊΡΠ» ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π³ΠΎΠ»Π΅ΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π».
ΠΠΎ ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π·Π±ΠΎΡΡΠ²Π°Π²ΠΌΠ΅ Π·Π° Π½Π°ΡΠ΅ΡΠΎ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅ ΡΠΎ ΡΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ SonarQube. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ°, Π²Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΏΠΈΡΠ΅ΡΠ΅ Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅. ΠΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ Π·Π° ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ°, Π²ΠΎ Π½ΠΎΠ²Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ΠΌΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ°Π»Π½ΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΓ¨ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΊΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°.
ΠΠ²ΡΠΎΡ Π½Π° ΡΠ΅ΠΊΡΡΠΎΡ:
ΠΠ·Π²ΠΎΡ: www.habr.com