рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ 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

рд╣рд╛рдореА рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдЖрдлреИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдЫреМрдВред

yum install -y sonarqube

рд╕реНрдерд╛рдкрдирд╛рдХреЛ рдХреНрд░рдордорд╛, рдзреЗрд░реИ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рд╣реБрдиреЗрдЫрдиреН, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдЦреЛрдЬрдмрдЧрд╣рд░реВ рд░ 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 рдорд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдгрдХреЛ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдБрджреИред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рд╕реЛрдирд╛рд░-рдмреНрд░реЗрдХ-рдорд╛рднреЗрди-рдкреНрд▓рдЧрдЗрди рдкреНрд▓рдЧрдЗрди рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдЖрдлреНрдиреИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦреМрдВред

рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рднрдгреНрдбрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ 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 рдлрд╛рдЗрд▓ рд╕рд╣реА рдЫреИрдиред рд╕реЛрдирд╛рд░рдХреНрдпреБрдмрдорд╛ рд╕реНрдХреНрдпрд╛рдирд┐рдЩ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реНрдерд┐рддрд┐: "рд╕рдлрд▓рддрд╛" рд╕рдВрдЧ рд╕рдорд╛рдкреНрдд рднрдПрдорд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдпреЛред рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рд╣рд░реВ рдЫреИрдирдиреНред рддреНрдпрд╣рд╛рдБ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рд╣рд░реВ рд╣реБрдиреЗ рдмрд┐рддреНрддрд┐рдХреИ, рдо рдпреЛ рдкреЛрд╕реНрдЯрдорд╛ .gitlab-ci.yml рд▓рд╛рдИ рд╕рдЪреНрдпрд╛рдЙрдиреЗрдЫреБред

рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрдардорд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдг рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

SonarQube рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

yum install -y sonarqube-qualinsight-badges

рд╣рд╛рдореА SonarQube рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ http://172.26.9.115:9000/
рдирд┐рдпрдорд┐рдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ "рдмреИрдЬрд╣рд░реВ"ред
рдпрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрддрд░реНрдЧрдд SonarQube рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ SonarQube рдорд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдг рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

"рдореЗрд░реЛ рдЦрд╛рддрд╛" рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдирдпрд╛рдБ рдЯреЛрдХрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ "read_all_repository" рдирд╛рдордХреЛ рд╕рд╛рде рд░ "рдЬреЗрдирд░реЗрдЯ" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ SonarQube рдорд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдг рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рдЯреЛрдХрди рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЫред рдЙрд╣рд╛рдБ 1 рдкрдЯрдХ рдорд╛рддреНрд░ рджреЗрдЦрд╛ рдкрд░реНрдиреБрд╣реБрдиреЗрдЫред

рдкреНрд░рд╢рд╛рд╕рдХрдХреЛ рд░реВрдкрдорд╛ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН -> SVG рдмреНрдпрд╛рдЬрд╣рд░реВ

рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ 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-╨┐╤А╨╛╨╡╨║╤В╨░)

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреБрдЮреНрдЬреА рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдИрдбреА рдХрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ/рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреБрдЮреНрдЬреА рддрд▓ рджрд╛рдпрд╛рдБ рдЫред URL рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдИрдбреА рд╕рдорд╛рд╡реЗрд╢ рдЫред

рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ SonarQube рдорд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдг рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╡рд┐рдХрд▓реНрдк рд╣реБрди рд╕рдХреНрдЫ рдпрд╣рд╛рдБ рд╣реЗрд░.

рд╕реБрдзрд╛рд░рдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВ, рдмрдЧ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдпрд╕ рднрдгреНрдбрд╛рд░рдорд╛ рдкреЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН.

SonarQube рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреНрдпрд╛рдЯ https://t.me/sonarqube_ru
DevSecOps рдмрд╛рд░реЗ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреНрдпрд╛рдЯ - рд╕реБрд░рдХреНрд╖рд┐рдд DevOps https://t.me/sec_devops

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди