我想在PMD中使用自定义规则。 我在jenkins中安装了PMD插件,我还创建了一个jar:
我在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规则?
答案 0 :(得分:2)
我认为,第一步是让自定义PMD规则在没有Jenkins的情况下运行。
Jenkins将触发maven构建,这将触发PMD创建报告文件pmd.xml
,然后Jenkins PMD插件将解析此pmd.xml
文件。
Maven - 您已在报告部分添加了maven-pmd-plugin。这意味着,您需要生成站点,以获取PMD报告(运行mvn site
。也可以在构建期间运行PMD,例如在阶段{{运行pmd:pmd
1}}。另见PMD Mojo Documentation。
为了使您的自定义规则和自定义规则集可用,您需要将jar添加为maven-pmd-plugin部分的附加依赖项,例如
verify
验证...
<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
下。
可能是,Jenkins PMD插件现在只显示您的规则,但没有代码示例和描述等文档。这是在PMDMessages类中实现的,并使用了PMD的“RegisteredRuleSets”功能,这个功能没有很好的记录,但源代码是here(对于PMD 4.3)。
在jar中的目录target/pmd.xml
中添加名为rulesets.properties
的属性文件。您可以将此文件放在源代码树中,通常位于rulesets
下。该文件需要具有以下内容
src/main/resources/rulesets/rulesets.properties
它包含以逗号分隔的规则集文件列表。如果您在jar中添加此文件,那么Jenkins PMD报告应该包含您想要的信息。
请注意,已有更新版本的Maven PMD插件可用,目前最新版本为3.5。此版本基于PMD 5,它引入了多种语言,并且在java的情况下,rulesets.properties文件的路径更改为rulesets.filenames=rulesets/custom-ruleset-1.xml,rulesets/custom-ruleset-2.xml
。