SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Kod kalitesinin sürekli analizi ve ölçümü için SonarQube platformunu Ulusal Uzlaştırma Deposu'nun DPO sisteminin (Alameda saklama ve takas muhasebe sistemine ek olarak) mevcut geliştirme süreçlerine uygulama deneyimimizi paylaşmak istiyoruz.

Ulusal Uzlaşma Deposu (Moskova Borsası şirketler grubu), 50 trilyon ruble'den fazla değere sahip Rus ve yabancı ihraççıların menkul kıymetlerini saklayan ve muhasebeleştiren finansal altyapıdaki kilit şirketlerden biridir. Sistem tarafından gerçekleştirilen artan işlem hacmi ve işlevselliğin sürekli genişlemesi, sistemlerin yüksek kaliteli kaynak kodunun korunmasını gerektirir. Bu hedefe ulaşmaya yönelik araçlardan biri SonarQube statik analizörüdür. Bu makalede, SonarQube statik analizörünün departmanımızın mevcut geliştirme süreçlerine sorunsuz bir şekilde uygulanmasıyla elde edilen başarılı deneyimi anlatacağız.

Kısaca bölüm hakkında

Yetkinliğimiz şu modülleri içerir: NSD müşterilerine ödemeler, elektronik belge yönetimi (EDF), ticari veri havuzu mesajlarının işlenmesi (tezgah üstü işlemlerin kaydı), müşteriler ve NSD arasındaki elektronik etkileşim kanalları ve çok daha fazlası. Genel olarak operasyonel faaliyetlerin teknik tarafında yapılması gereken çok iş var. Taleplere göre çalışıyoruz. Operasyon görevlilerinin başvuruları analistler tarafından işleme alınır: Müşterinin gereksinimlerini toplar ve bunların programa nasıl uyması gerektiğine dair vizyonlarını bize sunarlar. Sırada standart şema var: kod geliştirme - test etme - deneme çalıştırması - kodun üretim devresine doğrudan müşteriye teslim edilmesi.

Neden SonarQube?

Bu, departmanımızın kod kalitesi kontrolü için bir platform uygulama konusundaki ilk deneyimidir; daha önce bunu manuel olarak yapıyorduk ve yalnızca kod incelemeleri yapıyorduk. Ancak artan iş hacmi bu sürecin otomasyonunu gerektiriyor. Ayrıca ekipte, şirket içi gelişim düzenlemelerine tam olarak aşina olmayan ve daha fazla hata yapma eğiliminde olan deneyimsiz çalışanlar da yer alıyor. Kodun kalitesini kontrol etmek için statik bir analizör uygulamaya karar verildi. SonarQube bazı NSD sistemlerinde zaten kullanıldığından seçim yapmak uzun sürmedi. Daha önce, diğer departmanlardaki meslektaşları bunu Alameda sistemindeki (NSD'nin kendi saklama ve takas muhasebe sistemi), CFT'deki (muhasebe, bilanço, zorunlu ve dahili raporlamayı hazırlamak için bir bilgi sistemi) mikro hizmetlerin kodunu analiz etmek için kullanıyordu. diğer sistemler. Deneyler için SonarQube'un ücretsiz sürümüyle başlamaya karar verdik. O halde olayımıza geçelim.

Uygulama süreci

İşte ülkemiz:

  • TeamCity'de otomatik sistem montajı;
  • GitLab'da özellik dalından ana dalına MergeRequest aracılığıyla kod yükleme işlemi yapılandırıldı (GitHub Flow'a göre geliştirme süreci);
  • SonarQube, DPO sisteminin kodunu belirli bir programa göre analiz edecek şekilde yapılandırılmıştır.

Hedefimiz: DPO'nun CI/CD süreçlerinde otomatik kod analizini uygulayın.

Yapılandırmanız gerekiyor: ana daldaki her MergeRequest ile kodun statik bir analizör ile otomatik olarak kontrol edilmesi işlemi.

Onlar. Hedef resim şu şekildedir: Geliştirici değişiklikleri özellik dalına yükler yüklemez, koddaki yeni hataların otomatik kontrolü başlatılır. Hata yoksa değişikliklerin kabul edilmesine izin verilir, aksi takdirde hataların düzeltilmesi gerekecektir. Zaten ilk aşamada kodda belirli sayıda hatayı tespit edebildik. Sistemin çok esnek ayarları vardır: geliştiricilerin belirli görevleri, her sistem ve programlama stili için çalışacak şekilde yapılandırılabilir.

SonarQube'da QualityGate'i kurma

