Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

SonarQube ist eine Open-Source-Plattform zur kontinuierlichen Qualitätssicherung von Quellcode, die zahlreiche Programmiersprachen unterstützt und Berichte zu Metriken wie Code-Duplizierung, Einhaltung von Codierungsstandards, Testabdeckung, Code-Komplexität sowie potenziellen Fehlern erstellt. SonarQube visualisiert die Analyseergebnisse verständlich und ermöglicht die Nachverfolgung der Projektentwicklung im Zeitverlauf.

Aufgabe: Entwicklern den Status der Quellcode-Qualitätssicherung in SonarQube anzuzeigen.

Es gibt zwei Möglichkeiten zur Lösung:

  • Ein Skript zur Überprüfung des Status der Quellcode-Qualitätssicherung in SonarQube auszuführen. Wenn die Quellcode-Qualität in SonarQube nicht bestanden wird, soll der Build fehlschlagen.
  • Den Status der Quellcode-Qualitätssicherung auf der Hauptseite des Projekts anzuzeigen.

Installation von SonarQube

Um SonarQube aus RPM-Paketen zu installieren, verwenden wir das Repository. https://harbottle.gitlab.io/harbottle-main.

Wir installieren das Paket mit dem Repository für CentOS 7.

yum install -y https://harbottle.gitlab.io/harbottle-main/7/x86_64/harbottle-main-release.rpm

Wir installieren SonarQube selbst.

yum install -y sonarqube

Bei der Installation werden die meisten Plugins installiert, aber findbugs und pmd müssen zusätzlich installiert werden.

yum install -y sonarqube-findbugs sonarqube-pmd

Wir starten den Dienst und fügen ihn zur automatischen Startsequenz hinzu

systemctl start sonarqube
systemctl enable sonarqube

Wenn es lange dauert, fügen Sie am Ende der Optionen sonar.web.javaOpts den Zufallszahlengenerator /dev/./urandom hinzu

sonar.web.javaOpts=weitere Optionen -Djava.security.egd=file:/dev/urandom

Ausführung des Skripts zur Überprüfung des Code-Qualitätsstatus in SonarQube.

Leider wurde das Plugin sonar-break-maven-plugin schon lange nicht mehr aktualisiert. Daher schreiben wir unser eigenes Skript.

Für die Tests verwenden wir das Repository https://github.com/uweplonus/spotbugs-examples.

Importieren in Gitlab. Wir fügen die Datei .gitlab-ci.yml hinzu:

variablen:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=~/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  SONAR_HOST_URL: "http://172.26.9.226:9000"
  LOGIN: "admin" # Login für SonarQube
  PASSWORD: "admin" # Passwort für SonarQube

cache:
  pfade:
    - .m2/repository

build:
  image: maven:3.3.9-jdk-8
  phase: build
  skript:
    - apt install -y jq || true
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.failure.ignore=true org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent clean verify org.jacoco:jacoco-maven-plugin:0.8.5:report
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$LOGIN -Dsonar.password=$PASSWORD -Dsonar.gitlab.project_id=$CI_PROJECT_PATH -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
    - export URL=$(cat target/sonar/report-task.txt | grep ceTaskUrl | cut -c11- ) # URL, wo der Bericht gespeichert wird
    - echo $URL
    - |
      während : ;do
          curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
          export status=$(cat analysis.txt | jq -r '.task.status') #Status als SUCCESS, CANCELED, IN_PROGRESS oder FAILED
          echo $status
          wenn [ ${status} == "SUCCESS" ]; dann
            echo "SONAR ANALYSE ERFOLGREICH";
            break
          fi
          sleep 5
      done
    - curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
    - export status=$(cat analysis.txt | jq -r '.task.status') #Status als SUCCESS, CANCELED oder FAILED
    - export analysisId=$(cat analysis.txt | jq -r '.task.analysisId') #Erhalte die Analyse-ID
    - |
      wenn [ "$status" == "SUCCESS" ]; dann
        echo -e "SONAR ANALYSE ERFOLGREICH... ERGEBNISSE ANALYSIEREN";
        curl -k -u "$LOGIN":"$PASSWORD" "$SONAR_HOST_URL/api/qualitygates/project_status?analysisId=$analysisId" -o result.txt; #Analyseergebnis wie kritische, wesentliche und geringfügige Probleme
        export result=$(cat result.txt | jq -r '.projectStatus.status');

        wenn [ "$result" == "ERROR" ]; dann
          echo -e "91mSONAR ERGEBNISSE FEHLGESCHLAGEN";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')"; #druckt die kritischen, wesentlichen und geringfügigen Verstöße aus
          exit 1 #bricht den Build wegen Verstöße ab
        sonst
          echo -e "SONAR ERGEBNISSE ERFOLGREICH";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')";
          exit 0
        fi
      sonst
          echo -e "e[91mSONAR ANALYSE FEHLGESCHLAGENe[0m";
          exit 1 #bricht den Build wegen Fehler in Schritt 2 ab
      fi
  tags:
    - docker

