SonarQube代碼質量檢查工具攻略大全

前言
隨便寫寫,大家也就隨便看看,2020年,爭取拿個乒乓球小區冠軍。

1 概述

SonarQube是一個開源平臺,用於管理源代碼得質量。SonarQube不只是一個質量數據報告工具,更是代碼質量管理平臺。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種編程語言的代碼質量管理與檢測。 SonarQube可以從以下七個維度檢測代碼質量,而作爲開發人員至少需要處理前5種代碼質量問題。

	(1) 不遵循代碼標準
	SonarQube可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。
	(2) 潛在的缺陷
	SonarQube可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。
	(3) 糟糕的複雜度分佈
	文件、類、方法等,如果複雜度過高將難以改變,這會使得開發人員 難以理解它們, 且如果沒有自動化的單元測試,對於程序中的任何組件的改變都將可能導致需要全面的迴歸測試。
	(4) 重複
	顯然程序中包含大量複製粘貼的代碼是質量低下的,SonarQube可以展示 源碼中重複嚴重的地方。
	(5) 註釋不足或者過多
	沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅下降 而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷。
	(6) 缺乏單元測試
	SonarQube可以很方便地統計並展示單元測試覆蓋率。
	(7) 糟糕的設計
	通過SonarQube可以找出循環,展示包與包、類與類之間的相互依賴關係,可以檢測自定義的架構規則 通過SonarQube可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用情況, 檢測耦合。

2 基礎環境準備

本文主要講述如何在windows系統搭建sonarQube及Jenkins自動構建,所有的環境請按照筆者的要求搭建,以便大家可以成功搭建。

(1)Java環境1.8

(2)Maven環境

(3)mysql5.6—8.0,該版本之外的Mysql會報異常

(4)node.js

(5)SonarQube7.6

(6)Sonar-Scanner/Runner

(7)SVN代碼管理倉庫

(8)Jenkins平臺

(9)navicat可視化數據庫工具

(10)Jenkins Plugins筆者已經下載好了,主要是因爲防止很多人插件下載失敗,所有的安裝文件都放在了網盤中,可自取

2.1 Java環境安裝

jdk1.8_64位

雙擊安裝JDK,細節這裏就不說了,大家不會的可以百度一下,安裝完JDK之後需要配置一下環境變量

JAVA_HOME變量配置
PATHl路徑配置

2.2 Maven安裝

同樣將maven的安裝包解壓到任意一個磁盤中,同樣我們還是要配置一下Maven的環境變量

maven壓縮包
maven_home
maven_path

2.3 Mysql安裝

安裝mysql之前肯定有很多人會問我,爲什麼要說這些基礎的東西,要知道,還是有很多帥氣的娃因爲一些基礎得環境或者版本問題搞得

腦殼都要撓禿咯!
禿頭

1. 將文件解壓入到自定義的目錄下【mysql如果安裝不對得話,可以百度下對應版本得安裝方式】
2. 配置my.ini,在根目錄下創建文件my.ini,並在文件中輸入以下代碼
[mysqld]
basedir ="C:\mysql-6.3-winx64" --此處配置自己得mysql路徑名
datadir ="C:\mysql-6.3-winx64\data" --此處配置自己得mysql路徑名
port=3306
server_id =10
character-set-server=utf8

[client]
port=3306
default-character-set=utf8
[mysqld_safe]
timezone="CST"
[mysql]
default-character-set=utf8

3. 配置環境變量, 將mysql/bin加入到PATH中

4. 找到cmd.exe,以管理員身份運行(確保是管理員)

5. 首先將MySQL加入到Windows的服務中,輸入命令:

	mysqld --install
	有時候沒有卸載乾淨,會提示The service already exists!
	此時,以管理員身份運行cmd,
	-輸入命令sc query mysql 查看名爲mysql的服務
	-輸入命令sc delete mysql,刪除該mysql 
	-再執行mysqld --install 就能成功了

6. 開始初始化數據庫,輸入:
	-mysqld --initialize --console
  	-mysqld --initialize --user=root --console   (記住初使密碼)

7.  輸入:net start mysql,稍後你也可以用net stop mysql關閉MySQL服務。

8.  然後就可以進入MySQL了,輸入:mysql -u root -p,此時會要求你輸入密碼

9. alter user user() identified by "123456";  改初使祕密

10. show databases ;展示數據庫列表;

11. use mysql  使用數據庫

12. show tables; 展示 表名

此處容易遇到兩個問題:
1.系統得C++環境問題導致得mysql安裝失敗,可以使用下面的工具C++環境補全工具安裝C++環境;
2.數據庫安裝完成後要先創建一個名字爲sonar得數據庫,因爲我們在下面sonarQube配置得時候是初始化sonar數據庫得文件得。
如果沒遇到那麼各位娃都是棒棒的。
贊
在這裏插入圖片描述

2.4 node.js安裝

node.js也是必不可少得一環,如果沒有node.js環境,無法對代碼中得Css文件進行掃描。

安裝方式因截圖太多,這裏參考node.js安裝教程
在這裏插入圖片描述

2.5 SonarQube7.6安裝

--還是老套路,將壓縮包解壓後修改conf\sonar.properties-圖1配置文件,我這裏是本地
  環境,如果是服務器上得Mysql,只需要將localhost轉換爲對應得IP即可
  sonar.jdbc.url    數據庫連接地址
  sonar.jdbc.username 登陸數據庫得用戶名
  sonar.jdbc.password 登陸數據庫得密碼
--SonarQube啓動後默認得賬號和密碼都是admin
--關閉SonarQube服務-圖3(需要關閉任務管理器中得所有java項目)
--重啓sonarQube服務-圖4
--再次訪問http://localhost:9000,會稍微有點慢,因爲要初始化數據庫信息(user中可以查看到用戶信息

sonar配置文件
sonarqube登陸
kill-java進程
重啓sonarqube

2.6 Sonar-Scanner掃描器安裝

Sonar-Scanner是一個利用SonarQube服務端分析代碼得命令行工具,可以把它簡單得理解爲SonarQube得客戶端。Sonar-Scanner分析完成後會將數據post到SonarQube得數據庫,從而在sonarQube中進行展示,便於分析。

--將下載好得sonar-Scanner解壓編輯其中得conf\sonar-scanner.properties文件
  sonar.host.url爲我們客戶端得訪問地址,賬號密碼都爲admin
--配置環境變量(路徑填寫你的安裝路徑)
  新建變量,name=SONAR_SCANNER_HOME   value=D:\sonar\sonar-scanner-2.5
  打開path,輸入 %SONAR_SCANNER_HOME%\bin;
  sonar-runner -version,出現以下信息,則表示環境變量設置成功

在這裏插入圖片描述
scanner版本號

2.7 SVN代碼管理倉庫安裝

到這裏,相信又有很多娃兒說筆者太過於囉嗦了,爲什麼還不開始給老子掃描項目,莫急,磨刀不誤砍柴功,當萬事俱備得時候,掃描出BUG還不是分分鐘得事情。
說到代碼管理工具,首先想到得當然是git,gitlab,但是對於初學者來說Svn這種可視化得更適合,所有筆者這裏選擇了相對較爲簡單得Svn。
依然是跑到我給大家提供得工具庫中下載下來先,然後解壓,點擊下面得而這個可愛得小圖標,啓動我們得Svn客戶端,然後創建一個倉庫,一直瘋狂點擊下一步就好了,就是這麼得easy。

SVN

創建一個本地倉庫

在這裏插入圖片描述
在這裏插入圖片描述

創建一個用戶,用來提交我們得代碼,然後在我們的文件夾下面創建一個文件夾來初始化我們的代碼倉庫Check Out,這裏就不多囉嗦

大家可以參考SVN使用教程
在這裏插入圖片描述
在這裏插入圖片描述

2.8 Jenkins平臺安裝

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。
Jenkins功能包括:
1、持續的軟件版本發佈/測試項目。
2、監控外部調用執行的工作。
第一種啓動方法,切換到jenkins.war存放的目錄,輸入如下命令:
$ java -jar jenkins.war
如果需要修改端口可以使用如下命令:
$ java -jar jenkins.jar--httpPort=8081
然後在瀏覽器中(推薦用火狐)輸入localhost:8081,localhost可以是本機的ip,也可以是計算機名。就可以打開jenkins。
第二種方法是用tomcat打開
解壓tomcat到某個目錄,如/usr/local,進入tomcat下的/bin目錄,啓動tomcat
將jenkins.war文件放入tomcat下的webapps目錄下,啓動tomcat時,會自動在webapps目錄下建立jenkins目錄,在地址欄上需要輸入localhost:8080/jenkins。
這裏我們就是採用第二種方法來搭建Jenkins,因爲我們是在windows上搭建得,所以只要把jenkins.war放到tomcat得wapapps下然後啓動Tomcat就可以訪問Jenkins了

Jenkins入門教程

由於很多得小夥伴在下載插件這一步就跪了,所以本衝也爲大家提供了已經下載好的插件,免費大甩賣,都在文末,自取,只需要將插件解壓放到家目錄.jenkins,替換掉plugins然後重啓就可以了。
在這裏插入圖片描述在這裏插入圖片描述
誇我
至此,基本上需要得環境都已經安裝完了,下面就開始我們得掃描之旅吧。

3 使用說明

3.1利用Sonar-scanner命令分析本地項目

1.進入E:\sonarqube-7.6\bin\windows-x86-64(你的sonarqube安裝目錄),
只要在項目工程目錄下新建sonar-project.properties文件並配置如下圖-1
2.點擊StartSonar.bat啓動sonar服務
3.進入項目所在得路徑下執行sonar-scanner命令進行代碼掃描-圖2
4.運行最終結果顯示EXECUTION SUCCESS即成功-圖3
5.客戶端查看代碼掃描結果-圖4

1
2
3
4
在這裏插入圖片描述

3.2已編譯的maven項目,target文件中沒有內容但是還是要將其註明

