Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Biz Milliy hisob-kitob depozitariysining DPO tizimini (Alameda depozitariysi va kliring hisobi tizimiga qoʻshimcha) rivojlantirish boʻyicha mavjud jarayonlarga SonarQube kodining sifatini doimiy tahlil qilish va oʻlchash platformasini joriy etish boʻyicha tajribamiz bilan oʻrtoqlashmoqchimiz.

Milliy hisob-kitob depozitariysi (Moskva birja kompaniyalar guruhi) Rossiya va xorijiy emitentlarning 50 trillion rubldan ortiq qiymatdagi qimmatli qog'ozlarini saqlaydigan va hisobga oladigan asosiy moliyaviy infratuzilma kompaniyalaridan biridir. Tizim tomonidan amalga oshirilayotgan operatsiyalar hajmining o'sib borishi, shuningdek, funksionallikning uzluksiz o'sib borishi tizimlarning dastlabki kodini yuqori sifatda saqlashni talab qiladi. Ushbu maqsadga erishish vositalaridan biri SonarQube statik analizatoridir. Ushbu maqolada biz SonarQube statik analizatorini bo'limimizning mavjud rivojlanish jarayonlariga muammosiz tatbiq etish bo'yicha muvaffaqiyatli tajribani tasvirlab beramiz.

Kafedra haqida qisqacha

Bizning vakolatimiz quyidagi modullarni o'z ichiga oladi: NSD mijozlariga to'lovlar, elektron hujjat aylanishi (EDF), savdo ombori xabarlarini qayta ishlash (birjadan tashqari operatsiyalarni ro'yxatdan o'tkazish), mijozlar va NSD o'rtasidagi elektron o'zaro aloqa kanallari va boshqalar. Umuman olganda, operatsiyalarning texnik tomonida katta ish qatlami. Biz arizalar asosida ishlaymiz. Kassirlarning arizalari tahlilchilar tomonidan ko'rib chiqiladi: ular mijozlar talablarini to'playdi va bizga dasturga qanday mos kelishi haqida o'z qarashlarini taqdim etadi. Bundan tashqari, standart sxema: kodni ishlab chiqish - sinov - sinovdan o'tkazish - kodni ishlab chiqarish sxemasiga bevosita mijozga etkazib berish.

Nima uchun SonarQube?

Bu bizning bo'limimizning kod sifatini nazorat qilish platformasini joriy etish bo'yicha birinchi tajribasi - ilgari biz buni qo'lda, faqat kodni ko'rib chiqish orqali amalga oshirardik. Ammo ortib borayotgan ish hajmi bu jarayonni avtomatlashtirishni talab qiladi. Bundan tashqari, jamoada ichki rivojlanish qoidalari bilan to'liq tanish bo'lmagan va ko'proq xatolarga yo'l qo'yadigan tajribasiz xodimlar ham bor. Kod sifatini nazorat qilish uchun statik analizatorni joriy etishga qaror qilindi. SonarQube allaqachon ba'zi NSD tizimlarida ishlatilganligi sababli, uni tanlash uchun ko'p vaqt talab qilinmadi. Ilgari, boshqa bo'linmalardagi hamkasblar undan Alameda tizimida (NSDning shaxsiy depozitariy va kliring hisobi tizimi), CFTda (buxgalteriya hisobi, balans, majburiy va ichki hisobotlarni tayyorlash uchun axborot tizimi) mikroservislar kodini tahlil qilish uchun foydalanganlar. tizimlari. Tajriba uchun biz SonarQube-ning bepul versiyasidan boshlashga qaror qildik. Shunday qilib, keling, o'z ishimizga o'tamiz.

Amalga oshirish jarayoni

Bizda bor:

  • TeamCity-da tizimni avtomatik yig'ish;
  • MergeRequest orqali kodni GitLab-dagi asosiy filialga xususiyat bo'limidan yuklash jarayonini sozlash (GitHub Flow bo'yicha ishlab chiqish jarayoni);
  • SonarQube DPO tizimi uchun kodni jadval bo'yicha tahlil qilish uchun sozlangan.

Bizning maqsadimiz: AVE ning CI/CD jarayonlarida avtomatik kod tahlilini amalga oshirish.

Moslashtirish kerak: asosiy filialga har bir MergeRequest bilan statik analizator tomonidan kodni avtomatik tekshirish jarayoni.

Bular. maqsadli rasm quyidagicha: ishlab chiquvchi xususiyat bo'limiga o'zgarishlarni yuklashi bilan koddagi yangi xatolarni avtomatik tekshirish boshlanadi. Agar xatolar bo'lmasa, o'zgarishlarni qabul qilishga ruxsat beriladi, aks holda xatolarni tuzatish kerak bo'ladi. Dastlabki bosqichda biz koddagi ma'lum miqdordagi xatolarni aniqlay oldik. Tizim juda moslashuvchan sozlamalarga ega: uni ishlab chiquvchilarning muayyan vazifalari, har bir tizim va dasturlash uslubi uchun ishlaydigan tarzda sozlash mumkin.

SonarQube-da QualityGate-ni sozlash

