簡體   English   中英

如何在Jenkins PMD插件中添加自定義PMD規則?

[英]How to add a custom PMD rule in Jenkins PMD plugin?

我想在PMD中使用自定義規則。 我在jenkins中安裝了PMD插件,還創建了一個jar:

  1. 規則集文件
  2. 自定義規則的Java代碼(自定義規則擴展自AbstractJavaRule)。

我將此罐子添加到了PMD插件的lib目錄(jenkins / plugins / pmd / WEB-INF / lib)中。

我還將其添加到項目的pom.xml中(以測試PMD):

        <reporting>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-pmd-plugin</artifactId>
                    <version>2.7.1</version>
                    <configuration>
                        <linkXRef>false</linkXRef>
                        <targetJdk>1.6</targetJdk>
                        <rulesets>
                                 <ruleset>/rulesets/basic.xml</ruleset>
                        </rulesets>                  
                    </configuration>
                </plugin>
            </plugins>
    </reporting> 

如何告訴詹金斯PMD插件使用我的新JAVA規則?

我認為,第一步是在沒有Jenkins的情況下使自定義PMD規則生效。 Jenkins將觸發Maven構建,這將觸發PMD創建報告文件pmd.xml ,然后Jenkins PMD插件將解析此pmd.xml文件。

  1. Maven-您已在報告部分中添加了maven-pmd-plugin。 這意味着,您需要生成站點以獲取PMD報告(運行mvn site 。也可以在構建過程中運行PMD,例如,在階段verify運行pmd:pmd 。另請參見PMD Mojo文檔

  2. 為了使您的自定義規則和自定義規則集可用,您需要將jar作為附加依賴項添加到maven-pmd-plugin部分,例如

     ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>2.7.1</version> ... <dependencies> <dependency> <groupId>com.your.custom.rule</groupId> <artifactId>custom-rule</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> </dependencies> </plugin> 
  3. 驗證mvn site通常在target/pmd.xml下會生成pmd報告。

  4. Jenkins PMD插件現在可能只是顯示您的規則,而沒有代碼示例和說明之類的文檔。 這是在PMDMessages類中實現的,並使用了PMD的“ RegisteredRuleSets”功能,雖然沒有很好的文檔說明,但是源代碼在這里 (對於PMD 4.3)。

  5. 在jar的目錄rulesets集中添加一個名為rulesets.properties的屬性文件。 您通常將此文件放置在源樹中的src/main/resources/rulesets/rulesets.properties 該文件需要具有以下內容

     rulesets.filenames=rulesets/custom-ruleset-1.xml,rulesets/custom-ruleset-2.xml 

它包含逗號分隔的規則集文件列表。 如果將此文件添加到jar中,則Jenkins PMD報告應包含所需的信息。

請注意,已經有較新版本的Maven PMD插件可用,當前最新版本為3.5。 該版本基於PMD 5,該版本引入了多種語言,如果使用Java,則rulesets.properties文件的路徑將更改為rulesets/java/rulesets.properties

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM