Android Studio中集成sonarQube添加阿里開發規範PMD插件

1、sonarQube能作什麼

Sonar是一個用於代碼質量管理的開源平臺,用於管理源代碼的質量。官網 默認支持Java語言的靜態代碼審查,能夠經過添加插件的方式來支持絕大多數主流開發語言的代碼審查,插件地址。還能夠跟代碼檢查工具Android Lint,FindBugs,PMD等、持續集成工具Jenkins,Hudson集成起來。經過用戶加載的插件檢測再對結果加工處理,以量化的方式去度量代碼質量的變化。

2、準備工做

安裝準備工做,以win10平臺下Android爲例,其餘系統參考官網SonarQube SetUp:

1.JDK8以上;

2.SonarQube7.0,在網頁末尾處找到Historical Downloads,show all versions

3.SonarQube Scanner ,也可替換爲sonar-runner

4.sonar-l10n-zh github上的SonarQubeCommunity支持了官網國際化,須要加載插件實現

5.數據庫(非必需)

3、配置

1.解壓縮SonarQube和SonarQube Scanner,將下載好的sonar-l10n-zh放到SonarQube安裝目錄下的extensions\plugins文件夾中,運行SonarQube目錄下面bin文件夾下對應於本身系統的StartSonar.bat就能夠了,例如個人路徑是:D:\Sonar\sonarqube-7.0\sonarqube-7.0\bin\windows-x86-64,成功運行後打開瀏覽器輸入http://localhost:9000/,用戶名和密碼默認admin,進入之後就打開Sonar頁面了。默認語言是中文,只不過中文化有些不完全。 java

2.打開SonarQube目錄下conf文件夾下的sonar.properties,配置:git

sonar.sorceEncoding=UTF-8github

sonar.login=admin數據庫

sonar.password=adminwindows

3.進入解壓縮後的Scanner目錄,將bin路徑加入到環境變量path中進行配置,而後打開Scanner目錄下的sonar-scanner.properties文件,配置:瀏覽器

sonar.sorceEncoding=UTF-8bash

sonar.login=adminapp

sonar.password=admin工具

sonar.scm.disablied=truegradle

配置完成以後,運行cmd,輸入sonar-scanner -version,看到版本信息就說明配置成功了

4.登錄成功後,進入到配置 -> Marketplace -> 搜索Android安裝,或者下載離線包,將離線包插件放到SonarQube的extensions\plugins目錄下,此處我已安裝好,如圖所示:

安裝完成以後,能夠在質量配置裏面設置Java默認檢測規範:

這裏能夠看到默認是P3C,即爲阿里開發規範的PMD插件,後面會再作說明。

4、項目配置以及運行Sonar分析

項目上配置有兩種方式,能夠採用咱們上面下載的SonarQube Scanner,或者在Android Studio中的頂層build.gradle中使用(推薦)。下面分別介紹:

1.使用SonarQube Scanner,在項目根目錄下,新建sonar-project.properties文件,配置如下信息:

sonar.projectKey=P3CDemo

sonar.projectName=P3CDemo

sonar.projectVersion=1.0

sonar.sources=app/src/main/java

sonar.binaries=app/build/intermediates/classes/

sonar.language=java

sonar.sourceEncoding=UTF-8

sonar.profile=Android Lint

打開cmd,進入項目所在根目錄,輸入命令:sonar-runner,分析成功後出現:EXECUTION SUCCESS

注意在scanner過程當中,以前開啓的StartSonar.bat不能關閉

以後就能夠在Sonar界面看到項目的質量分析圖了:

2.在Android Studio中配置Sonar插件:

在AS中打開setting-Plugins-Browse repositories,搜索sonar,點擊SonarLint安裝。

而後在Other Settings下面配置Server信息,新建一個SonarQube Server用於設置鏈接服務,設置完成之後能夠點擊update binding嘗試鏈接一下 在test binding的時候可能會出現提示某個插件版本比較低的狀況,能夠在sonar plugin中有針對性下載更新插件。

在下拉框中選擇Login/Password帳號密碼登錄

接下來在SonarLint Project Settings,勾上enable選項,選擇剛纔新建的那個Server,選擇SonarQube project(這個project應該是以前在第二步Sonar-runner 分析過的,server裏面有記錄的)。

各位看官不要着急,僅剩下最後一步便可完成配置了。

在Android Studio項目層級的build.gradle文件中,設置:

在buildscript後添加:

plugins {
    // 添加插件信息
    id "org.sonarqube" version "2.6.2"
}

subprojects {
    sonarqube {
        properties {
            property "sonar.host.url", "http://localhost:9000/"
            property "sonar.sourceEncoding", "UTF-8"
            property "sonar.projectKey", "MOGUTest"
            property "sonar.projectName", "MOGUTest"
            property "sonar.projectVersion", "1.0"
            property "sonar.sources", "src/main/java"
            property "sonar.binaries", "build/intermediates/classes"
        }
    }
}
複製代碼

這裏須要注意,在sonar.source以及sonar.binaries後文件位置去掉了app/ 區別於sonar-project.properties的配置

至此,能夠執行代碼檢測任務了: 在目錄下命令行執行 ./gradlew.sh sonarqube或者執行gradle中的project -> other -> sonarqube

能夠在sonar中看到項目代碼質量基於sonar java或者Android Lint檢測的結果。接下來咱們看如何實現將阿里巴巴規範的插件加入帶sonar的配置檢測中:

4、阿里開發規範之PMD插件整合

sonar-pmd是sonar官方的支持pmd的插件,可是還不支持p3c,須要在pmd插件源碼中添加p3c支持(p3c是阿里在pmd基礎上根據阿里巴巴開發手冊實現了其中的49開發規則)。github上已有的sonar-p3c-pmd地址:github.com/mrprince/so… ,在wiki中有具體安裝說明,須要從新編譯jar包。 目前阿里P3C-PMD中java規則有53條,能夠從此處查找已編譯好的sonar-pmd插件,將插件放到sonarQube的extensions\plugins目錄下,在sonar上找到配置 -> 系統 -> Restart Server

重啓成功再次登錄後,在質量配置裏面建立一個新的代碼規則來匹配P3C的標準:

此時的P3C規則還未激活,而且沒有規則制度,所以須要在sonar中查到到符合P3C的規則進行批量修改:

首先激活P3C,點擊P3C紅色未激活處,變爲綠色已激活狀態便可,接下來進行批量修改

此處爲已添加效果,未添加或者要新添加規則均可以經過批量修改進行導入。

將P3C設爲默認代碼檢測規範,執行gradle,此處寫了一個阻斷類型的代碼(壞味道)來檢測有效性:

對於如何添加團隊定製的代碼規範,能夠參考上面下載的P3C-PMD插件裏的寫法

如如有誤,歡迎交流

相關文章
相關標籤/搜索