Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

SonarQube est une plateforme open source pour assurer un contrôle continu de la qualité du code source, prenant en charge de nombreux langages de programmation et permettant d'obtenir des rapports sur des métriques telles que la duplication de code, la conformité aux normes de codage, la couverture des tests, la complexité du code, les erreurs potentielles, etc. SonarQube visualise les résultats de l'analyse de manière conviviale et permet de suivre l'évolution du projet dans le temps.

Objectif : Montrer aux développeurs l'état du contrôle de la qualité du code source dans SonarQube.

Il y a deux façons de résoudre cela :

  • Exécuter un script pour vérifier l'état du contrôle de la qualité du code source dans SonarQube. Si le contrôle de la qualité du code source dans SonarQube échoue, alors échouer le build.
  • Afficher sur la page d'accueil du projet l'état du contrôle de la qualité du code source.

Installation de SonarQube

Pour installer SonarQube à partir de paquets RPM, utilisons le dépôt https://harbottle.gitlab.io/harbottle-main.

Installons le paquet avec le dépôt pour CentOS 7.

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

Installons SonarQube lui-même.

yum install -y sonarqube

La plupart des plugins seront installés lors de l'installation, mais il faut ajouter findbugs et pmd.

yum install -y sonarqube-findbugs sonarqube-pmd

Démarrons le service et ajoutons-le au démarrage automatique.

systemctl start sonarqube
systemctl enable sonarqube

Si le démarrage est long, ajoutez à la fin des options sonar.web.javaOpts générateur de nombres aléatoires /dev/.urandom

sonar.web.javaOpts=autres paramètres -Djava.security.egd=file:/dev/urandom

Exécution d'un script pour vérifier l'état du contrôle de la qualité du code source dans SonarQube.

Malheureusement, le plugin sonar-break-maven-plugin n'a pas été mis à jour depuis longtemps. Créons donc notre propre script.

Pour les tests, nous utiliserons le dépôt https://github.com/uweplonus/spotbugs-examples.

Importons dans GitLab. Ajoutons le fichier .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" # identifiant sonarqube
  PASSWORD: "admin" # mot de passe 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 où le rapport est stocké
    - echo $URL
    - |
      while : ;do
          curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
          export status=$(cat analysis.txt | jq -r '.task.status') #Statut comme SUCCESS, CANCELED, IN_PROGRESS ou FAILED
          echo $status
          if [ ${status} == "SUCCESS" ];then
            echo "ANALYSE SONAR RÉUSSIE";
            break
          fi
          sleep 5
      done
    - curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
    - export status=$(cat analysis.txt | jq -r '.task.status') #Statut comme SUCCESS, CANCELED ou FAILED
    - export analysisId=$(cat analysis.txt | jq -r '.task.analysisId') #Obtenir l'ID de l'analyse
    - |
      if [ "$status" == "SUCCESS" ]; then
        echo -e "ANALYSE SONAR RÉUSSIE...ANALYSE DES RÉSULTATS";
        curl -k -u "$LOGIN":"$PASSWORD" "$SONAR_HOST_URL/api/qualitygates/project_status?analysisId=$analysisId" -o result.txt; #Résultat de l'analyse comme problèmes critiques, majeurs et mineurs
        export result=$(cat result.txt | jq -r '.projectStatus.status');

        if [ "$result" == "ERROR" ];then
          echo -e "91mRÉSULTATS SONAR ÉCHOUE";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')"; #imprime les violations critiques, majeures et mineures
          exit 1 #interrompt la construction pour les violations
        else
          echo -e "RÉSULTATS SONAR RÉUSSIS";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')";
          exit 0
        fi
      else
          echo -e "e[91mL'ANALYSE SONAR A ÉCHOUÉe[0m";
          exit 1 #interrompt la construction pour échec à l'étape 2
      fi
  tags:
    - docker

Le fichier .gitlab-ci.yml n'est pas parfait. Il a été testé si les tâches de vérification dans sonarqube se terminaient avec le statut : "SUCCESS". Pour l'instant, il n'y a pas eu d'autres statuts. Quand d'autres statuts apparaîtront, je mettrai à jour .gitlab-ci.yml dans ce post.

Affichage sur la page d'accueil du projet du statut de contrôle de la qualité du code source

Installation du plugin pour SonarQube

yum install -y sonarqube-qualinsight-badges

Nous accédons à SonarQube à l'adresse http://172.26.9.115:9000/
Créer un utilisateur standard, par exemple "badges".
Se connecter avec cet utilisateur dans SonarQube.

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Accédez à "Mon compte", créez un nouveau token, par exemple nommé "read_all_repository" et cliquez sur "Générer".

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Nous voyons qu'un token est apparu. Il n'apparaîtra qu'une seule fois.

Se connecter en tant qu'administrateur.

Aller à Configuration -> SVG Badges

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Copiez ce jeton dans le champ "Activity badge token" et cliquez sur le bouton save.

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Allez dans Administration -> Sécurité -> Modèles de permissions -> Modèle par défaut (et d'autres modèles que vous pourriez avoir).

Pour l'utilisateur, il est nécessaire de cocher la case "Browse".

Les tests.

Prenons un projet en exemple. https://github.com/jitpack/maven-simple.

Importons ce projet.

Ajoutez le fichier .gitlab-ci.yml à la racine du projet avec le contenu suivant.

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" # login sonarqube
  PASSWORD: "admin" # mot de passe 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

Dans SonarQube, le projet apparaîtra comme suit :

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Ajoutez des badges dans README.md et ils apparaîtront ainsi :

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Le code d'affichage des badges ressemble à ceci :

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Analyse de la chaîne d'affichage des badges :

[![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.jitpackmaven-simple)
[![Nom](http://172.26.9.115:9000/api/badges/gate?key=Project Key)](http://172.26.9.115:9000/dashboard?id=id-projet)
[![Couverture](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.jitpackmaven-simple)
[![Nom de la Métrique](http://172.26.9.115:9000/api/badges/measure?key=Project Key&metric=MÉTRIQUE)](http://172.26.9.115:9000/dashboard?id=id-projet)

Où trouver/vérifier la clé du projet et l'id du projet.

La clé du projet se trouve en bas à droite. L'ID du projet est dans l'URL.

Affichage aux développeurs de l'état du contrôle qualité du code source dans SonarQube

Les options pour obtenir des métriques peuvent être consultées ici..

Toutes les pull requests pour des améliorations, des corrections de bogues sont à envoyer dans ce dépôt..

Chat Telegram sur SonarQube. https://t.me/sonarqube_ru
Chat Telegram sur DevSecOps - DevOps sécurisé. https://t.me/sec_devops

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster