Instalacja SonarQube – analiza jakości kodu .NET i JS

6 min. czytania

SonarQube to narzędzie do statycznej analizy kodu, które automatycznie ocenia jakość i bezpieczeństwo oprogramowania w wielu językach (m.in. .NET i JavaScript), integrując się z CI/CD oraz popularnymi IDE.

Platforma jest napisana w Javie i działa jako serwer aplikacyjny, do którego wysyłane są wyniki analiz ze skanerów uruchamianych lokalnie lub w pipeline’ach.

To świetny wybór dla początkujących – SonarQube pomaga wykrywać błędy, luki bezpieczeństwa i miejsca wymagające refaktoryzacji, ucząc dobrych praktyk programistycznych.

Wymagania systemowe

Przed instalacją upewnij się, że spełniasz następujące warunki:

  • Java 17 – Oracle JRE/JDK 17 lub OpenJDK 17;
  • Baza danych – PostgreSQL (zalecana i oficjalnie wspierana w nowszych wersjach SonarQube; MS SQL Server był wspierany w starszych wydaniach 7.x/7.9 LTS);
  • Zasoby – co najmniej kilka GB wolnej pamięci RAM i miejsca na dysku na indeksy i metryki;
  • Docker (opcjonalnie) – do szybkiego uruchomienia środowiska w kontenerach.

W nowszych wersjach SonarQube oficjalnie wspiera wyłącznie bazę danych PostgreSQL – do środowisk produkcyjnych używaj właśnie jej.

Metoda 1 – instalacja lokalna z wykorzystaniem Dockera

Docker to najprostszy sposób na szybkie uruchomienie SonarQube wraz z bazą PostgreSQL. Poniżej znajdziesz minimalną, rekomendowaną konfigurację dwukontenerową:

Krok 1 – pobranie obrazu SonarQube

W terminalu pobierz obraz Community Edition:

docker pull sonarqube:community

Krok 2 – uruchomienie bazy PostgreSQL

Najpierw uruchom kontener z PostgreSQL i utwórz dedykowaną bazę oraz użytkownika:

docker network create sonar-net
docker run -d --name sonar-db --network sonar-net \
-e POSTGRES_USER=sonar \
-e POSTGRES_PASSWORD=sonarpass \
-e POSTGRES_DB=sonarqube \
-v sonar-postgres:/var/lib/postgresql/data \
-p 5432:5432 postgres:15

Krok 3 – uruchomienie kontenera SonarQube

Następnie wystartuj SonarQube, podając dane połączenia do bazy:

docker run -d --name sonarqube --network sonar-net \
-p 9000:9000 \
-e SONAR_JDBC_URL=jdbc:postgresql://sonar-db:5432/sonarqube \
-e SONAR_JDBC_USERNAME=sonar \
-e SONAR_JDBC_PASSWORD=sonarpass \
-v sonar-data:/opt/sonarqube/data \
-v sonar-extensions:/opt/sonarqube/extensions \
sonarqube:community

Po starcie daj serwerowi kilkadziesiąt sekund na pełną inicjalizację – indeksowanie i rozruch usług potrafią chwilę potrwać.

Krok 4 – weryfikacja działania

Aby upewnić się, że wszystko działa, sprawdź listę kontenerów:

docker ps -a

W kolumnie status przy kontenerze sonarqube powinno widnieć Up.

Krok 5 – dostęp do interfejsu

Wejdź w przeglądarce pod adres:

http://localhost:9000

Domyślne dane logowania: admin / admin. Przy pierwszym logowaniu system wymusi zmianę hasła – wykonaj ją od razu.

Metoda 2 – instalacja na systemie Windows (dla .NET)

Poniżej znajdziesz klasyczną instalację na Windows z konfiguracją bazy:

Krok 1 – instalacja Java

Wykonaj następujące czynności:

  1. Pobierz i zainstaluj OpenJDK 17 (zalecane) lub Oracle JDK 17.
  2. Ustaw zmienne środowiskowe systemowe:

Skonfiguruj kluczowe zmienne w systemie:

  • JAVA_HOME – ścieżka do katalogu JDK;
  • PATH – dodaj %JAVA_HOME%\bin;
  • SONAR_JAVA_PATH – wskaż %JAVA_HOME%\bin\java.exe (często wymagane przy analizie projektów .NET).

Krok 2 – przygotowanie bazy danych (PostgreSQL)

Najpierw utwórz bazę i użytkownika dla SonarQube (przykład poleceń psql):

