SonarQube etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SonarQube etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

1 Mart 2023 Çarşamba

Sonar Hataları

Sonar tarafından raporlanan bazı hataları dikkate almamak yani suppress etmek için 

1. koddaki o satırın sonuna //NOSONAR eklenir
2. Metoda @java.lang.SuppressWarnings(sonar_issue_id_string) eklenir. 

Örnek
Şeklen şöyle

Bu hata için metodun başına şöyle yaparız
@java.lang.SuppressWarnings("java:S112")




13 Aralık 2022 Salı

Docker Compose ve SonarQube

Örnek
Şöyle yaparız
version: "3"

services:
  sonarqube:
    image: sonarqube
    expose:
      - 9000
    ports:
      - "127.0.0.1:9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
      - sonar.jdbc.username=sonar
      - sonar.jdbc.password=sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:

volumes:
  sonarqube_conf:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_bundled-plugins:
  postgresql:
  postgresql_data:


12 Kasım 2022 Cumartesi

SonarQube Create Project

Giriş
Not : Bu yazı SonarQube yazısının bir bölümü

From Azure, From Bitbucket, From GitHub, From GitLab, Manually gibi seçenekler var. 

Create a Project Sayfası
Projeyi yarattıktan sonra CI/CD pipeline'a dahil olmak için bir token yaratmak gerekiyor. Bu token sonar plugin ayarlarına giriliyor. Böylece plugin koşturduğu test sonuçlarını Sonar'a gönderebiliyor. Şeklen şöyle

Proje Nerede Çalışacak
Şeklen şöyle. Burada Locally seçiliyor


Provide a Token - Token Yaratma
Şeklen şöyle

Bir başka şekil şöyle

token sonar.login alanında kullanılır.

Run Analysis on your project
Burada sadece ne yapılacağına dair açıklama gösteriliyor. Java + maven için açıklama şeklen şöyle

SonarQube Code Sekmesi - İstatistik Gösterir

Giriş
Not : Bu yazı SonarQube yazısının bir bölümü

Şeklen şöyle


SonarQube Security Hotspots Sekmesi

Giriş
Not : Bu yazı SonarQube yazısının bir bölümü

Şeklen şöyle
Burada Math.random() günli olmadığı için uyarı gösteriliyor.

SonarQube Issues Sekmesi

Giriş
Not : Bu yazı SonarQube yazısının bir bölümü

- Bug sekmesinde bariz şekilde hatalı şeyler gösterilir. Önce bunlar düzeltmek gerekir, çünkü sayıları 
Code Smell sekmesine göre genellikle daha az oluyor.
- Code Smell sekmesinde düzeltilmesi gereken kodlar gösterilir. 

Code Smells
Şeklen şöyle


Bir başka şekil şöyle

Eğer Open menüsüne tıklarsak Resolve as false positive seçeneğini görebiliriz. Nadiren de olsa Sonar hata yapıyor. Bunları false positive olarak işaretleyip bu madde kapatılabilir. Şeklen şöyle






SonarQube Overview Sekmesi - Quality Gate Status Alanı

Giriş
Not : Bu yazı SonarQube yazısının bir bölümü

Overview sekmesinde  3 tane alan var

1. Quality Status Alanı

2. New Code Code Sekmesi
Burada yeni kodların durumu gösterilir. New Bugs, New Vulnerabilities, New Security Hotspots, Added Debt vs gibi alanlar var.

3. Overall Code Sekmesi
Burada tüm kodun durumu gösterilir. Bugs, Vulnerabilities, Security Hotspots, Debt vs gibi alanlar var.

Bu alan ve panellerin açıklaması şöyle
Quality gate status: Passed. You can set certain rules for quality gate and based on them, you’ll get a boolean, passed or not. Rule can be for example Test coverage 80%

New Code / Overall Code: In the Overall, you can get all the reports within the project code base. In New Code, you can see the diff after running a second analysis of the same branch. So you can see only the analysis of your latest changes.

Main reporting: Bugs, Vulnerabilities, Security issues, Code smells and technical debts. All with links included so you can dive in. Technical debt is measured by some average assumptions made by SonarQube, and it can give you the feeling how much time will you spent on solving these things.

Coverage: I do have 3 unit tests, and SonarQube detects them, which is nice. However, I remember there has to be some SonarQube plugins activated (or configured) so it can detect line coverage. As you can see, it’s 0.0% at the moment, which I know it’s not correct.

Duplication: This section can find and show how much duplicated code do you have in terms of line and percentage of your total code base.

Quality Gate Status Alanı
Soldaki panelin adı Quality Gate Status Alanı. Tüm projenin genel durumu gösterilir. Eğer projede sorun varsa FAILED olarak işaretlenir ve sebebi açıklanır. Şeklen şöyle. Burada testlerde ve kapsamada sorun yok. Code smell olsa bile Passed olarak gösteriliyor.

FAILED Durumu
Şeklen şöyle. Burada On New Code yani yeni kod için test yazılmadığı belirtiliyor ve proje FAILED olarak gösterilir.


Örnek
Şeklen şöyle



19 Şubat 2018 Pazartesi

SonarQube

Giriş
Not : Sonar yerine Embold kullanılabilir.

Sonar Ürünleri
3 farklı Sonar ürünü var. Bunlar şöyle
Currently, it is available in 3 options:

SonarLint — IDE plugin
SonarQube — for deploying in your infrastructure
SonarCloud — SaaS version
Sonar Hatalarını Dikkate Almamak
Sonar Hataları yazısına taşıdım

Kurulum
Veri tabanı olarak gömülü veya harici bir şey kullanabilir. Gömülü veri tabanı için açıklama şöyle
Embedded database should be used for evaluation purposes only

The embedded database will not scale, it will not support upgrading to newer versions of SonarQube, and there is no support for migrating your data out of it into a different database engine.
Örnek - docker with embedded DB
Şöyle yaparız
docker run --name sonar -p 9000:9000 sonarqube:9.0.1-community
Şu adrese gideriz
http://localhost:9000/ (credentials: admin/admin)
Örnek - docker with embedded DB
Şöyle yaparız
docker pull sonarqube:8.5.1-community docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:8.5.1-community
Örnek - postgre kurulumu
Önce postgre kurmak ve sonaruser kullanıcısını yaratmak için şöyle yaparız
sudo systemctl enable postgresql sudo systemctl start postgresql sudo passwd postgres su - postgres createuser sonaruser
Şöyle yaparız
sudo groupadd sonar sudo useradd -d /home/ajanthan/applications/sonarqube/sonarqube -g sonar sonar sudo chown sonar:sonar /home/ajanthan/applications/sonarqube/sonarqube -R
sonar.properties dosyasına veri tabanı bağlantısı için gerekli bilgileri gireriz.

Maven
sonar plugin yazısına taşıdım

Gradle
sonar plugin yazısına taşıdım

Create Project
Create Project sayfası yazısına taşıdım

Projects Sayfası
Şeklen şöyle
Projeye tıkladıktan sonra karşımıza aşağıdaki sekmeler çıkıyor

Overview Sekmesi
Overview Sekmesi yazısına taşıdım

Issues Sekmesi
Issues Sekmesi yazısına taşıdım

Security Hotspots Sekmesi
Security Hotspots Sekmesi yazısına taşıdım

Codes Sekmesi
Codes Sekmesi yazısına taşıdım

Measures Menüsü
Coverage alanı kullanılarak birim testlerin kodun ne kadarını kapsadığı görülebilir. Şeklen şöyle

Maturity Metric
Kodun ne kadar iyi olduğunu gösterir. Ayrıca Cognitive Complexity yazısına bakabilirsiniz.

Şeklen şöyle

Dashboards Menüsü
Coverage bilgisini görsel kutucuklar olarak gösterir. Kırmız ve turuncu renkler coverage yüzdesinin düşük olduğunu belirtir. Ayrıca kutucukların büyüklüğü paketlerin büyüklüğü ile orantılıdır.

Administration -> General Settings -> Analysis Scope Menüsü
Bu menü altında Coverage Exclusions kutusuna kapsamaya dahil edilmeyecek paketler eklenebilir. İşlem bitince Save Code Coverage Settings düğmesine tıklamayı unutmayın.