對(duì)于自定義的CheckStyle代碼規(guī)則如何配置到SonarQube?網(wǎng)上找了很久,也沒(méi)找到多少有用的信息,沒(méi)辦法,自己擼吧。一通擼下來(lái)發(fā)現(xiàn),其實(shí)挺簡(jiǎn)單 (⊙▽⊙)
慣例第一步肯定是SonarQube的安裝與運(yùn)行配置了,但這部分不在本文主題內(nèi),網(wǎng)上一搜一大把,這里就不講了,大家可以先看這篇文章:SonarQube的安裝、配置與使用
。我們直接講自定義CheckStyle代碼規(guī)則的配置方法。
(注:不同的SonarQube版本可能略有不同,大家按線索來(lái))
1、CheckStyle插件安裝(熟悉的可跳過(guò))

如圖所示,在
應(yīng)用市場(chǎng)中搜索CheckStyle即可,搜索出來(lái)后,點(diǎn)擊安裝按鈕(我這里已經(jīng)安裝了,未安裝的情況再卸載按鈕的地方會(huì)有安裝按鈕),即可下載安裝,安裝過(guò)程中會(huì)有一次重啟操作,大家按提示操作即可。(注:有些版本的SonarQube插件安裝是在
配置-系統(tǒng)-更新中心)
2、配置自定義的CheckStyle代碼規(guī)則
配置自定義的CheckStyle代碼規(guī)則,有兩種方法,使用CheckStyle代碼規(guī)則配置文件和啟用SonarQube中的CheckStyle相關(guān)代碼規(guī)則,下面一一介紹:
-
使用CheckStyle代碼規(guī)則配置文件
注意:這種方法只有新建一個(gè)質(zhì)量配置時(shí)才能用,質(zhì)量配置創(chuàng)建好后,就不能利用配置文件來(lái)配置代碼規(guī)則了。
按照上面兩個(gè)圖,填寫(xiě)好相關(guān)信息后,點(diǎn)擊創(chuàng)建按鈕。這里有幾個(gè)問(wèn)題需要注意下:-
問(wèn)題一 配置文件不能以
<?xml version="1.0" encoding="UTF-8"?>開(kāi)頭,否則點(diǎn)擊創(chuàng)建按鈕時(shí)會(huì)有如下錯(cuò)誤提示:配置文件中有<?xml?>標(biāo)簽
因此要把此標(biāo)簽去掉,直接以<module>標(biāo)簽開(kāi)頭,如下圖所示:配置文件去掉xml文件頭標(biāo)簽 -
問(wèn)題二 配置文件中不能有重復(fù)的規(guī)則,否則點(diǎn)擊
創(chuàng)建按鈕時(shí),會(huì)有報(bào)錯(cuò)提示,比如:上圖中提示ReturnCountCheck進(jìn)行了重復(fù)配置,看一下配置文件重復(fù)規(guī)則錯(cuò)誤提示這里我們需要對(duì)構(gòu)造函數(shù)和lambda表達(dá)式的返回語(yǔ)句個(gè)數(shù)進(jìn)行不同的配置,但是SonarQube認(rèn)為是重復(fù)的配置。┑( ̄Д  ̄)┍ -
問(wèn)題三 配置文件中不能有
規(guī)則模板(規(guī)則模板后面介紹),當(dāng)配置文件中有規(guī)則模板,點(diǎn)擊創(chuàng)建按鈕時(shí),會(huì)有報(bào)錯(cuò)提示,比如:上圖錯(cuò)誤提示的意思是:規(guī)則模板`規(guī)則模板`錯(cuò)誤提示checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck不能被激活。這條規(guī)則是檢測(cè)從未改變的局部變量是否添加final修飾詞,那么如果我們需要添加這條規(guī)則,怎么處理呢?留到啟用SonarQube中CheckStyle相關(guān)代碼規(guī)則方法去說(shuō)。
-
通過(guò)使用配置文件的方法配置自定義的CheckStyle代碼規(guī)則,或多或少還會(huì)有其它問(wèn)題,要根據(jù)提示處理配置文件。所以,一般情況下,不建議使用這種方法,事倍功半的說(shuō)。╥﹏╥
-
啟用SonarQube中CheckStyle相關(guān)代碼規(guī)則
如圖所示,在質(zhì)量配置中會(huì)顯示SonarQube中所有已安裝編程語(yǔ)言中創(chuàng)建好的規(guī)則配置(每個(gè)語(yǔ)言都有內(nèi)置Sonar way的默認(rèn)配置),可見(jiàn),剛剛創(chuàng)建的CheckStyle配置中,通過(guò)文件已配置了18條規(guī)則,接下來(lái)我們?cè)龠M(jìn)行添加。點(diǎn)擊配置名稱,進(jìn)入配置詳情頁(yè):點(diǎn)擊質(zhì)量配置詳情更多激活規(guī)則上圖中左邊欄的用于篩選的,可從語(yǔ)言、規(guī)則類(lèi)型、標(biāo)簽、資源庫(kù)等等進(jìn)行篩選,這里我們要用到可激活規(guī)則列表資源庫(kù)的篩選,選中資源庫(kù)后,會(huì)列舉出已安裝的插件列表,選中CheckStyle,頁(yè)面中會(huì)篩選出CheckStyle的可配置規(guī)則(上圖已經(jīng)篩選好了,顯示有136條可配置的規(guī)則)。接下來(lái)就可以對(duì)這136條規(guī)則進(jìn)行配置了,細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn)了,規(guī)則列表中的規(guī)則有兩類(lèi):非模板規(guī)則(有
活動(dòng)按鈕,無(wú)規(guī)則模板的標(biāo)簽)和模板規(guī)則(無(wú)活動(dòng)按鈕,有規(guī)則模板的標(biāo)簽)。所以,我們也分兩類(lèi)講:- 非模板規(guī)則
對(duì)于非模板規(guī)則,我們直接在規(guī)則列表中點(diǎn)擊列表項(xiàng)的活動(dòng)按鈕即可,在彈出的對(duì)話框中填寫(xiě)屬性值,如下圖所示:如果想先了解下規(guī)則的內(nèi)容,也可以先點(diǎn)擊規(guī)則名稱進(jìn)入詳情頁(yè),詳情頁(yè)也有激活的入口。激活非模板規(guī)則 - 規(guī)則模板
對(duì)于規(guī)則模板,是沒(méi)有直接的激活按鈕的。那么規(guī)則模板怎么激活呢?且聽(tīng)下回分解……O(∩_∩)O哈哈~(玩笑臉)
規(guī)則模板,需要我們先根據(jù)模板創(chuàng)建一條規(guī)則,之后再激活創(chuàng)建的規(guī)則。接下來(lái)說(shuō)步驟(以上文說(shuō)的規(guī)則模板Final Local Variable為例)-
在規(guī)則列表中找到這表規(guī)則,點(diǎn)擊規(guī)則名稱進(jìn)入詳情頁(yè)規(guī)則詳情頁(yè)
- 點(diǎn)擊
創(chuàng)建按鈕,彈出自定義規(guī)則創(chuàng)建框根據(jù)提示填寫(xiě)相關(guān)信息后(子屬性根據(jù)需要進(jìn)行填寫(xiě),不填則使用默認(rèn)值),點(diǎn)擊創(chuàng)建自定義規(guī)則創(chuàng)建按鈕。
創(chuàng)建成功的規(guī)則如下圖所示:在自定義規(guī)則下面會(huì)有一個(gè)創(chuàng)建的規(guī)則列表。此時(shí)回到之前的規(guī)則列表后,會(huì)在列表中找到剛剛創(chuàng)建的規(guī)則,點(diǎn)擊列表項(xiàng)的活動(dòng)即可激活。其次,也可以在此頁(yè)面點(diǎn)擊自定義的規(guī)則名稱,進(jìn)入詳情頁(yè)在此頁(yè)面中,可以進(jìn)行二次自定義規(guī)則詳情頁(yè)編輯、刪除、激活等操作。
-
在規(guī)則列表中找到這表規(guī)則,點(diǎn)擊規(guī)則名稱進(jìn)入詳情頁(yè)
- 非模板規(guī)則
配置好后,可在配置詳情頁(yè)中點(diǎn)擊CheckStyle的鏈接,以XML的格式查看已配置好的規(guī)則,如下圖所示:
















