如何在sonarqube的pmd插件中整合阿里開(kāi)發(fā)規(guī)范

一配并、sonarqube簡(jiǎn)介

? ? ? Sonar是一個(gè)用于代碼質(zhì)量管理的開(kāi)源平臺(tái),用于管理Java源代碼的質(zhì)量高镐。通過(guò)插件機(jī)制溉旋,Sonar 可以集成不同的測(cè)試工具,代碼分析工具嫉髓,以及持續(xù)集成工具观腊,比如pmd-cpd邑闲、checkstyle、findbugs梧油、Jenkins苫耸。通過(guò)不同的插件對(duì)這些結(jié)果進(jìn)行再加工處理,通過(guò)量化的方式度量代碼質(zhì)量的變化儡陨,從而可以方便地對(duì)不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理褪子。同時(shí) Sonar 還對(duì)大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 Sonar骗村。 此外嫌褪,Sonar 的插件還可以對(duì) Java 以外的其他編程語(yǔ)言提供支持,對(duì)國(guó)際化以及報(bào)告文檔化也有良好的支持胚股。

二笼痛、pmd插件整合阿里開(kāi)發(fā)規(guī)則

sonar-pmd是sonar官方的支持pmd的插件,但是還不支持p3c琅拌,需要在pmd插件源碼中添加p3c支持(p3c是阿里在pmd基礎(chǔ)上根據(jù)阿里巴巴開(kāi)發(fā)手冊(cè)實(shí)現(xiàn)了其中的49開(kāi)發(fā)規(guī)則)缨伊。

參考文章https://my.oschina.net/greki/blog/1801462

源碼下載地址:https://github.com/mrprince/sonar-p3c-pmd

此源碼工程已經(jīng)添加了P3C支持


并在pmd插件的默認(rèn)268條規(guī)則上添加了阿里的48條規(guī)則,阿里的p3c實(shí)現(xiàn)了49條阿里開(kāi)發(fā)規(guī)范規(guī)則进宝,此工程中少了一條AvoidManuallyCreateThreadRule規(guī)則刻坊,只需要將sonar-p3c-pmd工程中的默認(rèn)的268條規(guī)則屏蔽掉,添加AvoidManuallyCreateThreadRule 規(guī)則即彪,就是我們現(xiàn)在的含有49條阿里開(kāi)發(fā)規(guī)則的 pmd插件紧唱。


sonar-p3c-pmd工程工程源碼改法


1.一條校驗(yàn)規(guī)則對(duì)應(yīng)分別對(duì)應(yīng)3個(gè)配置文件 pmd.properties (src\main\resources\org\sonar\l10n\), rules.xml(src\main\resources\org\sonar\plugins\pmd\),? pmd-model.xml (src\main\resources\com\sonar\sqale\)。

2.首先注釋掉pmd中原默認(rèn)的268條規(guī)則隶校。例如屏蔽掉pmd中原來(lái)默認(rèn)的? ? ? StringInstantiation規(guī)則漏益。

①首先注釋掉pmd.properties文件中的


(注意:規(guī)則配置在pmd.properties文件中是以 .name 結(jié)尾,不要多注釋掉其它的以 .param.xxx結(jié)尾的配置深胳,否則可能導(dǎo)致打出的jar包放到sonar下時(shí)sonar啟動(dòng)失敗? ? )

②注釋掉rules.xml中的 StringInstantiation對(duì)應(yīng)的配置


③注釋掉pmd-model.xml中的StringInstantiation對(duì)應(yīng)的配置


這樣就屏蔽掉了一條默認(rèn)的pmd規(guī)則绰疤。

3.添加阿里的開(kāi)發(fā)規(guī)則,為了區(qū)別阿里的p3c規(guī)則舞终,這里新建了一個(gè)rules-p3c.xml文件轻庆。


然后在PmdRulesDefinition類中指定一下rules-p3c.xml 路徑


添加阿里的規(guī)則,例如添加CommentsMustBeJavadocFormatRule 規(guī)則敛劝。

①在 pmd.properties中添加

? rule.pmd.CommentsMustBeJavadocFormatRule.name=CommentsMustBeJavadocFormatRule

②在 rules-p3c.xml中添加


③在pmd-model.xml中添加


④添加描述文件— CommentsMustBeJavadocFormatRule.html.內(nèi)容來(lái)自p3c對(duì)應(yīng)xml 用于錯(cuò)誤詳情頁(yè)面的展示



4. 修改p3c的提示語(yǔ)余爆,如leader要求添加 PASS-ALI 前綴,下載p3c-pmd源碼 https://github.com/alibaba/p3c夸盟,描述內(nèi)容都在p3c/p3c-pmd/src/main/resources/messages.xml蛾方,在messages.xml中每條規(guī)則的提示語(yǔ)前添加前綴 PASS-ALI:? 。



然后將p3c-pmd打包,裝到本地倉(cāng)庫(kù) mvn clean install -Dgpg.skip

重新打包sonar-p3c-pmd工程桩砰,將打好的jar包放到sonarqube的 ..\extensions\plugins目錄下拓春,重啟sonarqube。即可安裝好整合好只含有阿里開(kāi)發(fā)規(guī)則的pmd插件亚隅。


5. 如果想修改pmd插件在sonarqube中的插件顯示名硼莽,可以修改 sonar-p3c-pmd 工程中的PmdConstants類? Sring REPOSITORY_NAME 名字即可



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市煮纵,隨后出現(xiàn)的幾起案子懂鸵,更是在濱河造成了極大的恐慌,老刑警劉巖醉途,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矾瑰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡隘擎,警方通過(guò)查閱死者的電腦和手機(jī)殴穴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)货葬,“玉大人采幌,你說(shuō)我怎么就攤上這事≌鹜埃” “怎么了休傍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蹲姐。 經(jīng)常有香客問(wèn)我磨取,道長(zhǎng),這世上最難降的妖魔是什么柴墩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任忙厌,我火速辦了婚禮,結(jié)果婚禮上江咳,老公的妹妹穿的比我還像新娘逢净。我一直安慰自己,他們只是感情好歼指,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布爹土。 她就那樣靜靜地躺著,像睡著了一般踩身。 火紅的嫁衣襯著肌膚如雪胀茵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天挟阻,我揣著相機(jī)與錄音宰掉,去河邊找鬼呵哨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轨奄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拒炎,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挪拟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了击你?” 一聲冷哼從身側(cè)響起玉组,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丁侄,沒(méi)想到半個(gè)月后惯雳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸿摇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年石景,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拙吉。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潮孽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筷黔,到底是詐尸還是另有隱情往史,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布佛舱,位于F島的核電站椎例,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏请祖。R本人自食惡果不足惜订歪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望损拢。 院中可真熱鬧陌粹,春花似錦、人聲如沸福压。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荆姆。三九已至蒙幻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胆筒,已是汗流浹背邮破。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工诈豌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抒和。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓矫渔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親摧莽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庙洼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容