[sonarqube的使用] sonarqube安裝

一 . SonarQube代碼質量檢查工具簡介

Sonar (SonarQube)是一個開源平臺,用於管理源代碼的質量mysql

Sonar 不僅是一個質量數據報告工具,更是代碼質量管理平臺linux

支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種編程語言的代碼質量管理與檢測。程序員

Sonar能夠從如下七個維度檢測代碼質量,而做爲開發人員至少須要處理前5種代碼質量問題。web

  1. 不遵循代碼標準
  2. sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。
  3. 潛在的缺陷

sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。sql

  1. 糟糕的複雜度分佈

文件、類、方法等,若是複雜度太高將難以改變,這會使得開發人員 難以理解它們, 且若是沒有自動化的單元測試,對於程shell

序中的任何組件的改變都將可能致使須要全面的迴歸測試。數據庫

  1. 重複

顯然程序中包含大量複製粘貼的代碼是質量低下的,sonar能夠展現 源碼中重複嚴重的地方。macos

  1. 註釋不足或者過多

沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變更 時,程序的可讀性將大幅降低 而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷。編程

  1. 缺少單元測試

sonar能夠很方便地統計並展現單元測試覆蓋率。windows

  1. 糟糕的設計

經過sonar能夠找出循環,展現包與包、類與類之間的相互依賴關係,能夠檢測自定義的架構規則 經過sonar能夠管理第三方

的jar包,能夠利用LCOM4檢測單個任務規則的應用狀況, 檢測藕合。

爲何要選擇sonarQube?

我的使用以後認爲 : sonarQube的優點以下(相比於阿里編碼規約這種市面上常見相似軟件):

  1. 更加優秀的圖形化界面

基本上經過界面就能夠對本身項目的代碼情況一目瞭然

  1. 能夠查詢出其它軟件難以定位到的問題

好比 :

可能致使空指針異常的問題 (對象在進行使用前沒有加空的判斷)

可能致使內存泄漏的問題, 在try catch 塊裏面,直接使用e.printStackTrace()將堆棧信息打印到內存的

可能致使的漏洞 : 成員變量使用public定義的

還有諸如 : 流等未關閉或者是非正常關閉都可以檢測出來!

功能很是強大!!

二. 安裝:

2.1 安裝SonarQube web server

  1. 首先確保安裝了jdk1.8 +
  2. 到此連接 https://www.sonarqube.org/downloads/

下載sonalqube(下載社區版,是開源的),

我下載的是sonarqube-7.2.1,由於最新版7.9.1須要jdk11支持

並解壓,解壓完以後的目錄以下 :

  1. 到解壓目錄的binmacosx-universal-64(對應系統)目錄下:

linux、Mac sh sonar.sh start啓動

windows 雙擊StartSonar.bat 啓動

  1. 到瀏覽器界面,輸入 : http://localhost:9000

若是能訪問代表安裝成功

2.2 安裝數據庫

  1. 版本要求:

在conf目錄下的sonar.properties文件下:

有這樣一行配置 :

#----- MySQL >=5.6 && < 8.0複製代碼

  1. 爲sonarqube 建立一個數據庫
create database sonar;
  -- 建立數據庫複製代碼

  1. 建立sonarqube用戶並進行受權
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 
  -- 建立用戶並設置密碼
  -- username 爲建立的用戶名
  -- host 爲對應的主機地址,本地就是localhost
  -- password 爲設置的密碼
  GRANT ALL ON *.* TO 'username'@'localhost';
  -- 對用戶進行受權操做複製代碼

  1. 修改SonarQube配置文件,添加Mysql相關配置
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
  # 剛剛建立的sonarQube用戶
  sonar.jdbc.username=sonar
  # 建立用戶對應的密碼
  sonar.jdbc.password=sonar
  # 設置編碼格式爲UTF-8
  sonar.sorceEncoding=UTF-8
  # sonar登錄用戶名
  sonar.login=admin
  # sonar登錄密碼
  sonar.password=admin複製代碼

2.3 從新啓動服務端

  1. 退出 SonarQube 服務端

在以前彈出的cmd窗口執行ctrl + c,

彈出來的提示選擇Y,退出SonarQube服務

  1. 雙擊StartSonar.bat文件, 從新啓動SonarQube

此次由於要進行數據庫的初始化操做,因此須要的時間可能稍微久一點

  1. 啓動成功後,瀏覽器輸入 : http://localhost:9000 進入界面
  2. 登陸

點擊界面右上角的登陸按鈕, 進行登陸 :

