一、簡介
sonarqube是一個用于代碼品質管理的開源平台,用于管理源代碼的品質
不遵循代碼标準
sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。
潛在的缺陷
sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。
糟糕的複雜度分布
檔案、類、方法等,如果複雜度過高将難以改變,這會使得開發人員 難以了解它們, 且如果沒有自動化的單元測試,對于程式中的任何元件的改變都将可能導緻需要全面的回歸測試。
重複
顯然程式中包含大量複制粘貼的代碼是品質低下的,sonar可以展示 源碼中重複嚴重的地方。
注釋不足或者過多
沒有注釋将使代碼可讀性變差,特别是當不可避免地出現人員變動 時,程式的可讀性将大幅下降 而過多的注釋又會使得開發人員将精力過多地花費在閱讀注釋上,亦違背初衷。
缺乏單元測試
sonar可以很友善地統計并展示單元測試覆寫率。
糟糕的設計
通過sonar可以找出循環,展示包與包、類與類之間的互相依賴關系,可以檢測自定義的架構規則 通過sonar可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用情況, 檢測藕合。
二、sonarqube環境搭建
1.下載下傳jdk安裝包,因為sonarqube環境是依賴JVM運作的,是以需要安裝jdk
下載下傳jdk11并做環境配置
vim /etc/profile
最後一行添加:
export PATH=/usr/local/java/bin/:$PATH
2.下載下傳sonarqube安裝包:
官網:https://www.sonarqube.org/
下載下傳相應的版本,我這裡使用SonarQube 8.2社群版本
3.使用wincp工具将sonarqube安裝包傳輸到centos7中
4.安裝解壓和壓縮工具
yum install -y unzip zip
解壓sonarqube-8.2.0.32929.zip到/opt下改名為sonarqube
unzip sonarqube-8.2.0.32929.zip
mv sonarqube-8.2.0.32929 /opt/sonarqube
5.sonar-pdf-plugin插件打包
sonar-pdf-plugin插件源碼 https://gitee.com/GeoStarMobile/sonar-pdf-plugin
下載下傳sonar-pdf-plugin的源碼(需要做部分修改),IDEA打包生成jar包,然後拷貝到 /opt/sonarqube/extensions/plugins目錄下。
6.配置sonarqube環境變量
vim /etc/profile
export SONAR_HOME=/opt/sonarqube
export PATH=$PATH:$SNOAR_HOME/bin/linux-x86-64
source /etc/profile
7.賦予執行權限,解決後續權限不足的問題
chmod 777 sonarqube
8.建立普通使用者權限(root使用者不能啟動es)
adduser sonaruser
passwd sonaruser
9.給普通使用者賦sonar執行權限,以及Java執行權限
chown -R sonaruser:sonaruser /opt/sonarqube
chown -R sonaruser:sonaruser /usr/local/java
10.切換普通使用者
su sonaruser
11.啟動服務
/opt/sonarqube/bin/linux-x86-64/sonar.sh start
tail -f /opt/sonarqube/logs/sonar.log
12.浏覽器再次輸入http://192.168.4.239:9000(預設 admin/admin)
sonar服務啟動會啟動sonar服務,elasticsearch服務、MySQL服務
ps -ef | grep elasticsearch
ps -ef | grep soanr
ps -ef | grep mysqld
可通過以上指令檢視服務程序
13.安裝中文插件
三、jenkins內建sonarqube
1.安裝插件SonarQube Scanner
2.sonar生成令牌,jenkins的憑據需要用到
3.jenkins系統配置中添加SonarQube servers的配置資訊
4.全局配置工具中安裝SonarQube Scanner
5.建立sonarqube項目test
6.jenkins建立***建構項目
7.更改jenkins配置檔案中.m2目錄下 settings.xml和代碼檔案中pom.xml
settings.xml加入如下内容
pom.xml加入如下内容:
8.去jenkins部署項目,部署完畢檢視sonarqube檢測情況