您好,登錄后才能下訂單哦!
這篇文章給大家介紹sonarqube中怎么添加阿里java開發規范,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
拉取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規范,此處演示配置規則:單個方法的總行數不超過80行,規則名為MethodTooLongRule,此規則名來源于p3c項目p3c\p3c-pmd\src\main\resources\rulesets\java\ali-other.xml文件中配置的規則名。
首先在sonar-pmd項目sonar-pmd-plugin\src\main\resources\org\sonar\l10n\pmd\rules目錄下新建pmd-p3c目錄用于存放規則說明html,然后新建MethodTooLongRule.html, 添加內容如下:
<p>單個方法的總行數不超過80行。</p> <p>說明:包括方法簽名、結束右大括號、方法內代碼、注釋、空行、回車及任何不可見字符的總行數不超過80行。</p>
修改sonar-pmd項目sonar-pmd-plugin\src\main\resources\org\sonar\l10n\pmd.properties配置文件,添加MethodTooLongRule規則名如下:
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規則文件并添加MethodTooLongRule規則配置如下:
<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>標簽前添加如下代碼:
<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> <!--此處為該技術債務所需要的時間,單位使用min,此處設為2min--> <key>offset</key> <val>2</val> <txt>min</txt> </prop> </chc> </chc> </chc>
添加p3c規則的引入,修改PmdRulesDefinition.java文件,在define方法內添加p3c規則庫
@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打包即可,如果規則的描述文件html中包含中文內容,那么注意文件編碼需要是utf-8。
把sonar-pmd-plugin\target目錄下的sonar-pmd-plugin-3.2.1.jar放到 sonarqube服務/extensions/plugins目錄下重啟服務。
登陸sonarqube在質量配置頁面點擊【創建】按鈕新建p3c質量,語言選Java,點擊【創建】后跳轉到該質量配置的詳情界面,然后點擊【更多激活規則】,在搜索規則中搜索p3c,然后點擊【批量修改】,點擊【應用】到剛新建的質量配置, 然后回到【質量配置】頁面,將該質量配置Set as Default【設為默認】,然后就可以分析項目質量了。
問題:
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. 規則說明html內容來源于p3c\p3c-pmd\src\main\resources下的message.xml文件內配置的msg和desc內容,添加示例代碼使用<pre>標簽,如果代碼內用泛型或代碼為xml配置請使用<xmp>標簽,示例如下:
<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.規則名來源于p3c\p3c-pmd\src\main\resources下的message_en.xml的配置的規則的msg內容,但存在部分msg過長導致sonar重啟失敗,請酌情刪減。
3. rules-p3c.xml添加規則類型type暫時用了CODE_SMELL和BUG
4. rules-p3c.xml添加規則內的configKey配置要與p3c\p3c-pmd\src\main\resources\rulesets\java目錄下的規則配置文件文件名和規則名一一對應。
關于sonarqube中怎么添加阿里java開發規范就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。