初始的帳戶名 : admin

初始的密碼 : admin

附 : 一些關鍵配置的修改,如 主機地址,context,端口號等:

一般狀況下使用默認的配置便可!

文件 /conf/sonar.properties

#sonar.web.host=0.0.0.0 
   #sonar.web.context=
   #sonar.web.port=9000複製代碼

三. 使用

3.1. 安裝必要的插件 (漢化包舉例)

點擊 導航欄的 Administration, 選擇Marketplace

搜索 Chinese pack, 點擊install進行安裝

安裝成功後, 重啓 SonarQube !

pack

3.2. 開始分析項目代碼源代碼

使用maven的方式進行分析

3.2.1 編輯maven 的settings.xml文件

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <sonar.host.url>http://loaclhost:9000</sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>複製代碼

其中sonar.host.url 值就是 上文啓動的sonar 服務器地址。

3.2.2 對maven項目進行分析

到項目所在的文件路徑下:

使用命令提示符或者是power shell執行 以下命令:

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar複製代碼

出現: BUILD SUCCESS 標識以後

BUILD SUCCESS

刷新界面查看 :

3.3 配置分析參數

強制參數:

  1. Server
    sonar.host.url http://localhost:9000
  2. Project Configuration
    sonar.projectKey Maven :
    sonar.sources Maven 默認的源碼路徑

能夠配置的參數:

  1. Project identity
    sonar.projectName 項目名稱
    sonar.projectversion 項目版本
  2. Authentication
    sonar.login 分析該項目的用戶名稱
    sonar.password 分析該項目的用戶密碼

3.4. 程序員用戶使用說明

SonarQube Web管理者經過配置和設置如下參數值對項目源代碼進行:

複雜度、覆蓋率、文檔、重複、問題、可維護性、可靠性、安全性、大小等約束和規範。

sonar中的質量閾管理如下內容。

複雜度
                    複雜度
                    複雜度/類
                    複雜度/文件
                    複雜度/方法
                覆蓋率
                    分支覆蓋
                    集成測試的新分支覆蓋
                    新代碼的分支覆蓋率
                    覆蓋率
                    新集成測試覆蓋
                    新覆蓋率
                    集成測試分支覆蓋
                    集成測試覆蓋
                    集成測試覆蓋行
                    集成測試未覆蓋分支
                    集成測試未覆蓋行
                    代碼覆蓋率
                    集成測試的新行覆蓋
                    新代碼覆蓋率
                    代碼行
                    集成測試的新行覆蓋
                    覆蓋的新代碼
                    整體分支覆蓋率
                    整體新分支覆蓋率
                    整體覆蓋率
                    整體新覆蓋率
                    整體代碼覆蓋率
                    整體新代碼覆蓋率
                    整體覆蓋的新行數
                    整體未覆蓋分支
                    整體未覆蓋的新分支
                    整體未覆蓋代碼
                    整體未覆蓋新行數
                    單元測試忽略數
                    未覆蓋分支
                    集成測試未覆蓋的新分支
                    未覆蓋新分支
                    未覆蓋的代碼
                    集成測試未覆蓋的行
                    未覆蓋的新代碼
                    單元測試持續時間
                    單元測試錯誤數
                    單元測試失敗數
                    單元測試成功 (%)
                    單元測試數
                文檔
                    註釋行
                    註釋 (%)
                    公共API
                    公共註釋的API (%)
                    公共未註釋的API
                重複
                    重複塊
                    重複文件
                    重複行
                    重複行(%)
                問題
                    阻斷違規
                    確認問題
                    嚴重違規
                    誤判問題
                    提示違規
                    違規
                    主要違規
                    次要違規
                    新阻斷違規
                    新嚴重違規
                    新提示違規
                    新違規
                    新主要違規
                    新次要違規
                    開啓問題
                    重開問題
                    不修復的問題
                可維護性
                    新代碼的技術債務
                    壞味道
                    達到可維護性A級所需的工做
                    新增壞味道
                    技術債務
                    技術債務比率
                    新代碼技術債務比率
                    Management
                    Burned budget
                    Business value
                    Team size
                可靠性
                    Bugs
                    新增Bugs
                    可靠性修復工做
                    新代碼的可靠性修復工做
                安全性
                    新增漏洞
                    安全修復工做
                    新代碼的安全修復工做
                    漏洞
                大小
                    類
                    目錄
                    文件
                    方法
                    生成的行數
                    生成的代碼行數
                    行數
                    代碼行數
                    項目
                    語句複製代碼
相關文章
相關標籤/搜索