SonarQube部署及代碼質量掃描入門教程

1、前言

一、本文主要內容

  • CentOS7下SonarQube部署
  • Maven掃描Java項目並將掃描結果提交到SonarQube Server
  • SonarQube掃描報表介紹

二、環境信息

工具/環境 版本
CentOS CentOS 7.6(IP:192.168.88.45)
SonarQube 7.5
JDK 1.8.0
MySQL 5.7

三、準備工做

  • 安裝JDK1.8

參考:https://ken.io/note/centos-ja...java

  • 安裝MySQL

參考:https://ken.io/note/centos-my...mysql

2、部署SonarQube

一、基礎準備

  • 安裝必要的軟件包
yum install -y wget zip unzip
  • 調整系統參數
sysctl -w  vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -u 4096 sonarqube
ulimit -n 65536 sonarqube
  • 建立專用帳號sonar
#建立帳號並受權
useradd sonar
passwd sonar

#授予sudo權限
visudo
#在文件末尾增長
sonar    ALL=(ALL)       ALL
sonar 7.5版本必須在非root帳號下啓動

二、準備數據庫及帳號

#進入mysql-shell
mysql -u root -p

#新建用戶
CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'Sonar@2019';
CREATE USER 'sonar'@'%' IDENTIFIED BY 'Sonar@2019';

#新建數據庫
CREATE DATABASE sonar;

#賦予數據庫訪問權限
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'%';

#刷新權限
FLUSH PRIVILEGES;

#退出
quit;

三、下載

  • 準備軟件以及數據目錄
mkdir -p /usr/sonar
mkdir -p /sonar/data
mkdir -p /sonar/temp
  • 下載
#進入下載目錄
cd /home/downloads

#下載軟件包
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.5.zip

#解壓
sudo unzip sonarqube-7.5.zip -d /usr/sonar/
  • 受權
#授予相關目錄權限
chown -R sonar:sonar /usr/sonar
chown -R sonar:sonar /sonar

四、配置環境變量

#修改profile文件
sudo vi /etc/profile

#在文件末尾增長變量:SONAR_HOME
export SONAR_HOME=/usr/sonar/sonarqube-7.5

#使變量生效
source /etc/profile

#測試
echo $SONAR_HOME

五、配置Sonar

#修改配置文件
sudo vi $SONAR_HOME/conf/sonar.properties

#在配置文件開頭增長如下配置

#數據庫配置
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar@2019
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useConfigs=maxPerformance&rewriteBatchedStatements=true&characterEncoding=utf8&useUnicode=true&serverTimezone=GMT%2B08:00

#文件配置
sonar.path.data=/sonar/data
sonar.path.temp=/sonar/temp

#Web配置
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/

這裏要強調的是,端口號須要>1000,由於sonar啓動是使用的非root帳號,默認是不能使用1000如下的端口的,不然會啓動失敗linux

六、開放端口

sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

七、啓動Sonar

#切換到sonar帳號
su sonar

#啓動
sh $SONAR_HOME/bin/linux-x86-64/sonar.sh start

#啓動完成會看到如下輸出
Starting SonarQube...
Started SonarQube.

#若是未完成啓動能夠使用console命令查看啓動過程當中的問題
sh $SONAR_HOME/bin/linux-x86-64/sonar.sh console
sonar支持的啓動參數: console | start | stop | restart | status | dump

若是啓動完成,可是依然不能訪問,能夠經過如下命令查看啓動日誌web

cat $SONAR_HOME/logs/web.log

成功啓動後,能夠訪問 http://192.168.88.45:9000sql

sonarqube-starting

這時候SonarQube會進行初始化,好比:初始化數據庫。初始化完成後將看到首頁shell

sonarqube-home

3、掃描項目示例

一、初始化Token

經過默認帳號密碼 admin,admin登陸SonarQube,這時候會彈出引導數據庫

sonarqube-tokengenerate

輸入TokenName,而後點擊Generate就會生成token,點擊Continue
而後選擇Java-Maven項目,這時候apache

sonarqube-scancommand

token建立後,一旦窗口關閉就不能查詢,只能再次建立,因此咱們要先將token複製下來保存。centos

token建立:http://192.168.88.45:9000/account/security/安全

二、項目準備

本次咱們以Java項目做爲示例進行掃描,本機須要配置好了Java&Maven環境
參考:https://ken.io/note/java-quic...

若是已有Java項目能夠忽略這一步

  • 建立項目
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DremoteRepositories=http://maven.aliyun.com/nexus/content/groups/public \
-DgroupId=io.ken.sonar \
-DartifactId=sonardemo \
-Dpackage=io.ken.sonar \
-Dversion=1.0
  • 修改pom.xml

增長build節點,指定默認build動做以及JDK版本

<build>
    <defaultGoal>compile</defaultGoal>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
</build>

三、掃描並提交

#進入項目根目錄
cd sonardemo

#執行掃描
mvn sonar:sonar \
  -Dsonar.host.url=http://192.168.88.45:9000 \
  -Dsonar.login=8e359701283af794e8b77f3029863a1be7ad8ee4

掃描完成訪問:http://192.168.88.45:9000便可看到掃描結果

sonarqube-scan-javademo

點擊項目名字能夠查看掃描詳情

sonarqube-scan-javademo-detail

四、報表指標簡介

指標 簡介
Bugs bug個數及評分
Vulnerabilities 安全漏洞個數及評分
Debt 債務(代碼問題)持續時間
Code Smells 輕微問題:代碼風格等等
Coverage 單元測試覆蓋率
Duplications 代碼重複率
Duplicated Blocks 代碼重複塊數

4、備註

一、附錄


本文首發於個人獨立博客:https://ken.io/note/sonarqube...

相關文章
相關標籤/搜索