SonarQube配置自定義的CheckStyle代碼規(guī)則

對(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ò))

CheckStyle插件安裝操作步驟

如圖所示,在應(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ò)提示,比如:

      重復(fù)規(guī)則錯(cuò)誤提示
      上圖中提示ReturnCountCheck進(jìn)行了重復(fù)配置,看一下配置文件
      這里我們需要對(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ò)提示,比如:

      `規(guī)則模板`錯(cuò)誤提示
      上圖錯(cuò)誤提示的意思是:規(guī)則模板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è):
    質(zhì)量配置詳情
    點(diǎn)擊更多激活規(guī)則
    可激活規(guī)則列表
    上圖中左邊欄的用于篩選的,可從語(yǔ)言、規(guī)則類(lèi)型、標(biāo)簽、資源庫(kù)等等進(jìn)行篩選,這里我們要用到資源庫(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ī)則
      如果想先了解下規(guī)則的內(nèi)容,也可以先點(diǎn)擊規(guī)則名稱進(jìn)入詳情頁(yè),詳情頁(yè)也有激活的入口。
    • 規(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)建框
        創(chuàng)建自定義規(guī)則
        根據(jù)提示填寫(xiě)相關(guān)信息后(子屬性根據(jù)需要進(jìn)行填寫(xiě),不填則使用默認(rèn)值),點(diǎn)擊創(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è)
        自定義規(guī)則詳情頁(yè)
        在此頁(yè)面中,可以進(jìn)行二次編輯、刪除、激活等操作。

配置好后,可在配置詳情頁(yè)中點(diǎn)擊CheckStyle的鏈接,以XML的格式查看已配置好的規(guī)則,如下圖所示:


配置好的CheckStyle規(guī)則

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容