如何在Jenkins PMD插件中添加自定义PMD规则?

时间:2015-11-17 13:50:49

标签: java maven jenkins pmd rule

我想在PMD中使用自定义规则。 我在jenkins中安装了PMD插件,我还创建了一个jar:

  1. 规则集文件
  2. 自定义规则的java代码(自定义规则从AbstractJavaRule扩展而来)。
  3. 我在PMD插件的lib目录中添加了这个jar(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> 
    

    如何告诉jenkins PMD-plugin使用我的新JAVA规则?

1 个答案:

答案 0 :(得分:2)

我认为,第一步是让自定义PMD规则在没有Jenkins的情况下运行。 Jenkins将触发maven构建,这将触发PMD创建报告文件pmd.xml,然后Jenkins PMD插件将解析此pmd.xml文件。

  1. Maven - 您已在报告部分添加了maven-pmd-plugin。这意味着,您需要生成站点,以获取PMD报告(运行mvn site。也可以在构建期间运行PMD,例如在阶段{{运行pmd:pmd 1}}。另见PMD Mojo Documentation

  2. 为了使您的自定义规则和自定义规则集可用,您需要将jar添加为maven-pmd-plugin部分的附加依赖项,例如

    verify
  3. 验证... <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> 是否会生成pmd报告,通常位于mvn site下。

  4. 可能是,Jenkins PMD插件现在只显示您的规则,但没有代码示例和描述等文档。这是在PMDMessages类中实现的,并使用了PMD的“RegisteredRuleSets”功能,这个功能没有很好的记录,但源代码是here(对于PMD 4.3)。

  5. 在jar中的目录target/pmd.xml中添加名为rulesets.properties的属性文件。您可以将此文件放在源代码树中,通常位于rulesets下。该文件需要具有以下内容

    src/main/resources/rulesets/rulesets.properties
  6. 它包含以逗号分隔的规则集文件列表。如果您在jar中添加此文件,那么Jenkins PMD报告应该包含您想要的信息。

    请注意,已有更新版本的Maven PMD插件可用,目前最新版本为3.5。此版本基于PMD 5,它引入了多种语言,并且在java的情况下,rulesets.properties文件的路径更改为rulesets.filenames=rulesets/custom-ruleset-1.xml,rulesets/custom-ruleset-2.xml