溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

sonarqube中怎么添加阿里java開發(fā)規(guī)范

發(fā)布時間:2021-06-15 13:39:34 來源:億速云 閱讀:503 作者:Leah 欄目:大數(shù)據(jù)

這篇文章給大家介紹sonarqube中怎么添加阿里java開發(fā)規(guī)范,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

 

  1. 拉取sonar-pmd源碼,切換到3.2.1。修改pom文件添加p3c-pmd依賴:

    <dependency>
        <groupId>com.alibaba.p3c</groupId>
        <artifactId>p3c-pmd</artifactId>
        <version>2.0.0</version>
    </dependency>


     

  2.  開始配置阿里Java規(guī)范,此處演示配置規(guī)則:單個方法的總行數(shù)不超過80行,規(guī)則名為MethodTooLongRule,此規(guī)則名來源于p3c項目p3c\p3c-pmd\src\main\resources\rulesets\java\ali-other.xml文件中配置的規(guī)則名。

  3.  首先在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>


     

  4. 修改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.


     

  5. 在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>


     

  6. 修改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>


     

  7. 添加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();
        }


     

  8. 使用mvn package -Dmaven.test.skip=true打包即可,如果規(guī)則的描述文件html中包含中文內(nèi)容,那么注意文件編碼需要是utf-8。

  9. 把sonar-pmd-plugin\target目錄下的sonar-pmd-plugin-3.2.1.jar放到 sonarqube服務(wù)/extensions/plugins目錄下重啟服務(wù)。

  10. 登陸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é)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI