一配并、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 名字即可