SonarQube Nedir?
“Sorunsuz kod yazmak mı? Ya da daha iyisini yazabilmek mi?” soruları için,
Bu yazımda statik kod analizi yaptığımız SonarQube tool’undan bahsedeceğim.
SonarQube nedir? Faydaları nelerdir? Spartacus Java projesinde SonarQube nasıl kurulur? Jenkinste SonarQube için job nasıl oluşturulur?
SonarQube Nedir?
SonarQube, projelerinizdeki kodların belirli kurallara uyup uymadığını belirleyen, güvenlik açıklarının tespit edilmesi için statik kod analiziyle otomatik incelemeler yapan açık kaynak platformdur. Java, C#, JavaScript, C++ gibi 25+ programlama dilini destekler.
Statik kod analizi el ile yapılabilmesine rağmen büyük projelerde uğraşırken zaman kaybı olabilir ve el ile yapıldığında insan hatası olabileceği için hataya eğilimli olabilir.
Ayrıca SonarQube hataların nasıl düzeltilebileceği ile ilgili örnek verir.
SonarQube Faydaları Nelerdir?
- Okunabilir, bakımı kolay, dokümante edilmiş, karmaşıklığı düşük kod,
- Kodlama standartlarına uygun, performansı yüksek kod,
- Kodlama standartlarına uygun, performansı yüksek kod,
- Güvenlik açıkları giderilmiş ve hata potansiyeli düşük kod,
- Development yapan herkesin kullanabileceği bir tool,
- Ürün özelliklerinin daha hızlı teslimi,
- Daha stabil çalışan sistemler,
- 1000’den fazla birçok ihtiyaca yönelik eklentisinin olması,
- Java’da yazılmış olması itibari ile 25+ programlama dilini desteklemesi.
Sonarqube Kurulumu
İlk olarak Linux üzerinde SonarQube kurulumu yapıp daha sonra spartacus java projesinde SonarQube çalıştıracağız.
- SonarQube analizinin yapılabilmesi için öncelikle Java kurulumu yapılır.
Spartacus java projesi Java 11 desteklemektedir. https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html linkinden JDK kurulumu yapabilirsiniz.
- Java kurulumu yapıldıktan sonra SonarQube (https://www.sonarqube.org/downloads/) sitesinden Community versiyonu indirilir.
İndirilen zip çıkartıldığında aşağıdaki dosya yapısı açılacaktır;
- SonarQube kurulumu ile ilgili config değişkenleri düzenlenir. Config dosyasından wrapper.conf dosyası açılır. Javanın olduğu path ve güncel versiyonu için aşağıdaki satır eklenir.
- Kurulumu localinizde yaptıysanız SonarQube panelini http://localhost:900/ url’inden görüntüleyebilirsiniz.
Açılan login ekranında ilk username/password : admin/admin şeklindedir.İlk girişten sonra şifre yenileme ekranı açılır.
- Login olduktan sonra proje eklenir.
Spartacus Entegrasyonu
- ant task jar “sonarqube-ant-task-2.5.jar” dosyasını indirilip Spartacus kurulum dizini altındaki config/customize/platform/resources/ant/sonar/lib pathine koyulur.
- Yeni bir spartacus projesi eklemek için Create Project tab’ına geldikten sonra manually seçilir.
- Yeni proje sayfasında proje ismi verilir ve proje oluşturulur.
- My account sayfasındaki security tab’ına geçilir.
- Açılan sayfada token name girilerek generate edilir ve token alınır.
Üretilen token 1 kere gösterildiği için kopyalamayı unutmayın!
- Daha sonra test edilecek olan proje dizinine gelinir “/core-customize/hybris/config” pathindeki“local.properties” dosyasına aşağıdaki config’ler eklenir;
sonar.projectName=<project-name>
sonar.projectKey=< project-name >
sonar.projectVersion=1.0
sonar.excludedExtensions= core,testweb,scripting,paymentstandard,mediaweb,maintenanceweb,deliveryzone,commons,processing,impex,validation,catalog,europe1,platformservices,workflow
sonar.host.url=<URL>
sonar.login=<token>
sonar.language=java
- Terminalden dosyanın config/customize/platform(ant sonarın olduğu) dizinine gidilir.
- “. ./setantenv.sh” komutu ile proje build edilir.
- “ant clear all” komutu çalıştırılır.
- SonarQube analizi için “ant sonarcheck” komutu çalıştırılır.
- Analizden sonra sunucuya bağlandığınızda, raporlama ekranı aşağıdaki gibi olacaktır. Detayını projenize girerek görebilirsiniz .
Jenkinste SonarQube için Job Nasıl Oluşturulur?
SonarQube Jenkins ile entegre olduğunda yapılan her Git push talebinden sonra deploy olacak kodun kalitesini ölçer.
- İlk olarak Dashboard’ da yeni job için New Item seçilir.
- Daha sonra projenizin ismini verilip “Freestyle Project” seçilir.
- SonarQube analizinin yapılacağı, kodu indirip kurulumları yaptığınız server bilgileri Label Expression kısmına yazılır.
- Build periodically seçeneğinden analizi hangi periyotlarla yapacağınızı yazabilirsiniz.
- Build kısmına aşağıdaki execute shell scriptleri yazılır.
JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export JRE_HOME
export PATH
cd /home/ebebekdev/spartacus.ebebek.com/core-customize/hybris/bin/platform
git fetch origin
git reset — hard
git pull origin $branch
. ./setantenv.sh
ant clean all
ant sonarcheck
Ek olarak,
SonarQube analizinde job’ı istediğiniz branch ile build etmek için aşağıdaki şekilde parametre olarak tanımlama yapabilirsiniz.
Kaynakça
· https://www.artistanbul.io/blog/2019/09/20/sonarqube-ile-statik-kod-analizi/