QualityGate tahlili biz Internetda o'qiydigan narsadir. Dastlab biz boshqacha, murakkabroq va qandaydir to'g'ri bo'lmagan yondashuvdan foydalandik. Birinchidan, biz SonarQube orqali ikki marta skanerdan o‘tkazdik: biz xususiyat bo‘limi va funksiya bo‘limini birlashtirmoqchi bo‘lgan filialni skanerdan o‘tkazdik va keyin xatolar sonini solishtirdik. Bu usul barqaror emas edi va har doim ham to'g'ri natija bermadi. Va keyin biz SonarQube-ni ikki marta ishga tushirish o'rniga, siz qilingan xatolar soniga cheklov qo'yishingiz mumkinligini bilib oldik (QualityGate) va faqat siz yuklagan va taqqoslagan filialni tahlil qilishingiz mumkin.

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Hozircha biz juda oddiy kod tekshiruvidan foydalanamiz. Shuni ta'kidlash kerakki, SonarQube ba'zi dasturlash tillari, jumladan Delphi bilan mos kelmaydi. Ayni paytda bizning tizimimiz uchun biz faqat PLSql kodini tahlil qilamiz.

Bu shunday ishlaydi:

  • Biz loyihamiz uchun faqat PL/SQL kodini tahlil qilamiz.
  • QualityGate SonarQube-da xatolar soni majburiyat bilan ko'paymasligi uchun sozlangan.
  • Birinchi ishga tushirishda xatolar soni 229 tani tashkil etdi. Agar topshiriq paytida ko'proq xatolar bo'lsa, unda birlashtirishga ruxsat berilmaydi.
  • Bundan tashqari, xatolarni tuzatish sharti bilan QualityGate-ni qayta sozlash mumkin bo'ladi.
  • Shuningdek, siz tahlil qilish uchun yangi narsalarni qo'shishingiz mumkin, masalan, testlar bilan kodni qoplash va hk.

Ish sxemasi:

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Skriptning sharhlarida siz xususiyatlar bo'limidagi xatolar soni ko'paymaganligini ko'rishingiz mumkin. Demak, hammasi joyida.

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Birlashtirish tugmasi mavjud bo'ladi.

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Skriptning sharhlarida siz xususiyat bo'limidagi xatolar soni ruxsat etilganidan ko'proq bo'lganini ko'rishingiz mumkin. Demak, hammasi YOMON.

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Birlashtirish tugmasi qizil rangda. Ayni paytda xato kodga o'zgartirishlarni yuklash taqiqlanmagan, ammo bu mas'ul ishlab chiquvchining ixtiyoriga ko'ra amalga oshiriladi. Kelajakda siz bunday majburiyatlarning asosiy filialga berilishini oldini olishingiz mumkin.

Biz SonarQube-ni qanday joriy qildik va uning katta salohiyatini ro'yobga chiqardik

Xatolar bilan o'z-o'zini davolash

Keyinchalik, tizim tomonidan aniqlangan barcha xatolarni tekshirishingiz kerak, chunki SonarQube o'zining qat'iy standartlariga muvofiq tahlil qiladi. U xato deb hisoblagan narsa aslida bizning kodimizda bo'lmasligi mumkin. Shuning uchun, bu haqiqatan ham xatomi yoki bizning sharoitimizda tahrir qilishning hojati yo'qmi, tekshirib ko'rishingiz kerak. Shunday qilib, biz xatolar sonini kamaytiramiz. Vaqt o'tishi bilan tizim bu nuanslarni tushunishni o'rganadi.

Nimaga keldik

Bizning maqsadimiz, bizning holatlarimizda kodni tekshirishni avtomatlashtirishga o'tkazish maqsadga muvofiqligini tushunish edi. Va natija umidlarni oqladi. SonarQube bizga kerakli tillar bilan ishlash imkonini beradi, yetarlicha malakali tahlil qiladi va ishlab chiquvchilar maslahatlaridan o'rganish imkoniyatiga ega. Umuman olganda, biz SonarQube bilan birinchi tajribamizdan mamnunmiz va ushbu yo'nalishda yanada rivojlanishni rejalashtirmoqdamiz. Biz kelajakda kodni ko'rib chiqishda ko'proq vaqt va kuchni tejashga va inson omilini bartaraf etish orqali uni yaxshilashga umid qilamiz. Ehtimol, bu jarayonda biz platformaning kamchiliklarini aniqlaymiz yoki aksincha, bu katta salohiyatga ega ajoyib narsa ekanligiga yana bir bor ishonch hosil qilamiz.

Ushbu umumiy maqolada biz SonarQube statik analizatori bilan tanishishimiz haqida gaplashdik. Savollaringiz bo'lsa, izohlarda yozing. Agar siz ushbu mavzuga qiziqsangiz, yangi nashrda biz hamma narsani qanday qilib to'g'ri sozlashni va bunday tekshirishni amalga oshirish uchun kod yozishni batafsilroq tasvirlab beramiz.

Matn muallifi: atanya

Manba: www.habr.com

a Izoh qo'shish