SonarQube Nedir? Projelerimiz İçin Neden Kullanmalıyız?

sonarcube, sonarcube nedir, sonarscanner nedir, sonarqube nasıl kullanılır

Bir proje yaptınız ve artık herkesle paylaşacaksınız. Ancak kafanızda bir takım sorular olabilir. Bunlardan bazıları; projemde güvenlik açığı var mıdır, basit ama önemli bug lar var mıdır, kullandığım teknolojilerin yeni bir sürümü çıktığında bende projemi kolayca güncelleyebilir miyim…  Bu yazımızda bu sorularınıza çare olabilecek SonarQube ü anlatacağız. SonarQube nedir? Projelerimizde SonarQube ‘ü neden kullanmalıyız? SonarQube nasıl kullanılır? Projemizi SonarQube  ile nasıl analiz edebiliriz? SonarScanner nedir? SonarScanner nasıl kullanılır? gibi soruları detaylıca açıklayacağız.

SonarQube Nedir?

SonarQube, yaptığınız projedeki kodların güvenlik, tekrar geliştirilebilirlik gibi unsurlar ile projenizi denetleyen bir yazılım aracıdır. Kodunuzda bug olup olmadığına, güvenlik açığı olup olmadığına bakar. Projenizi localinizde kurar ve çalıştırır. Güvenlik ve tekrar geliştirilebilirlik açısından not vererek projenizin testi geçip geçmediğini söyler. Verdiği uyarılar ile projenizi daha güvenli ve hatasız bir hale getirebilirsiniz. SonarQube, kodunuzun hangi satırlarında ne gibi hatalarınızın olduğunu söylerken, bunları nasıl çözebileceğiniz konusunda da sizlere ipuçları verir.

SonarScanner Nedir?

SonarScanner ise projemizi didik didik tarayan ve sonuçların bir ekranda gösterilmesine yardımcı olan SonarQube ün bir aracıdır.

SonarQube ve SonarScanner Nasıl Kurulur?

SonarQube’u ve SonarScanner ın bilgisayarımızda çalışması için tek ön koşul, bilgisayarımızda Java JDK ve JRE nin kurulu olmasıdır. Ayrıca JDK nın ortam değişkenlerine eklendiğinden de emin olun. (C:\Program Files\Java\jdk-13.0.1\bin)

Eğer bunlardan biri yüklü ise https://www.sonarqube.org/downloads/ adresine girerek SonarQube’u indirmemiz gerekmektedir. SonarQube’un Community (ücretsiz), Developer, Enterprise ve Data Center olarak 4 farklı versiyonu bulunmaktadır. Biz ücretsiz olan Community sürümünü indireceğiz ki bu da gerçekten çok işimize yarıyor.

İndirdiğimiz sonarqube-xxx.zip dosyasını dışarı çıkarıyoruz.

İlk önce conf klasörü içindeki wrapper.conf dosyasını notepad gibi bir editörde açarak düzenlememiz gerekiyor. Burda Java Jdk programının yolunu wrapper a belirtmeliyiz.

sonarqube, wrapper, sonarscanner

Kaydettikten sonra şimdi Sonar ı başlatabiliriz. bin klasörüne gelerek işletim sistemimize uygun olan klasörü açıyoruz.  Biz windows kullandığımız için windows işletim sistemini baz alarak yazıya devam edeceğiz. bin klasörü altındaki windows-x86-64 klasörünün içine girerek StartSonar.bat dosyasını yönetici olarak açıyoruz. Eğer her şey yolunda gitmişse konsol ekranında aşağıdaki görüntüyü almış olmanız  gerekmektedir.

sonarqube, sonarscanner

Tarayıcımıza gelip http://localhost:9000/ yazarak SonarQube ü çalıştırabiliriz. Bizi karşılayan login ekranında kullanıcı adı ve şifre yerlerine admin yazarak giriş yapıyoruz. Ardından bizden şifremizi değiştirmemizi istiyor. Şifremizi değiştirerek anasayfaya gidiyoruz.

sonarqube, sonarscanner
SonarQube ana sayfası

Şimdi sıra SonarScanner ı indirmekte. https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ adresine giderek işletim sistemimize uygun olan dosyayı indiriyoruz. Biz yine windows olanı indiriyor ve indirilen dosyayı zip den dışarı çıkarıyoruz.