CREATE USER sonar WITH ENCRYPTED PASSWORD 'sonarpass';
CREATE DATABASE sonarqube OWNER sonar;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;

Jeśli korzystasz z MS SQL Server w starszych instalacjach, pamiętaj o ustawieniu collation: case-sensitive (CS) i accent-sensitive (AS), np. Polish_CS_AS.

Krok 3 – pobranie i rozpakowanie SonarQube

Pobierz paczkę ze strony SonarQube i rozpakuj w dogodnym miejscu, np.:

C:\SonarQube

Krok 4 – konfiguracja połączenia z bazą

W pliku conf/sonar.properties skonfiguruj parametry JDBC (dla PostgreSQL):

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
sonar.jdbc.username=sonar
sonar.jdbc.password=sonarpass

Krok 5 – uruchomienie serwera

Przejdź do katalogu instalacyjnego i uruchom skrypt startowy:

bin\windows-x86-64\StartSonar.bat

Po chwili interfejs będzie dostępny pod adresem:

http://localhost:9000

Instalacja SonarScanner dla projektów JavaScript

Do analiz projektów JS użyj SonarScanner CLI (skaner uniwersalny do wielu języków).

Instalacja SonarScanner

Wykonaj następujące czynności:

  1. Pobierz SonarScanner (wersja CLI) ze strony producenta i rozpakuj.
  2. Dodaj ścieżkę do katalogu bin do zmiennej PATH.
  3. W SonarQube utwórz token (Account → Security → Generate Tokens).

Konfiguracja projektu

W katalogu głównym projektu utwórz plik sonar-project.properties i zdefiniuj podstawowe właściwości:

sonar.projectKey=my:project
sonar.projectName=Mój projekt
sonar.projectVersion=1.0
sonar.sources=./src

Uruchomienie skanera

W katalogu projektu uruchom skaner, podając adres serwera i token (zmień wartości na własne):

sonar-scanner -Dsonar.host.url=http://localhost:9000 -Dsonar.token=YOUR_TOKEN

Wyniki analizy pojawią się w interfejsie SonarQube oraz będą dostępne przez API.

Integracja z projektami .NET

Instalacja dotnet-sonarscanner

Zainstaluj globalne narzędzie do analizy .NET:

dotnet tool install dotnet-sonarscanner --global

Konfiguracja i uruchomienie analizy

Standardowy przebieg (begin → build → end) wygląda następująco:

dotnet-sonarscanner begin /k:"my_dotnet_project" /d:sonar.host.url="http://localhost:9000" /d:sonar.token="YOUR_TOKEN"
dotnet build
dotnet-sonarscanner end /d:sonar.token="YOUR_TOKEN"

Analiza .NET integruje się z procesem kompilacji, dzięki czemu metryki i błędy są powiązane bezpośrednio z artefaktami builda.

Integracja z Mavenem (dla projektów Java/JavaScript w build pipeline)

Możesz uruchamiać analizę SonarQube bezpośrednio z Mavena, dodając plugin do pom.xml:

Dodanie pluginu do pom.xml

W sekcji build → plugins dodaj wpis (wersję dostosuj do aktualnie najnowszej):

<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.7.0.1746</version>
</plugin>

Uruchomienie skanera

W głównym katalogu projektu uruchom polecenie z parametrami połączenia:

mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.token=YOUR_TOKEN

Konfiguracja globalna (opcjonalnie)

Aby nie powtarzać parametrów, dopisz je do settings.xml (katalog ~/.m2/):

<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>

Integracja z popularnymi IDE

Eclipse

Skorzystaj z oficjalnego pluginu integrującego Eclipse z SonarQube. Instrukcje instalacji i konfiguracji znajdziesz w dokumentacji dodatku.

IntelliJ IDEA

Dla IntelliJ IDEA dostępny jest SonarLint, który analizuje kod w czasie rzeczywistym i sygnalizuje problemy bezpośrednio w edytorze.

Interpretacja wyników analizy

W panelu SonarQube znajdziesz kluczowe informacje o jakości i bezpieczeństwie kodu:

  • bugów – potencjalnych błędów wykonania i defektów logicznych;
  • luk w bezpieczeństwie – zagrożeń umożliwiających ataki;
  • problemów z Quality Gate – niespełnienia zdefiniowanych progów jakości (np. liczby bugów, pokrycia testami);
  • metryk kodu – m.in. złożoności, duplikacji i pokrycia testami.

Quality Gate pozwala egzekwować standardy – pipeline może przejść tylko wtedy, gdy projekt spełnia ustalone progi jakościowe.