Anzeigen des Status der Qualitätskontrolle von Quellcode in SonarQube für Entwickler

SonarQube ist eine offene Plattform für die kontinuierliche Qualitätskontrolle von Quellcode, die eine große Anzahl von Programmiersprachen unterstützt und es Ihnen ermöglicht, Berichte über Metriken wie Codeduplizierung, Einhaltung von Codierungsstandards, Testabdeckung, Codekomplexität, potenzielle Fehler usw. zu erhalten. SonarQube visualisiert bequem die Ergebnisse der Analyse und ermöglicht es Ihnen, die Dynamik des Projekts über die Zeit zu verfolgen.


Aufgabe: Zeigen Sie den Entwicklern den Status der Quellcode-Qualitätskontrolle in SonarQube.


Es gibt zwei Lösungen:


  • Führen Sie ein Skript aus, um den Status der Quellcode-Qualitätskontrolle in SonarQube zu überprüfen. Wenn die Qualitätskontrolle des Quellcodes in SonarQube fehlschlägt, schlägt die Assembly fehl.
  • Zeigen Sie den Status der Qualitätskontrolle des Quellcodes auf der Hauptseite des Projekts an.

Installieren Sie SonarQube


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


Installieren Sie das Repository-Paket für CentOS 7.


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

Installieren Sie Sonarqube selbst.


yum install -y sonarqube

Die meisten Plugins werden während der Installation installiert, aber findbugs und pmd müssen installiert werden


yum install -y sonarqube-findbugs sonarqube-pmd

Wir starten den Dienst und fügen ihn dem Autoload hinzu


systemctl start sonarqube
systemctl enable sonarqube

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


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

Ausführen eines Skripts zum Überprüfen des Status der Quellcode-Qualitätskontrolle in SonarQube.


, sonar-break-maven-plugin . .


https://github.com/uweplonus/spotbugs-examples.


Gitlab. .gitlab-ci.yml:


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.226:9000"
  LOGIN: "admin" #  sonarqube
  PASSWORD: "admin" #  sonarqube

cache:
  paths:
    - .m2/repository

build:
  image: maven:3.3.9-jdk-8
  stage: build
  script:
    - 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 where report gets stored
    - echo $URL
    - |
      while : ;do
          curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
          export status=$(cat analysis.txt | jq -r '.task.status') #Status as SUCCESS, CANCELED, IN_PROGRESS or FAILED
          echo $status
          if [ ${status} == "SUCCESS" ];then
            echo "SONAR ANALYSIS SUCCESS";
            break
          fi
          sleep 5
      done
    - curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
    - export status=$(cat analysis.txt | jq -r '.task.status') #Status as SUCCESS, CANCELED or FAILED
    - export analysisId=$(cat analysis.txt | jq -r '.task.analysisId') #Get the analysis Id
    - |
      if [ "$status" == "SUCCESS" ]; then
        echo -e "SONAR ANALYSIS SUCCESSFUL...ANALYSING RESULTS";
        curl -k -u "$LOGIN":"$PASSWORD" "$SONAR_HOST_URL/api/qualitygates/project_status?analysisId=$analysisId" -o result.txt; #Analysis result like critical, major and minor issues
        export result=$(cat result.txt | jq -r '.projectStatus.status');

        if [ "$result" == "ERROR" ];then
          echo -e "91mSONAR RESULTS FAILED";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')"; #prints the critical, major and minor violations
          exit 1 #breaks the build for violations
        else
          echo -e "SONAR RESULTS SUCCESSFUL";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')";
          exit 0
        fi
      else
          echo -e "\e[91mSONAR ANALYSIS FAILED\e[0m";
          exit 1 #breaks the build for failure in Step2
      fi
  tags:
    - docker

.gitlab-ci.yml . sonarqube : "SUCCESS". . , .gitlab-ci.yml .



SonarQube


yum install -y sonarqube-qualinsight-badges

SonarQube http://172.26.9.115:9000/
, "badges".
SonarQube.



"My account", , "read_all_repository" "Genereate".



. 1 .


.


Configuration -> SVG Badges



"Activity badge token" save.



Administration -> Security -> Permission Templates -> Default template ( , ).


badges "Browse".


.


https://github.com/jitpack/maven-simple.


.


.gitlab-ci.yml .


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" #  sonarqube
  PASSWORD: "admin" #  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

SonarQube :



bages README.md e :



Der Code für die Anzeige der Ausweise sieht folgendermaßen aus:



Analysieren der Anzeigezeichenfolge von Abzeichen:


[![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 Sie den Projektschlüssel und die Projekt-ID erhalten / überprüfen können.


Der Projektschlüssel befindet sich unten rechts. Die URL enthält die Projekt-ID.



Optionen zum Abrufen von Metriken finden Sie hier .


Alle Pull-Verbesserungswünsche und Fehlerbehebungen werden an dieses Repository gesendet .


Telegramm-Chat über SonarQube https://t.me/sonarqube_ru
Telegramm-Chat über DevSecOps - sichere DevOps https://t.me/sec_devops

Source: https://habr.com/ru/post/undefined/


All Articles