Projemizi Test Etme

Artık bir projeyi test etmeye başlayabiliriz. SonarQube bu konuda bizleri düşünmüş ve örnek bir proje vermiş. Bu projeyi buradan indirebilirsiniz.

(Git kullanımı hakkında daha detaylı bilgiler öğrenmek isterseniz buradaki yazımızı okuyabilirsiniz. Git Nedir? Hangi Git Komutu Ne İşe Yarar?)

Sayfanın sağ üst kısmında bulunan Add Project butonuna ardından Manually e tıklıyoruz. Gelen ekranda projemize bir isim vererek Set Up diyoruz.

create sonaqube project manually

Projemiz için bir token oluşturulması gerekiyor. Bu tokeni hangi projeyi analiz edeceğini SonarQube a söylerken kullanacağız. token a bir isim verdikten sonra Generate diyerek devam ediyoruz.

generate sonarqube project token

Token oluştuktan sonra Continue diyerek devam ediyoruz.

sonarqube project token

Son olarak analiz yapmak istediğimiz projenin türünü seçiyoruz. Biz burda .NET uygulamasını seçtik.

run analysis sonarqube

Konsol ekranını açarak .NET Core için SonarScanner ı yükleyelim. Son sürümü indirdiğinizden emin olun. Bu yazı için son sürüm 5.1.0

Konsol satırına dotnet tool install –global dotnet-sonarscanner –version 5.1.0 yazarak çalıştırıyoruz. dotnet-sonarscanner yüklendikten sonra artık analiz komutlarımıza geçebiliriz. Sırasıyla bize verilen komutları analiz etmek istediğimiz projenin içinde iken komut satırına yazıyoruz. (.sln dosyası ile aynı dizinde olduğunuzdan emin olun.)

İlk komutumuz, dotnet sonarscanner begin /k:”sonar” /d:sonar.host.url=”http://localhost:9000″ /d:sonar.login=”1e557de7f912d2d1765e29c69d507bbae45c8abc”

İkinci komutumuz ise dotnet build. bu komut ile artık analize başlıyoruz.

Son olarak dotnet sonarscanner end /d:sonar.login=”1e557de7f912d2d1765e29c69d507bbae45c8abc” yazarak analizimizi sonlandırıyoruz.

Analizimiz bitti. Artık tarayıcımıza giderek sonuçlarımıza bakabiliriz.

Görüldüğü üzere projem testten geçmiş. Ayrıca bana başka bilgilendirme de sunuyor.  Bunlar;

20 Bug bulmuş – Reliability (Güvenilirlik) notum C ,

Vulnerabilities (Güvenlik açığım)yok yani 0 – Security (Güvenlik ) notum A

5 Security Hotspots (Güvenlik Bağlantı Noktaları) – Security Review (Güvenlik İncelemesi) notum E

Maintainability (Sürdürülebilirlik) notum A, yani bu projeyi rahat bir şekilde güncelleyebilir ve yeni teknolojiler ile kullanabilirim.

Burada yazan sayılara tıklayarak daha detaylı bilgilere ulaşabilir ve kodlarınızı daha temiz ve güvenli hale getirebilirsiniz. Örneğin 20 adet hatam olduğunu söylemişti.

İşte hatalarım. Üzerine tıklayarak daha detaylı bilgiler edinebilir ve kodlarınızda düzenlemeler yapabilirsiniz.

Projeyi analiz ederken yazdığımız komutlar bunlardır.

dotnet sonarscanner begin /k:”sonar” /d:sonar.host.url=”http://localhost:9000″ /d:sonar.login=”1e557de7f912d2d1765e29c69d507bbae45c8abc”

dotnet build

dotnet sonarscanner end /d:sonar.login=”1e557de7f912d2d1765e29c69d507bbae45c8abc”

Buradaki sonar kelimesi projemize ve tokenimize verdiğimiz isim, 1e557de7f912d2d1765e29c69d507bbae45c8abc ise tokenimiz. Bunlar her projede farklılık gösterecektir.

Youtube kanalımızdan bizleri takip edebilirsiniz.

TEKNOKODİ

İlgili Yazılar

Leave a Comment