Code Analyse mit SonarQube

Bei der Arbeit an größeren Projekten ist es immer eine bewährte Methode, eine statische Code Analyse durchzuführen, um den Code besser und sicherer strukturieren zu können. SonarQube ist hier ein bekanntes Open-Source Tool, das für die kontinuierliche Überprüfung des Codes verwendet werden kann.

SonarQube stellt die folgenden Punkte in Form von Analyseberichten zur Verfügung:

  • Statische Codeanalyse inklusive Fehlerberichten
  • Code Smells
  • Code Duplizierungen
  • Vulnerability Scanner

In diesem Artikel zeige ich, wie man mit SonarQube starten kann – dafür habe ich diese Tools verwendet:

Voraussetzungen:

  • Visual Studio 2019
  • Java JDK 11.0.12
  • Sonarqube 9.0.1
  • VS Extension: Run Coverlet Report 1.12.0
  • SonarScanner

Beispiel

1. Installation von SonarQube

Für das Beispielporjekt habe ich die gratis Community Version verwendet. Diese kann auf der SonarQube Website geladen werden und für die lokale Entwicklung verwendet werden.

Es wird eine Zip Datei geladen – diese muss mittels Kontextmenü, rechte Maustaste, auf Unblock gesetzt werden, da die Datei möglicherweise auf dem System geblockt ist.

Anschließend die Zip Datei z.B. nach C:\SonarQube\sonarqube-9.0.1.46107 extrahieren.

2. Installation JDK

Im nächsten Schritt muss die Java JDK installiert werden. Falls bereits eine Java Installation vorhanden ist, kann die Version in CMD mit dem folgenden Command geprüft werden:

java -version

Falls noch keine Java Installation erfolgt ist, oder es später zu einer Fehlermeldung in Bezug auf die Java JDK Versionsnummer kommt – muss Java erst auf dem System installiert werden. Dafür – für dieses Beispiel – den Installer von der Java Version 11 von der Oracle Website beziehen, oder alternativ die OpenJdk verwenden.

3. Java Pfad in SonarQube setzen

In das SonarQube Installationsverzeichnis wechseln und die Wrapper.config Datei öffnen – z.B. C:\SonarQube\sonarqube-9.0.1.46107\conf\wrapper.conf

In der Datei den wrapper.java.command Pfad auf die installierte Java Jdk setzen:

4. Installation Run Coverlet Report Extension

Visual Studio starten und unter Extensions – Manage Extensions – die Run Coverlet Report Extension installieren

5. Installation SonarScanner

Starten der CMD und folgenden Command eingeben:

dotnet tool install --global dotnet-sonarscanner

6. Ein Beispielprojekt mit UnitTests in Visual Studio erstellen

Für das Beispiel habe ich eine einfache CalculatorApp mit einem XUnitTest Projekt erstellt:

7. SonarQube starten

Es ist an der Zeit, SonarQube mittels CMD zu starten. Dafür in der CMD die StartSonar.bat ausführen. Diese Datei befindet sich im bin Verzeichnis im SonarQube Installtionsverzeichnis z.B: C:\SonarQube\sonarqube-9.0.1.46107\bin\windows-x86-64\StartSonar.bat

StartSonar.bat

8. Projekt scannen

In das .NET Projektverzeichnis navigieren und die folgenden Commands in der CMD verwenden:

dotnet sonarscanner begin /k:"CalculatorApp_Scan" /d:sonar.login="admin" /d:sonar.password="admin"
dotnet build
dotnet test --collect:"XPlat Code Coverage"
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
dotnet sonarscanner end /d:sonar.login="admin" /d:sonar.password="admin"

SonarQube hat nun das Projekt gescannt, alle relevanten Informationen gesammelt und erstellt nun den Code Analysis Report.

9. Berichte prüfen

In einem nächsten Schritt können die Berichte im Browser über die SonarQube Url http://localhost:9000/ geprüft werden.

Als Fazit kann gesagt werden, SonarQube ist ein sehr gutes Open-Source Tool zur statischen Codeanalyse, das lokal in der Entwicklung, aber auch im Deploymentprozess z.B. in der Azure DevOps Pipeline, verwendet werden kann.