sonarqube 代碼質量管理平台搭建(包含軟件下載地址以及中文及分析報告插件)


SonarQube 代碼質量管理平台搭建

SonarQube簡介

SonarQube 是一個開源的代碼分析平台, 用來持續分析和評測項目源代碼的質量。 通過SonarQube我們可以檢測出項目中重復代碼, 潛在bug, 代碼規范,安全性漏洞等問題, 並通過SonarQube web UI展示出來。

通過插件機制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續集成工具。比如pmd-cpd、checkstyle、findbugs、Jenkins。通過不同的插件對這些結果進行再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規模和種類的工程進行代碼質量管理。同時 Sonar 還對大量的持續集成工具提供了接口支持,可以很方便地在持續集成中使用 Sonar。
此外,Sonar 的插件還可以對 Java 以外的其他編程語言(支持的語言包括:Java、PHP、C#、C、python 、Cobol、PL/SQL、Flex等)提供支持,對國際化以及報告文檔化也有良好的支持。可以說Sonar是目前最強大的代碼質量管理工具之一。

環境依賴

1.Centos7(自行安裝搭建)

2.JDK1.8及以上

首先使用Java -version 查詢本機是否已安裝JDK環境,Centos7自帶OpenJDK的環境,但是需要手動配置/etc/profile文件,在此之前需要開始找java的安裝路徑..每個人路徑不一樣。

下面提供尋找Java安裝路徑方法,(注意:which ,whereis找到的並不是Java環境的地址)

img

[root@localhost local]#which java
usr/bin/java

[root@localhost local]# ls -lrt /usr/bin/java
lrwxrwxrwx. 1 root root 22 2020/08/06 15:28:44 /usr/bin/java -> /etc/alternatives/java

[root@localhost local]#ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 2020/08/06 15:28:44 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre/bin/java

此時拿到你的Java安裝路徑后 進入 /etc/profile 開始配置

vim /etc/profile 在末尾添加一下配置

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64  #(本機Java安裝目錄)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export TIME_STYLE='+%Y/%m/%d %H:%M:%S'

保存退出 source /etc/profile

3.mysql5.7及以上

注意:不要使用MySQL8.0版本。

需要Mysql數據庫支持;雖然SonarQube自帶了H2數據庫,但是為了方便管理數據推薦使用Mysql數據庫

3.1下載MySQL源安裝包

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

3.2安裝MySql源

yum -y install mysql57-community-release-el7-11.noarch.rpm

3.3安裝MySQL服務器

yum install mysql-community-server

3.4啟動MySQL服務

systemctl start  mysqld.service

3.5初始化數據庫密碼

新安裝的mysql數據庫 root用戶 密碼查詢

grep "password" /var/log/mysqld.log   (密碼為最后的不規則字符串)

獲取密碼后第一次登錄請及時修改密碼

命令如下:

update user set authentication_string = password('這里輸入新密碼'),password_last_changed=now() where user='root';

3.6 數據庫配置

mysql -u root -p
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar_1234';
mysql> GRANT ALL ON sonar. TO 'sonar'@'%' IDENTIFIED BY 'sonar_1234';
mysql> GRANT ALL ON sonar. TO 'sonar'@'localhost' IDENTIFIED BY 'sonar_1234';
mysql> FLUSH PRIVILEGES;

注意:如數據庫配置錯誤可參考https://blog.csdn.net/zq_zhang/article/details/77444753?utm_source=blogxgwz5

3.7退出數據庫 quit

注意踩坑之處特別說明:

安裝完成數據庫並拿到初始密碼出現無法登入的情況,造成出現的原因可能是隨機的字符串密碼出現轉義造成無法登錄,(此坑文檔小哥遇到過太坑了),解決辦法如下:

修改配置文件

vim /etc/my.cnf

在 pid 開頭的下一句加入

skip-grant-tables 

保存退出,重啟mysql服務

service mysqld restart

此時可以無密登錄mysql 並修改密碼(修改密碼命令如上)

密碼修改完成后請再次進入 vim /etc/my.cnf 將加入的語句直接刪除

4.安裝sonarqube和 sonarqube-runner或者sonar-scanner

在安裝之前,介紹一下SonarQube和SonarQube Runner之間的關系。
SonarQube是服務器端,它主要有兩個功能:1.分析源代碼;2.因為它內嵌了Apache模塊,所以提供Web端的界面訪問。
SonarQube Runner是一個利用SonarQube服務端分析代碼的命令行工具,可以把它簡單理解為客戶端。
所以,為了安裝和調試方便,建議SonarQube和SonarQube Runner都下載。

建議安裝后並解壓到 usr/local

sonarqube下載地址: https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.5.zip

sonarqube-runner下載地址
wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip

sonar-scanner下載地址  (與sonar-runner  效果差不多)
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip

sonarqube等插件下載速度賊慢,如有需要建議直接找文檔小哥要安裝包

4.1.下載各安裝包完成后將文件壓縮到/usr/local 如圖所示

Centos 7環境安裝SonarQube和SonarQube Runner

4.2配置sonarqube 環境變量 vim /etc/profile 加入如下代碼

export SONAR_HOME=/usr/local/sonarqube-6.7.5
export SONAR_RUNNER_HOME=/usr/local/sonar-scanner-3.0.3.778-linux
export SONAR_RUNNER_HOME=/usr/local/sonar-runner-2.4
PATH=$PATH:$SONAR_HOME/bin:$SONAR_RUNNER_HOME/bin
export PATH

source /etc/profile 使之生效

驗證:

sonar-runner -v

SonarQube Runner 2.4
Java 1.8.0_181 Oracle Corporation (64-bit)
Linux 3.10.0-862.9.1.el7.x86_64 amd64

4.3 修改配置文件

4.3.1配置Sonarqube
進入配置文件mulu:cd /usr/local/sonarqube-6.7.5/conf
修改配置文件:vim sonar.properties,修改內容如下:

sonar.jdbc.username=sonar				(第16行)
sonar.jdbc.password=Sonar_1234 #(配置數據庫用戶所用的密碼)		(第17行)

sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false							(第26行)


sonar.web.host=192.168.31.218  #根據個人ip地址修改  (第105行)

sonar.web.port=9000						(第111行)
4.3.2配置 sonar-runner
進入目錄cd /usr/local/sonar-runner-2.4/conf,修改配置文件:vim sonar-runner.properties
修改內容:

#Configure here general information about the environment, such as SonarQube DB details for example
 2 #No information about specific project should appear here
 3 
 4 #----- Default SonarQube server
 5 sonar.host.url=http://192.168.31.218:9000   # 根據個人ip地址修改
 6 
 7 #----- PostgreSQL
 8 #sonar.jdbc.url=jdbc:postgresql://localhost/sonar
 9 
10 #----- MySQL
11 sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8
12 
13 #----- Oracle
14 #sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
15 
16 #----- Microsoft SQLServer
17 #sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
18 
19 #----- Global database settings
20 sonar.jdbc.username=sonar
21 sonar.jdbc.password=Sonar_1234
22 
23 #----- Default source code encoding
24 sonar.sourceEncoding=UTF-8
25 
26 #----- Security (when 'sonar.forceAuthentication' is set to 'true')
27 sonar.login=admin
28 sonar.password=admin
4.3.3配置 sonar-scanner
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
sonar.host.url=http://192.168.31.218:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

4.3.4修改elasticsearch配置

vim /usr/local/sonarqube-6.7.5/elasticsearch/config,修改配置為:

network.host: 192.168.31.218   
#
# Set a custom port for HTTP:
#
http.port: 9200

4.4創建普通用戶 賦予權限

sonarqube需要普通用戶才能啟動,不能使用root用戶,這個比較好辦,新建用戶和組,更改屬組就可以:

[root@localhost local]# esadmin  # 取普通用戶名字
[root@localhost local]# chown -R esadmin /usr/local/sonarqube-6.7.5

4.5啟動sonarqube

[esadmin@localhost local]# /usr/local/sonarqube-6.7.5/bin/linux-x86-64/sonar.sh start
注意:必須是普通用戶啟動,並賦予權限

img

4.5.1查看啟動狀態
su sonar ./bin/linux-x86-64/sonar.sh status

img

4.5.2跟蹤日志
tail -f /usr/local/sonarqube-6.7.5/logs/sonar.log

日志內容顯示如下則啟動成功

img

5.登入web端

登入地址: http://192.168.31.218:9000    # (根據個人ip地址登錄)

5.1創建項目

登入密碼為 配置sonar-runner所配置的賬號及密碼 這里配置的賬號密碼都是 admin

可以開始創建新項目名稱,新項目可以在幫助里面創建。

5.2 下載中文包

可以在sonar的第三方應用市場下載中文包

由於sonar版本問題可能無法在這里下載,可以進入以下地址下載對應的中文包

中文包下載地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases

5.3 下載 sonar-pdfreport (質量分析報告插件)

質量分析報告插件下載地址:https://gitee.com/zzulj/sonar-pdf-plugin/releases

根據sonarqube版本下載相對應的版本,將插件放在  /usr/local/sonarqube-6.7.5/extensions/plugins
並重啟sonar

全局配置sonar-pdfreport

Plugin Configuration

6,配置sonar-runner 或 sonar-scanner掃描工具

6.1 項目配置

在你所需要掃描的項目根目錄下創建配置配置文件
vim sonar-project.properties

#must be unique in a given SonarQube instance
# 為sonarqube中創建的令牌名字
sonar.projectKey= ruichi  

# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
# 該名字可以隨便取,主要用於結果展示的項目名字
sonar.projectName= cloud_phone  

# 項目版本號,有可能一個文件多次掃描
sonar.projectVersion=1.0   
 
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set. 
# 需要掃描的代碼文件目錄
sonar.sources= src/   

#這是target(如果沒編譯可以不寫)
sonar.java.binaries=target/classes   (項目路徑)

# 需要掃描的代碼語言 如 Py PHP 等(注意 ,Python只寫py后綴)
sonar.language=java  
 
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

6.2 開始掃描

注意:需要切換到 sonar-project.properties 配置文件的 上級目錄位置執行,否則可能報錯

[root@localhost local]#/usr/local/sonar-runner-2.4/bin/sonar-runner
或者  (取決於你用何種掃描工具)
[root@localhost local]#/usr/local/sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner

6.3 瀏覽器登陸

http://192.168.31.218:9000 結果如下:

6.4 獲取分析報告結果

找到所掃描的項目,可在“更多” 點擊下載pdf分析報告。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM