SonarQube 的安裝、配置及 Maven 項目的使用


轉載自:https://cloud.tencent.com/developer/article/1010612

1、SonarQube 介紹

SonarQube 是一個用於管理源代碼質量開放平台,它可以從多個維度檢測代碼質量,可以快速的定位代碼中潛在的或者明顯的 Bug、錯誤。它支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多種編程語言的代碼質量管理與檢測。可作為我們日常開發中檢測代碼質量的重要工具。

2、環境、軟件准備

本次演示環境,我是在本地機器 Mac 上操作,以下是安裝的軟件及版本:

  1. SonarQube:version 6.5
  2. Jdk:version 1.8.0_91
  3. Maven:version 3.3.9
  4. Mysql: version 5.7.15

注意:下邊我們要演示 Maven 項目如何使用 SonarQube 分析,所以需要先安裝 Maven、Jdk,SonarQube 安裝我們使用 Mysql 作為數據存儲,所以需要先安裝 Mysql,這里 Maven、Jdk、Mysql 的安裝忽略。

3、SonarQube 安裝

SonarQube 安裝很簡單,只需去官網下載最新版 zip 安裝包到本地,解壓執行即可。我解壓到本地后的目錄為/Applications/soft/sonarqube-6.5,解壓目錄結構如下:

img

這里簡單說下每個目錄作用:

  • bin 用來啟動 SonarQube 服務,這里已經提供好了不同系統啟動 | 停止腳本了,目前提供了 linux-x86-32、linux-x86-64、macosx-universal-64、windows-x86-32、windows-x86-64
  • conf 用來存放配置文件,若需要修改配置,修改 sonar.properties 文件即可。
  • data 用來存放數據,SonarQube默認使用 h2 數據庫存儲,同時支持其他如Mysql、Orace、Mssql、Postgresql數據庫存儲。
  • extensions 用來存放插件 jar 包,以后我們需要安裝插件就放在這里。
  • lib 用來存放各種所依賴的 jar 包,包括上邊各數據庫驅動包 (默認已提供一個版本,如果版本不匹配,則在這里手動更新下)。
  • logs 用來存放各日志信息
  • web 用來提供 SonarQube web 網頁服務。

本機 Mac 環境啟動 | 停止 | 重啟 | 查看狀態 SonarQube 服務命令:<install_dir>/bin/macosx-universal-64/sonar.sh start | stop | restart | status。成功啟動后,訪問本地 http://localhost:9000,SonarQube 初始管理員賬號為 admin,默認密碼為 admin,登錄后可修改密碼。

img

SonarQube 默認服務端口為 9000,默認數據庫為 h2,這些都是可以修改配置的,我們只需要修改<install_dir>/conf/sonar.properties文件即可。以修改配置 Mysql 數據庫為例:

1、修改 sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

2、本地 Mysql 創建數據庫
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

3、本地 Mysql 創建用戶並分配權限
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
FLUSH PRIVILEGES;

修改完成后,重啟服務即可,我們會發現SonarQube已經幫我們在本地 Mysql 數據庫 sonar 中創建好了所需各表。

img

4、Plugins 插件安裝

SonarQube 插件安裝非常簡單,同時 官網插件庫 提供了很多實用的插件供大家下載使用。SonarQube已經默認給我們安裝了一些很常用的插件,我們可以通過admin登錄,點擊 配置 -> 系統 -> 更新中心 -> Installed 查看。 這里我們演示安裝兩個很實用的插件,一個是 Chinese Pack(SonarQube的漢化包),一個是 Checkstyle(檢測代碼風格)。

4.1 Chinese Pack 插件安裝

SonarQube 網頁的漢化包,安裝完該插件后,Web 頁面大部分都翻譯成中文了,是不是一下子就簡介明了啦!首先下載插件 sonar-l10n-zh,源碼托管在 github 上,我們需要先 clone 到本地,執行 maven 編譯得到 jar 包,然后復制到sonarQube插件目錄,最后重啟服務即可安裝完成。 (注意:README上的兼容列表,我本地 SonarQube 版本6.5,所以下載插件對應版本是1.17。)

git clone https://github.com/SonarQubeCommunity/sonar-l10n-zh.git
cd sonar-l10n-zh
mvn install
cp target/sonar-l10n-zh-plugin-1.17-SNAPSHOT.jar <install_dir>/extensions/plugins
<install_dir>/bin/macosx-universal-64/sonar.sh restart 

img

4.2 Checkstyle 插件安裝

上邊 Chinese Pack 插件安裝時通過直接將 jar 包放到插件目錄完成安裝,我們也可以在 SonarQube 網頁上直接點擊安裝。admin 登錄,點擊 配置 -> 系統 -> 更新中心 -> Available -> Search,輸入 CheckStyle,在搜素結果中找到 CheckStyle 插件點擊 Install,等待下載完成后,按照頁面提示點擊 Restart 自動重啟服務即可完成安裝。

img

admin登錄,點擊 配置 -> 系統 -> 更新中心 -> Installed 列表中可以看到我們剛剛安裝的兩個插件了。

img

SonarQube 支持分析的語言有很多,像Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C等20+語言,當我們需要支持分析什么語言時,只需要去插件中心安裝對應語言的插件即可,非常方便,可擴展性強。

5、使用 SonarQube 分析 Maven 項目

下面我們以一個 Java Maven 項目 mavenDemo 為例,看下如何配置,以及 SonarQube 分析結果查看。注意:這里有個兼容性選擇問題,如果 SonarQube >= 4.5,那么 maven-sonar-plugin >= 2.7,如果 SonarQube < 4.5,那么 maven-sonar-plugin = 2.6;如果 Maven >= 3.0,那么maven-sonar-plugin >= 3.1,如果 Maven < 3.0,那么 maven-sonar-plugin = 3.0.2。

首先,我們需要配置 Maven 的 setting.xml文件,增加 sonarQube 配置。

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- 配置 Sonar Host地址,默認:http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

然后就可以在我們 Maven 工程目錄執行 mvn clean verify sonar:sonarmvn clean install sonar:sonar

如果我們想指定使用某個版本的 sonar-maven-plugin 插件,比如 3.3.0.603 版本,可以有兩種方式:

一、修改 pom.xml 文件

<build>
  <plugins>
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
      <version>3.3.0.603</version>
    </plugin>
  </plugins>
</build>

二、使用 mvn 命令指定

mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar

執行完畢之后,可以去 web頁面查看分析結果。

img

img

這里我們只演示了一個簡單的 Maven 項目使用 SonarQube 分析代碼質量,SonarQube 功能還有很多,像代碼規則、質量配置、質量閾值配置、項目權限配置等等,有時間在慢慢研究下吧。

參考資料


免責聲明!

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



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