Salı Eylül 21st, 2021

SonarQube – Swift Entegrasyonu

ile Ebubekir Sezer

Selamlar, SonarQube projelerimizde Kod analizimizi yapıp, kod kalitesi ve güvenliği hakkında bize bilgi veren bir Continous Inspection aracıdır.

SonarQube’u iOS projemizde uygulayabilmek için SonarQube ve SonarScanner‘ı indirmemiz gerekiyor (Not: SonarQube indirirken Long Term Support olanı indirdiğinizden emin olun). Dosyaları indirdikten sonra dosya isimlerini SonarQube ve SonarScanner olarak güncelleyebilirsiniz ve  Applications klasörü altına sürükle bırak yöntemiyle ekleyin.

SonarQube içerisine Swift plugini eklememiz gerekiyor, bunun içinde açık kaynak olarak paylaşılmış olan SonarQube Plugin for Swift indiriyoruz (SonarQube Java 11 ile çalıştıdığı için bilgisayarınızda java 11 kurulu oldugundan ve path’in dogru setlendiğinden emin olun). İndirdiğiniz .jar dosyasını, Applications/SonarQube/extensions/plugins içerisine atın. Artık SonarQube sunucumuz çalışacaktır. Terminal üzerinden cd /Applications/SonarQube/bin/macosx-universal-64 klasörüne gidin. Terminal üzerinden sh sonar.sh console komutunu çalıştırdığınız zaman SonarQube sunucumuz aktif olacaktır.

http://localhost:9000/ üzerinden sunucuya gidebilirsiniz, kullanıcı adınızı ve şifrenizi admin girerek sunucuya giriş yapabilirsiniz.

Sunucumuz artık hazır olduğuna göre proje üzerinde incelemeleri yapacak olan bazı toolları eklememiz gerekiyor.

xcpretty

xcpretty, xcodebuild için bir biçimlendiricidir.

gem install xcpretty

SwiftLint

SwiftLint, kod üzerinde tarama yaparak Swift stiline ve kurallarına uygun kod yazmanıza sağlamaya çalışan bir araçtır.

brew install swiftlint

Tailor

Tailor, kodun swift stiline uygun ve hataları önlemeye yardımcı olmak için kodu analiz eder.

brew install tailor

Slather

Slather, Xcode projeleri için test coverage hesaplayan bir tool’dur.

gem install slather

Lizard

Lizard, kod kompleksliğini analiz eder ve kopyala-yapıştır yapılmış kod tespitini yapar.

[sudo] pip install lizard

Eklememiz gereken bütün tool’ları kurduk, şimdi projemiz bilgilerini gireceğimiz sonar-project.properties ve run-sonar-swift.sh dosyalarını indirip projemizin dizinine ekleyelim. sonar-project.properties içerisinde sunucu bilgilerini, proje detaylarını,  project, appName, appScheme, appConfiguration ve tests (yoksa yorum satırına alabilirsiniz) bilgilerinin projenizin bilgilerine uygun olarak girdiğinizden emin olun. Bütün bu işlemleri yaptıktan sonra artık projemiz ve sunucumuz hazır, terminal üzerinden projenizin dizinine gidin ve ./run-sonar-swift.sh -v komutunu çalıştırın. Bu işlem biraz uzun sürebilir fakat bittiğinde aşağıdaki gibi projenizi sunucunuz üzerinde listediğini göreceksinizdir.

Entegrasyonumuz bu kadardı, eğer sorun ile karşılaşırsanız bana sosyal medya veya yorumlar üzerinden ulaşabilirsiniz. Yazıyı hazırlarken aşağıdaki kaynaklardan yararlandım, daha detaylı bilgi almak isterseniz inceleyebilirsiniz 🙂

Referanslar:

  • https://github.com/Idean/sonar-swift
  • https://medium.com/@pranay.urkude/sonarqube-integration-with-ios-b76df8405014
  • https://docs.sonarqube.org/latest/