QualityGate analizi internetin derinliklerinde okuduğumuz bir şeydir. Başlangıçta farklı, daha karmaşık ve bazı açılardan tamamen doğru olmayan bir yaklaşım kullandık. İlk olarak taramayı SonarQube üzerinden iki kez gerçekleştirdik: özellik dalını ve özellik dalını birleştireceğimiz dalı taradık ve ardından hata sayısını karşılaştırdık. Bu yöntem stabil değildi ve her zaman doğru sonucu vermiyordu. Daha sonra SonarQube'ü iki kez çalıştırmak yerine, yapılan hata sayısına (QualityGate) bir sınır koyabileceğimizi ve yalnızca yüklediğiniz ve karşılaştırdığınız şubeyi analiz edebileceğimizi öğrendik.

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Şimdilik hala oldukça ilkel bir kod incelemesi kullanıyoruz. SonarQube'un Delphi dahil bazı programlama dilleriyle uyumlu olmadığını belirtmekte fayda var. Şu anda sistemimiz için sadece PLSql kodunu analiz ediyoruz.

Bu gibi çalışır:

  • Projemiz için sadece PL/SQL kodunu analiz ediyoruz.
  • SonarQube, QualityGate'i, taahhütle birlikte hata sayısının artmayacağı şekilde yapılandırmıştır.
  • İlk başlatmadaki hata sayısı 229'du. İşleme sırasında daha fazla hata varsa birleştirmeye izin verilmez.
  • Ayrıca hataların düzeltilmesi durumunda QualityGate'in yeniden yapılandırılması mümkün olacaktır.
  • Ayrıca analiz için yeni noktalar da ekleyebilirsiniz; örneğin testlerle birlikte kod kapsamı vb.

Çalışma düzeni:

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Betiğin yorumları, özellik dalındaki hata sayısının artmadığını gösteriyor. Yani her şey yolunda.

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Birleştir düğmesi kullanılabilir hale gelir.

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Komut dosyasının yorumlarında, özellik dalındaki hata sayısının kabul edilebilirden fazla olduğunu görebilirsiniz. Yani her şey KÖTÜ.

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Birleştir düğmesi kırmızıdır. Şu anda hatalı koda dayalı değişikliklerin yüklenmesine ilişkin bir yasak yoktur ancak bu, sorumlu geliştiricinin takdirine bağlıdır. Gelecekte bu tür taahhütlerin ana şubeye eklenmesini engelleyebilirsiniz.

SonarQube'ü nasıl uyguladık ve büyük potansiyelini nasıl gerçekleştirdik?

Hatalar üzerinde bağımsız çalışma

Daha sonra sistem tarafından tespit edilen tüm hataları kontrol etmeniz gerekir çünkü SonarQube katı standartlarına göre analiz yapar. Onun hata olarak gördüğü şey aslında bizim kurallarımızda yer almayabilir. Bu nedenle bunun gerçekten bir hata olup olmadığını veya koşullarımızda düzenlemeye gerek olup olmadığını kontrol etmeniz ve not etmeniz gerekir. Bu şekilde hata sayısını azaltıyoruz. Zamanla sistem bu nüansları anlamayı öğrenecektir.

Ne hale geldik

Amacımız, bizim durumumuzda kod incelemesini otomasyona aktarmanın uygun olup olmayacağını anlamaktı. Ve sonuç beklentileri karşıladı. SonarQube ihtiyacımız olan dillerle çalışmamıza olanak tanıyor, oldukça yetkin analizler yapıyor ve geliştirici ipuçlarından öğrenme potansiyeline sahip. Genel olarak, SonarQube'u kullanarak ilk deneyimimizden memnunuz ve bu yönde daha da gelişmeyi planlıyoruz. Gelecekte kod inceleme konusunda daha fazla zaman ve çaba tasarrufu sağlayabileceğimizi ve insan faktörünü ortadan kaldırarak bunu daha iyi hale getirebileceğimizi umuyoruz. Belki süreçte platformun eksikliklerini keşfedeceğiz veya tam tersine bunun büyük potansiyele sahip harika bir şey olduğuna bir kez daha ikna olacağız.

Bu inceleme yazımızda SonarQube statik analizörü ile tanışıklığımızdan bahsetmiştik. Sorularınız varsa lütfen yorumlara yazın. Bu konuyla ilgileniyorsanız, yeni bir yayında her şeyin nasıl doğru şekilde ayarlanacağını ve böyle bir kontrol yapmak için kodun nasıl yazılacağını daha ayrıntılı olarak anlatacağız.

Metnin yazarı: atanya

Kaynak: habr.com

Yorum ekle