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:
- Pobierz i zainstaluj OpenJDK 17 (zalecane) lub Oracle JDK 17.
- 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:
- Pobierz SonarScanner (wersja CLI) ze strony producenta i rozpakuj.
- Dodaj ścieżkę do katalogu
bindo zmiennejPATH. - 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.





