SonarQube Kurulumu

Ubuntu 20.04 & Net Core 5 Örneği

Deniz TÜRKMEN
5 min readDec 13, 2022

Merhabalar,

Bu yazımda Ubuntu 20.04'e Sonarqube kurulumunu inceliycez. ilk olarak nedir, hangi amaçla kullanıyoruz.

Sonarqube: SonarQube, 20’den fazla programlama dilinde hataları, kod analizlerini ve güvenlik açıklarını tespit etmek için kodun statik analizi ile otomatik incelemeler yapmak üzere kod kalitesinin sürekli denetimi için Sonar Source tarafından geliştirilen açık kaynaklı bir platformdur. Projenizdeki kodların belirli kurallara uyup uymadığını denetleyen bir araçtır. Bu denetlemeyi yaparken kodu derlemez. Server olarak kurulur ve projenizdeki hataları gösterir. Ayrıca size bu hataların nasıl düzeltilebileceği konusunda örnek verir.

SonarQube, yinelenen kod, kodlama standartları, birim testleri, kod kapsamı, kod karmaşıklığı, yorumlar, hatalar ve güvenlik açıkları hakkında raporlar sunar.

SonarQube, Jenkins, Azure DevOps, GitHub, GitLab, Bitbucket ve çok daha fazlası gibi CI / CD araçlarıyla entegre olabilir.

SonarScanner: SonarQube’ ün monitör edebilmesi için kodlarımızı araştıran bir tooldur.

Sonarqube kurulumuna başlayalım. İlk olarak ubuntu repository güncelleyelim.

sudo get updatesudo get upgrade -y

Sonarqube java ya bağımlılığı vardır. Bu yüzden şimdide java kurulumunu yapalım.

sudo apt updatesudo apt install -y default-jresudo apt install -y default-jdkjava -version

Javanın versionu kontrol edelim.

Sonarqube verilerini tutmak için bir tane veritabanı yönetim sistemi kuruyoruz. Burada postgresql tercih ediyorum. Ama siz isterseniz Mysql,Mssql gibi database kurabilirsiniz.

sudo apt install -y postgresql postgresql-contribsudo systemctl enable postgresqlsudo systemctl start postgresqlsudo systemctl status postgresql

Postgresql başarılı şekilde kuruldu. Şimdide Sonarqube için database,user ve password oluşturalım.

sudo -Hiu postgrescreateuser sonaradmincreatedb -O sonaradmin sonarqubedbpsqlALTER USER sonaradmin WITH ENCRYPTED password 'password';\q

Sonarqube gerekli olan java ve postgresql tamamladığımıza göre sonarqube kurulumuna başlayabiliriz. Bunun için,

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.3.0.51899.zipsudo unzip sonarqube-9.2.3.50713.zip -d /opt/sudo mv /opt/sonarqube{-9.2.3.50713,}

Sonarqube root kullanıcısı ile çalıştırılmamalıdır. Bunun için bir tane user oluşturup gerekli izinleri tanımlıyoruz.

sudo suuseradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqubechown -R sonarqube: /opt/sonarqube

Sonarqube ayarlayalım. Bunun ilk olarak sonarqube config olduğu dosyayı vim ile açıyoruz.

vim /opt/sonarqube/conf/sonar.properties

ve

sonar.jdbc.username=sonaradminsonar.jdbc.password=denizturkmensonar.jdbc.url=jdbc:postgresql://localhost/sonarqubedb

Sonarqube config ayarları yaptığımıza göre sonarqube servis olarak çalıştırmak için,

cat > /etc/systemd/system/sonarqube.service << 'EOL'[Unit]Description=SonarQube serviceAfter=syslog.target network.target[Service]Type=simpleUser=sonarqubeGroup=sonarqubePermissionsStartOnly=trueExecStart=/bin/nohup java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-9.3.0.51899.jarStandardOutput=syslogLimitNOFILE=131072LimitNPROC=8192TimeoutStartSec=5Restart=alwaysSuccessExitStatus=143[Install]WantedBy=multi-user.targetEOL

Service start edelim ve status bakalım.

systemctl daemon-reloadecho 'vm.max_map_count=262144' >> /etc/sysctl.confsysctl -psystemctl enable --now sonarqubesystemctl status sonarqube.service

Service olarak başarılı şekilde kurduğumuza göre. Tarayıcında ip adresi ya da localhost 9000 portuna gittiğimizde. Default olarak

Username  adminPassword  admin

ve sonarqube versiyonuna bakmak için,

http://192.168.1.28:9000/api/server/version

Sonarqube arayüzüne de başarılı şekilde geçtik. Son olarak da bir tane .Net Core uygulamasını sonarqube ile analiz edelim. Manuel olarak gerçekleştircez. Bunun için manuel seçiyoruz ve ardından bir proje ismi yazıyoruz ve set up diyioruz.

Sonraki sekmede bir tane token ismi yazıp devam ediyoruz.

.Net projesi yapacağımız için .Net seçiyoruz ardından bize yükleyeceğimiz toolu ve sonarqube projemizi nasıl göndereceğimiz komutlarını gösteriyor.

Sıfırdan bir örnek yaptığımız için ilk olarak dotnet kurulumu yapıyoruz.

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get update \   
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-5.0
sudo dotnet --versionsudo dotnet --list-sdks

Şimdide bir tane webapi projesi oluşturalım.

dotnet new webapi --name NetExcode .

Projeyi çalıştırıp “https://localhost:5001/swagger/index.html” gittiğimizde basit webapi projemiz çalışıyor.

Basit bir webapi projeside oluşturduğumuza göre şimdi de sonarqube yollamak için, Sonarqube bize verdiği komutlar ile tamamlayalım. ilk olarak sonarscanner tool kurulumunu yapıyoruz.

dotnet tool install --global dotnet-sonarscannerdotnet sonarscanner begin /k:"NetCoreSonar" /d:sonar.host.url="http://192.168.1.28:9000"  /d:sonar.login="0fc3dd6d51831b3e89f275db735aeff4980b8c1c"dotnet builddotnet sonarscanner end /d:sonar.login="0fc3dd6d51831b3e89f275db735aeff4980b8c1c"

Komutlarda başarılı şekilde çalıştığına göre sonarsqube proje mize gittiğimizde projemizin geldiği görmekteyiz.

Security ile değer ‘E’ olarak gözüküyor. Bunu fix(düzetmek) için neleri yapacağımız hakkında bizi yönlendiriyor.

Gerekli fix lemeyi yaptıktan sonra,

Issue sekmesinden de code’unuz ile bugarı,güvenlik açıklarını bakıp fixleyebilirsiniz(düzenleyebilirsiniz).

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

Responses (1)