Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Το SonarQube είναι μια πλατφόρμα διασφάλισης ποιότητας κώδικα ανοιχτού κώδικα που υποστηρίζει ένα ευρύ φάσμα γλωσσών προγραμματισμού και παρέχει αναφορές σχετικά με μετρήσεις όπως διπλασιασμός κώδικα, συμμόρφωση με πρότυπα κωδικοποίησης, κάλυψη δοκιμών, πολυπλοκότητα κώδικα, πιθανά σφάλματα και πολλά άλλα. Το SonarQube οπτικοποιεί εύκολα τα αποτελέσματα της ανάλυσης και σας επιτρέπει να παρακολουθείτε τη δυναμική της ανάπτυξης του έργου με την πάροδο του χρόνου.

Στόχος: Δείξτε στους προγραμματιστές την κατάσταση του ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube.

Υπάρχουν δύο λύσεις:

  • Εκτελέστε ένα σενάριο για να ελέγξετε την κατάσταση ελέγχου ποιότητας του πηγαίου κώδικα στο SonarQube. Εάν ο έλεγχος ποιότητας του πηγαίου κώδικα στο SonarQube δεν περάσει, τότε αποτύχει η συναρμολόγηση.
  • Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στην κύρια σελίδα του έργου.

Εγκατάσταση του SonarQube

Για να εγκαταστήσουμε το sonarqube από πακέτα rpm, θα χρησιμοποιήσουμε το αποθετήριο https://harbottle.gitlab.io/harbottle-main.

Ας εγκαταστήσουμε το πακέτο αποθετηρίου για το CentOS 7.

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

Εγκαθιστούμε το ίδιο το sonarqube.

yum install -y sonarqube

Κατά την εγκατάσταση, θα εγκατασταθούν τα περισσότερα πρόσθετα, αλλά πρέπει να εγκαταστήσετε το findbugs και το pmd

yum install -y sonarqube-findbugs sonarqube-pmd

Εκκινήστε την υπηρεσία και προσθέστε την στην εκκίνηση

systemctl start sonarqube
systemctl enable sonarqube

Εάν χρειάζεται πολύς χρόνος για να φορτωθεί, προσθέστε μια γεννήτρια τυχαίων αριθμών /dev/./urandom στο τέλος των επιλογών sonar.web.javaOpts

sonar.web.javaOpts=другие параметры -Djava.security.egd=file:/dev/urandom

Εκτέλεση σεναρίου για έλεγχο της κατάστασης του ποιοτικού ελέγχου του πηγαίου κώδικα στο 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 FAILEDe[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/
Δημιουργήστε έναν κανονικό χρήστη, για παράδειγμα "κονκάρδες".
Συνδεθείτε στο SonarQube με αυτόν τον χρήστη.

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Μεταβείτε στο "Ο λογαριασμός μου", δημιουργήστε ένα νέο διακριτικό, για παράδειγμα με το όνομα "read_all_repository" και κάντε κλικ στο "Δημιουργία".

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Βλέπουμε ότι έχει εμφανιστεί ένα διακριτικό. Θα εμφανιστεί μόνο 1 φορά.

Συνδεθείτε ως διαχειριστής.

Μεταβείτε στο Configuration -> SVG Badges

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Αντιγράψτε αυτό το διακριτικό στο πεδίο "Διακριτικό σήματος δραστηριότητας" και κάντε κλικ στο κουμπί αποθήκευσης.

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Μεταβείτε στη Διαχείριση -> Ασφάλεια -> Πρότυπα αδειών -> Προεπιλεγμένο πρότυπο (και άλλα πρότυπα που θα έχετε).

Ο χρήστης των σημάτων πρέπει να έχει επιλεγμένο το πλαίσιο ελέγχου "Αναζήτηση".

Δοκιμές.

Για παράδειγμα, ας πάρουμε το έργο 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 το έργο θα μοιάζει με αυτό:

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Προσθέστε τσάντες στο README.md και θα μοιάζουν με αυτό:

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Ο κώδικας εμφάνισης σημάτων μοιάζει με αυτό:

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Ανάλυση της συμβολοσειράς εμφάνισης σημάτων:

[![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-проекта)

Πού να λάβετε/ελέγξετε το Κλειδί έργου και το αναγνωριστικό έργου.

Το Project Key βρίσκεται κάτω δεξιά. Η διεύθυνση URL περιέχει το αναγνωριστικό του έργου.

Εμφάνιση της κατάστασης ποιοτικού ελέγχου του πηγαίου κώδικα στο SonarQube στους προγραμματιστές

Οι επιλογές για τη λήψη μετρήσεων μπορεί να είναι Κοίτα εδώ.

Όλα τα αιτήματα έλξης για βελτιώσεις, διορθώσεις σφαλμάτων υποβάλετε σε αυτό το αποθετήριο.

Συνομιλία μέσω Telegram για το SonarQube https://t.me/sonarqube_ru
Συνομιλία Telegram για DevSecOps - ασφαλή DevOps https://t.me/sec_devops

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο