Quality Gate : Default or custom
Reliability / Bugs : Error or Bugs in the code
Security / Vulnerabilities :Security bugs or vulnerabilities detection
Maintainability / Code Smells : Bad smell in code
Coverage : coverage of the unit / integration test cases
Duplications : duplicate lines of code/ function/ block/ files
Size: lines / classes / comments /files on code.
Languages: programming languages
Complexity : difficult to understand
SonarQube : Pre-Requisites
Docker, docker-compose
Mac/win laptop
Github account, gitclient
Python 2.7 or 3 > installed
Jenkins & Sonarqube community version
Installation & start sonarqube
# Install JAVA
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install -y openjdk-8-jdk
Install SonarQube ( container or download zip )
# if .zip download & installation follow below steps:
cd /tmp ; wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
apt-get install unzip
cd /tmp ; unzip sonarqube-6.7.6.zip
cd /tmp ; mv sonarqube-6.7.6 /opt
groupadd devops
useradd devops -m -d /home/devops -s /bin/bash -g devops
passwd devops ( enter passwd )
cd /opt ; chown -R devops:devops sonarqube-6.7.6 ; chmod -R 755 sonarqube-6.7.6
su - devops
cd /opt/sonarqube-6.7.6/bin/linux-x86-64/ ; ./sonar.sh start
after starting successfully goto browser & hit below
http://< IP addr> :9000
login to sonarqube ( default credentials admin/admin )
# if docker --> run run below command ( ensure docker is installed on your machine )
docker run -d --name sonarqube -p 9000:9000 sonarqube
after starting successfully goto browser & hit below
http://< IP addr> :9000
login to sonarqube ( default credentials admin/admin )
# Jenkins Configuration
Install SonarQube-runner ( on Jenkins machine )
cd /tmp ; wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
cd /tmp ; unzip sonar-runner-dist-2.4.zip
cd /tmp ; mv sonar-runner-dist-2.4 /opt
Step1: Installing sonarqube plugin in Jenkins
Manage Jenkins --> manager plugins --> install plugin ( SonarQube Scanner for Jenkins )
Step2: sonarqube configuration in Jenkins
Manage Jenkins --> configure System --> SonarQube servers --> configure below
Name: sonarqube ( can be any string )
Server URL: http://192.168.40.128:9002 < http://< machine IP of where sonarqube is installed> :< port on which sonarqube is running>
Server authentication token: < the token you will get it when you login to sonarqube console )
Step3: SonarQube Runner Configuration in Jenkins
Manage Jenkins --> Global Tool Configuration --> SonarQube Scanner --> configure below
Name: sonar-runner ( can be any string )
SONAR_RUNNER_HOME: path of sonar-runner installation on Jenkins Server ( /opt/sonar-runner-dist-2.4 )
Job5-package: build action --> select sonar runner execution
sonar.projectKey=sampleapp
sonar.ProjectName=sampleapp
sonar.sources=src/main/java/
sonar.java.binaries=target/classes/
sonar.language=java
sonar.java.source=1.8
mvn sonar:sonar \
-Dsonar.projectKey=sampleapp \
-Dsonar.host.url=http://18.218.176.225:9000 \
-Dsonar.login=admin