SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Biz Milli Hesablaşma Depozitarının DPO sisteminin (Alameda depozitarına və klirinq uçotu sisteminə əlavə) mövcud inkişaf proseslərinə kod keyfiyyətinin davamlı təhlili və ölçülməsi üçün SonarQube platformasının tətbiqi təcrübəmizi bölüşmək istəyirik.

Milli Hesablaşma Depozitarisi (Moskva Birjası şirkətlər qrupu) Rusiya və xarici emitentlərin 50 trilyon rubldan çox dəyərində olan qiymətli kağızlarının saxlanması və uçotu, maliyyə infrastrukturunun əsas şirkətlərindən biridir. Sistem tərəfindən həyata keçirilən əməliyyatların artan həcmi, həmçinin funksionallığın davamlı genişlənməsi sistemlərin yüksək keyfiyyətli mənbə kodunun saxlanmasını tələb edir. Bu məqsədə çatmaq üçün vasitələrdən biri SonarQube statik analizatorudur. Bu yazıda biz SonarQube statik analizatorunun şöbəmizin mövcud inkişaf proseslərinə problemsiz şəkildə tətbiqi üzrə uğurlu təcrübəni təsvir edəcəyik.

Şöbə haqqında qısaca

Bizim səlahiyyətimizə aşağıdakı modullar daxildir: NSD müştərilərinə ödənişlər, elektron sənəd idarəetməsi (EDF), ticarət repozitoru mesajlarının emalı (birjadankənar əməliyyatların qeydiyyatı), müştərilər və NSD arasında elektron qarşılıqlı əlaqə kanalları və s. Ümumiyyətlə, əməliyyat fəaliyyətinin texniki tərəfində görüləsi işlər çoxdur. Müraciətlər əsasında işləyirik. Əməliyyat zabitlərinin müraciətləri analitiklər tərəfindən işlənir: onlar müştərinin tələblərini toplayır və onun proqrama necə uyğun olması barədə öz baxışlarını bizə təqdim edirlər. Sonrakı standart sxemdir: kodun inkişafı - sınaq - sınaq əməliyyatı - kodun istehsal dövrəsinə birbaşa müştəriyə çatdırılması.

Niyə SonarQube?

Bu, departamentimizin kodun keyfiyyətinə nəzarət platformasının tətbiqi üzrə ilk təcrübəsidir - əvvəllər biz bunu əl ilə edirdik, yalnız kod təhlili aparırdıq. Amma artan iş həcmi bu prosesin avtomatlaşdırılmasını tələb edir. Bundan əlavə, komandanın tərkibinə daxili inkişaf qaydaları ilə tam tanış olmayan və daha çox səhvə yol verən təcrübəsiz işçilər də daxildir. Kodun keyfiyyətinə nəzarət etmək üçün statik analizatorun tətbiqinə qərar verildi. SonarQube artıq bəzi NSD sistemlərində istifadə olunduğu üçün seçim etmək çox çəkmədi. Əvvəllər digər şöbələrdən olan həmkarlar ondan Alameda sistemində (NSD-nin öz depozitar və klirinq uçotu sistemi), CFT-də (mühasibat uçotunun aparılması, balans hesabatlarının aparılması, məcburi və daxili hesabatların hazırlanması üçün informasiya sistemi), bəzilərində mikroxidmətlərin kodunu təhlil etmək üçün istifadə edirdilər. digər sistemlər. Təcrübələr üçün SonarQube-nin pulsuz versiyası ilə başlamaq qərarına gəldik. Beləliklə, bizim işimizə keçək.

İcra prosesi

Bizdə var:

  • TeamCity-də avtomatik sistem yığılması;
  • MergeRequest vasitəsilə kodun xüsusiyyət bölməsindən GitLab-da master filialına yüklənməsi prosesi konfiqurasiya edilmişdir (GitHub Flow-a uyğun olaraq inkişaf prosesi);
  • SonarQube, cədvəl üzrə DPO sistemi üçün kodu təhlil etmək üçün konfiqurasiya edilmişdir.

Bizim məqsədimiz: DPO-nun CI/CD proseslərində avtomatik kod analizini həyata keçirin.

Konfiqurasiya etmək lazımdır: əsas filiala hər MergeRequest ilə kodun statik analizatorla avtomatik yoxlanılması prosesi.

Bunlar. Hədəf şəkil belədir: tərtibatçı funksiya bölməsinə dəyişiklikləri yükləyən kimi kodda yeni səhvlərin avtomatik yoxlanılması işə salınır. Səhvlər yoxdursa, dəyişikliklərin qəbul edilməsinə icazə verilir, əks halda səhvlər düzəldilməlidir. Artıq ilkin mərhələdə biz kodda müəyyən sayda səhvləri müəyyən edə bildik. Sistem çox çevik parametrlərə malikdir: onu elə konfiqurasiya etmək olar ki, o, tərtibatçıların xüsusi tapşırıqları, hər bir sistem və proqramlaşdırma tərzi üçün işləyir.

SonarQube-də QualityGate-in qurulması

QualityGate təhlili İnternetin dərinliklərində oxuduğumuz bir şeydir. Başlanğıcda biz fərqli, daha mürəkkəb və müəyyən mənada tam düzgün olmayan yanaşmadan istifadə etdik. Əvvəlcə SonarQube vasitəsilə iki dəfə skan etdik: xüsusiyyət bölməsini və xüsusiyyət bölməsini birləşdirəcəyimiz filialı skan etdik və sonra səhvlərin sayını müqayisə etdik. Bu üsul sabit deyildi və həmişə düzgün nəticə vermirdi. Və sonra öyrəndik ki, SonarQube-ni iki dəfə işə salmaq əvəzinə, edilən səhvlərin sayına (QualityGate) məhdudiyyət qoya və yalnız yüklədiyiniz və müqayisə etdiyiniz filialı təhlil edə bilərik.

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Hələlik biz kifayət qədər primitiv kod baxışından istifadə edirik. Qeyd etmək lazımdır ki, SonarQube bəzi proqramlaşdırma dilləri ilə, o cümlədən Delphi ilə uyğun deyil. Hazırda sistemimiz üçün yalnız PLSql kodunu təhlil edirik.

Bu belə işləyir:

  • Layihəmiz üçün yalnız PL/SQL kodunu təhlil edirik.
  • SonarQube-də QualityGate konfiqurasiyası var ki, səhvlərin sayı öhdəliyi yerinə yetirməklə artmasın.
  • İlk buraxılışda xətaların sayı 229 idi. Əgər öhdəçilik zamanı daha çox səhv olarsa, birləşməyə icazə verilmir.
  • Bundan əlavə, səhvlər düzəldilsə, QualityGate-i yenidən konfiqurasiya etmək mümkün olacaq.
  • Siz həmçinin təhlil üçün yeni nöqtələr əlavə edə bilərsiniz, məsələn, testlərlə kod əhatəsi və s.

İş sxemi:

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Skriptin şərhləri göstərir ki, xüsusiyyət bölməsində səhvlərin sayı artmayıb. Beləliklə, hər şey qaydasındadır.

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Birləşdirmə düyməsi əlçatan olur.

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Skriptin şərhlərində, xüsusiyyət bölməsində səhvlərin sayının məqbul həddən artıq olduğunu görə bilərsiniz. Deməli, hər şey PƏSDİR.

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Birləşdirmə düyməsi qırmızıdır. Hazırda səhv kod əsasında dəyişikliklərin yüklənməsinə qadağa yoxdur, lakin bu, məsul tərtibatçının mülahizəsinə əsasən edilir. Gələcəkdə bu cür öhdəliklərin əsas filiala əlavə edilməsinin qarşısını ala bilərsiniz.

SonarQube-ni necə tətbiq etdik və onun böyük potensialını həyata keçirdik

Səhvlər üzərində müstəqil iş

Sonra, sistem tərəfindən aşkar edilən bütün səhvləri yoxlamaq lazımdır, çünki SonarQube ciddi standartlarına uyğun olaraq təhlil edir. Onun səhv hesab etdiyi şey əslində bizim kodumuzda olmaya bilər. Buna görə də, bunun həqiqətən səhv olub-olmadığını və ya şərtlərimizdə redaktə etməyə ehtiyac olmadığını yoxlamaq və qeyd etmək lazımdır. Bu yolla biz səhvlərin sayını azaldırıq. Zamanla sistem bu nüansları anlamağı öyrənəcək.

Nəyə gəldik

Məqsədimiz, bizim vəziyyətimizdə kodun nəzərdən keçirilməsini avtomatlaşdırmaya köçürməyin məqsədəuyğun olub olmadığını anlamaq idi. Və nəticə gözləntiləri doğrultdu. SonarQube bizə lazım olan dillərlə işləməyə imkan verir, kifayət qədər səriştəli təhlillər aparır və tərtibatçı məsləhətlərindən öyrənmək potensialına malikdir. Ümumiyyətlə, biz SonarQube-dan istifadə etdiyimiz ilk təcrübəmizdən məmnunuq və bu istiqamətdə daha da inkişaf etməyi planlaşdırırıq. Biz gözləyirik ki, gələcəkdə kodun nəzərdən keçirilməsinə daha çox vaxt və səyə qənaət edə və insan amilini aradan qaldıraraq onu daha da yaxşılaşdıra biləcəyik. Bəlkə də prosesdə platformanın çatışmazlıqlarını aşkar edəcəyik və ya əksinə, bunun böyük potensiala malik gözəl bir şey olduğuna bir daha əmin olacağıq.

Bu baxış məqaləsində SonarQube statik analizatoru ilə tanışlığımızdan danışdıq. Suallarınız varsa, şərhlərdə yazın. Bu mövzu ilə maraqlanırsınızsa, yeni bir nəşrdə hər şeyi necə düzgün qurmaq və belə bir yoxlama aparmaq üçün kodu yazmaq barədə daha ətraflı təsvir edəcəyik.

Mətn müəllifi: atanya

Mənbə: www.habr.com

Добавить комментарий