在這裏插入圖片描述

sonar-project.properties文件中的內容

在這裏插入圖片描述

之後在cmd下進入工程目錄下運行:sonar-scanner

在這裏插入圖片描述

3.3已編譯的maven項目,使用maven分析器插件來分析項目

在maven的conf下的settings.xml下

在這裏插入圖片描述

在<profiles></profiles>節點中添加如下代碼
<profile>
     <id>sonar</id>
     <activation>
          <activeByDefault>true</activeByDefault>
     </activation>
      <properties>
           <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
           <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
           <sonar.jdbc.username>sonar</sonar.jdbc.username>
           <sonar.jdbc.password>sonar</sonar.jdbc.password>
            <!-- SERVER ON A REMOTE HOST -->
           <sonar.host.url>http://localhost:9000</sonar.host.url>
      </properties>
  </profile>

之後在cmd下進入工程目錄下運行:mvn clean install sonar:sonar

在這裏插入圖片描述

3.4對JS、CSS、HTML進行代碼走查

在這裏插入圖片描述

sonar-project.properties文件中的內容
sonar.projectKey=control
sonar.projectName=control
sonar.projectVersion=1.0
sonar.sources=src,WebContent
sonar.java.binaries=build\classes
sonar.sourceEncoding=UTF-8

之後在cmd下進入工程目錄下運行:sonar-scanner

在這裏插入圖片描述

4.Jenkins集成SVN+maven+tomcat+sonarqube+sonar-scanner

 jenkins推薦的插件安裝中沒有sonarqube的安裝,需要到系統管理-插件管理-可選插件中搜索sonarqube,sonarqube插件名是sonarqube scanner for jenkins,直接安裝,安裝成功後在系統管理-系統設置下就可看到sonarqube servers,即可配置

4.1Jenkins For SonarQube配置

4.1.1.在系統管理—插件管理中安裝相應插件

在這裏插入圖片描述

4.1.2. 在系統管理—系統設置中對sonarqube servers進行設置

在這裏插入圖片描述

4.1.3獲取sonarqube servers的用戶令牌

用戶令牌

4.1.4. 在系統管理—全局工具配置中對sonarqube scanner進行設置

sonar_scanner

4.1.5.安裝nodeJS插件,不安裝的話會導致CSS文件無法進行掃描

在這裏插入圖片描述

4.1.6. 在系統管理—全局工具配置中對nodeJS進行設置

此處的安裝目錄填寫你node.js的所在路徑

![node.js](https://img-blog.csdnimg.cn/20200106224909980.png

4.2對一個非maven項目項目進行代碼走查,構建一個自由風格的項目

4.2.1填寫項目配置信息

在這裏插入圖片描述

4.2.2 設置構建的保存數量和時間

在這裏插入圖片描述

4.2.3設置SVN的路徑和賬號

在這裏插入圖片描述

若是用Git管理代碼倉庫的可以參考如下配置
這裏是使用了Git來做源碼管理,gitlab作爲源碼庫 項目分支填寫master

在這裏插入圖片描述

4.2.4設置項目輪詢,每5分鐘輪詢一次

在這裏插入圖片描述

4.2.5勾選nodeJS的環境

在這裏插入圖片描述

4.2.6構建觸發器、構建環境(sonar的賬號密碼)

在這裏插入圖片描述

4.2.7保存後對該項目進行“立即構建”操作,並可以查看sonarqube中項目的分析情況

在這裏插入圖片描述

4.3對一個maven項目項目進行代碼走查,構建一個maven項目

4.3.1填寫項目配置信息,設置構建的保存數量和時間

在這裏插入圖片描述

4.3.2設置SVN的路徑和賬號

svn

4.3.3設置項目輪詢,每5分鐘輪詢一次

4.3.4勾選nodeJS的環境

node.js

4.3.5構建觸發器、構建環境(sonar的賬號密碼)

在這裏插入圖片描述

4.3.6在構建後操作中添加war包的操作

在這裏插入圖片描述

4.3.7保存後對該項目進行“立即構建”操作,並可以查看sonarqube中項目的分析情況

在這裏插入圖片描述

5 SonarQube相關指標說明

5.1SonarQube指標腦圖

在這裏插入圖片描述

5.2代碼質量閥

代碼質量的統計,可以幫助我們判斷項目是否可以投入生產環境

在這裏插入圖片描述
可根據實際的項目需求配置質量閥(sonar的默認配置)
在這裏插入圖片描述

6 結束語

下一篇文章:《碼了4個小時》一線大廠面試必會的Linux_shell三賤客,如何一文搞定
我希望在看這個文章的你,在新的一年,順順利利,並能夠朝着定下得目標衝呀。
在這裏插入圖片描述
重點來了:
喜歡得朋友可以點個關注。老腰都酸死了。
本篇文章所用到得所有工具都在本人得公衆號,【回覆】sonarqube免費領取。
在這裏插入圖片描述

在這裏插入圖片描述

7 參考地址

參考地址:https://juejin.im/post/5b599a265188251ac22b585c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章