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

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

1 概述

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

(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自動構建,全部的環境請按照筆者的要求搭建,以便你們能夠成功搭建。node

(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以前確定有不少人會問我,爲何要說這些基礎的東西,要知道,仍是有不少帥氣的娃由於一些基礎得環境或者版本問題搞得
複製代碼

==腦袋都要撓禿咯!== 禿頭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數據庫得文件得。 若是沒遇到那麼各位娃都是棒棒的。 贊 在這裏插入圖片描述git

2.4 node.js安裝

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

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

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中進行展現,便於分析。sql

--將下載好得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功能包括:
一、持續的軟件版本發佈/測試項目。
二、監控外部調用執行的工做。
第一種啓動方法,切換到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而後重啓就能夠了。 在這裏插入圖片描述在這裏插入圖片描述 誇我 至此,基本上須要得環境都已經安裝完了,下面就開始咱們得掃描之旅吧。windows

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

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 結束語

下一篇文章:如何使用Jenkins構建搭載釘釘以及郵箱通知

我但願在看這個文章的你,在新的一年,順順利利,並可以朝着定下得目標衝呀。 在這裏插入圖片描述 重點來了: 喜歡得朋友能夠點個關注,今天這個文章真的是碼了我4個多小時呢,老腰都酸死了。

本篇文章所用到得全部工具都在本人得公衆號,【回覆】[sonarqube]免費領取。

CSDN連接地址:blog.csdn.net/lmarster/ar… 在這裏插入圖片描述

相關文章
相關標籤/搜索