您好,登錄后才能下訂單哦!
這篇文章給大家介紹sonarqube中怎么添加阿里java開發(fā)規(guī)范,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
拉取sonar-pmd源碼,切換到3.2.1。修改pom文件添加p3c-pmd依賴:
<dependency> <groupId>com.alibaba.p3c</groupId> <artifactId>p3c-pmd</artifactId> <version>2.0.0</version> </dependency>
開始配置阿里Java規(guī)范,此處演示配置規(guī)則:單個方法的總行數(shù)不超過80行,規(guī)則名為MethodTooLongRule,此規(guī)則名來源于p3c項目p3c\p3c-pmd\src\main\resources\rulesets\java\ali-other.xml文件中配置的規(guī)則名。
首先在sonar-pmd項目sonar-pmd-plugin\src\main\resources\org\sonar\l10n\pmd\rules目錄下新建pmd-p3c目錄用于存放規(guī)則說明html,然后新建MethodTooLongRule.html, 添加內(nèi)容如下:
<p>單個方法的總行數(shù)不超過80行。</p> <p>說明:包括方法簽名、結(jié)束右大括號、方法內(nèi)代碼、注釋、空行、回車及任何不可見字符的總行數(shù)不超過80行。</p>
修改sonar-pmd項目sonar-pmd-plugin\src\main\resources\org\sonar\l10n\pmd.properties配置文件,添加MethodTooLongRule規(guī)則名如下:
rule.pmd.MethodTooLongRule.name=[p3c]The total number of lines for a method should not be more than 80.
在sonar-pmd項目sonar-pmd-plugin\src\main\resources\org\sonar\plugins\pmd目錄下新建rules-p3c.xml規(guī)則文件并添加MethodTooLongRule規(guī)則配置如下:
<rule key="MethodTooLongRule"> <priority>MAJOR</priority> <configKey><![CDATA[rulesets/java/ali-other.xml/MethodTooLongRule]]></configKey> <type>CODE_SMELL</type> <tag>other</tag> </rule>
修改sonar-pmd項目sonar-pmd-plugin\src\main\resources\com\sonar\sqale\pmd-model.xml配置文件,在文件末尾</sqale>標(biāo)簽前添加如下代碼:
<chc> <key>P3C-PMD</key> <name>p3c-pmd</name> <chc> <key>P3C_PMD</key> <name>p3c_pmd</name> <!--在此處添加rule的chc--> <chc> <rule-repo>pmd</rule-repo> <rule-key>MethodTooLongRule</rule-key> <prop> <key>remediationFunction</key> <txt>CONSTANT_ISSUE</txt> </prop> <prop> <!--此處為該技術(shù)債務(wù)所需要的時間,單位使用min,此處設(shè)為2min--> <key>offset</key> <val>2</val> <txt>min</txt> </prop> </chc> </chc> </chc>
添加p3c規(guī)則的引入,修改PmdRulesDefinition.java文件,在define方法內(nèi)添加p3c規(guī)則庫
@Override public void define(Context context) { NewRepository repository = context .createRepository(PmdConstants.REPOSITORY_KEY, PmdConstants.LANGUAGE_KEY) .setName(PmdConstants.REPOSITORY_NAME); extractRulesData(repository, "/org/sonar/plugins/pmd/rules.xml", "/org/sonar/l10n/pmd/rules/pmd"); // 新增 extractRulesData(repository, "/org/sonar/plugins/pmd/rules-p3c.xml", "/org/sonar/l10n/pmd/rules/pmd-p3c"); repository.done(); }
使用mvn package -Dmaven.test.skip=true打包即可,如果規(guī)則的描述文件html中包含中文內(nèi)容,那么注意文件編碼需要是utf-8。
把sonar-pmd-plugin\target目錄下的sonar-pmd-plugin-3.2.1.jar放到 sonarqube服務(wù)/extensions/plugins目錄下重啟服務(wù)。
登陸sonarqube在質(zhì)量配置頁面點擊【創(chuàng)建】按鈕新建p3c質(zhì)量,語言選Java,點擊【創(chuàng)建】后跳轉(zhuǎn)到該質(zhì)量配置的詳情界面,然后點擊【更多激活規(guī)則】,在搜索規(guī)則中搜索p3c,然后點擊【批量修改】,點擊【應(yīng)用】到剛新建的質(zhì)量配置, 然后回到【質(zhì)量配置】頁面,將該質(zhì)量配置Set as Default【設(shè)為默認(rèn)】,然后就可以分析項目質(zhì)量了。
問題:
1. 分析失敗提示缺失類com/google/gson/Gson,在sonar-pmd項目pom文件添加如下依賴:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency>
其他:
1. 規(guī)則說明html內(nèi)容來源于p3c\p3c-pmd\src\main\resources下的message.xml文件內(nèi)配置的msg和desc內(nèi)容,添加示例代碼使用<pre>標(biāo)簽,如果代碼內(nèi)用泛型或代碼為xml配置請使用<xmp>標(biāo)簽,示例如下:
<h3>Negative example :</h3><pre> <xmp> List<String> list = new ArrayList<String>(); list.add("22"); //warn List<String> test = (ArrayList<String>) list.subList(0, 1); </xmp></pre>
2.規(guī)則名來源于p3c\p3c-pmd\src\main\resources下的message_en.xml的配置的規(guī)則的msg內(nèi)容,但存在部分msg過長導(dǎo)致sonar重啟失敗,請酌情刪減。
3. rules-p3c.xml添加規(guī)則類型type暫時用了CODE_SMELL和BUG
4. rules-p3c.xml添加規(guī)則內(nèi)的configKey配置要與p3c\p3c-pmd\src\main\resources\rulesets\java目錄下的規(guī)則配置文件文件名和規(guī)則名一一對應(yīng)。
關(guān)于sonarqube中怎么添加阿里java開發(fā)規(guī)范就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。