Die Datei .gitlab-ci.yml ist nicht ideal. Es wurde getestet, ob die Prüfaufgaben in SonarQube den Status: "SUCCESS" haben. Bisher gab es keine anderen Status. Wenn es andere Status gibt, werde ich .gitlab-ci.yml in diesem Beitrag anpassen.

Anzeige des Status der Code-Qualitätskontrolle auf der Projekt-Homepage

Plugin für SonarQube installieren

yum install -y sonarqube-qualinsight-badges

Wir gehen zu SonarQube unter der Adresse http://172.26.9.115:9000/
Einen normalen Benutzer erstellen, z.B. "badges".
Wir melden uns mit diesem Benutzer in SonarQube an.

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Wir gehen zu "Mein Konto", erstellen einen neuen Token, z.B. mit dem Namen "read_all_repository" und klicken auf "Generieren".

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Wir sehen, dass ein Token angezeigt wird. Er erscheint nur einmal.

Wir melden uns als Administrator an.

Gehen zu Konfiguration -> SVG Badges

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Diesen Token in das Feld "Activity badge token" kopieren und die Schaltfläche speichern klicken.

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Gehen zu Verwaltung -> Sicherheit -> Berechtigungsvorlagen -> Standardvorlage (und andere Vorlagen, die Sie haben).

Für den Benutzer badges muss das Kästchen "Browse" aktiviert werden.

Testen.

Zum Beispiel nehmen wir das Projekt https://github.com/jitpack/maven-simple.

Importieren dieses Projekts.

Fügen Sie die Datei .gitlab-ci.yml mit folgendem Inhalt in das Wurzelverzeichnis des Projekts ein.

variables:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=~/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  SONAR_HOST_URL: "http://172.26.9.115:9000"
  LOGIN: "admin" # Benutzername Sonarqube
  PASSWORD: "admin" # Passwort Sonarqube

cache:
  paths:
    - .m2/repository

build:
  image: maven:3.3.9-jdk-8
  stage: build
  script:
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.failure.ignore=true org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent clean verify org.jacoco:jacoco-maven-plugin:0.8.5:report
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$LOGIN -Dsonar.password=$PASSWORD -Dsonar.gitlab.project_id=$CI_PROJECT_PATH -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
  tags:
    - docker

In SonarQube wird das Projekt so aussehen:

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Wir fügen Badges in die README.md ein, und sie werden so aussehen:

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Der Code zur Anzeige der Badges sieht so aus:

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Analyse der Badge-Anzeigezeichenfolge:

[![Quality Gate](http://172.26.9.115:9000/api/badges/gate?key=com.github.jitpack:maven-simple)](http://172.26.9.115:9000/dashboard?id=com.github.jitpack%3Amaven-simple)
[![Название](http://172.26.9.115:9000/api/badges/gate?key=Project Key)](http://172.26.9.115:9000/dashboard?id=id-проекта)
[![Coverage](http://172.26.9.115:9000/api/badges/measure?key=com.github.jitpack:maven-simple&metric=coverage)](http://172.26.9.115:9000/dashboard?id=com.github.jitpack%3Amaven-simple)
[![Название Метрики](http://172.26.9.115:9000/api/badges/measure?key=Project Key&metric=МЕТРИКА)](http://172.26.9.115:9000/dashboard?id=id-проекта)

Wo finde ich den Project Key und die Projekt-ID?

Der Project Key befindet sich rechts unten. Im URL finden Sie die Projekt-ID.

Anzeige des Status der Qualitätskontrolle des Quellcodes in SonarQube

Die Optionen zur Erfassung von Metriken finden Sie hier.

Alle Pull-Requests zur Verbesserung und Fehlerbehebung richten Sie bitte an dieses Repository.

Telegram-Chat über SonarQube https://t.me/sonarqube_ru
Telegram-Chat über DevSecOps – sicheres DevOps https://t.me/sec_devops

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster