[英]How to add a custom PMD rule in Jenkins PMD plugin?
我想在PMD中使用自定义规则。 我在jenkins中安装了PMD插件,还创建了一个jar:
我将此罐子添加到了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
文件。
Maven-您已在报告部分中添加了maven-pmd-plugin。 这意味着,您需要生成站点以获取PMD报告(运行mvn site
。也可以在构建过程中运行PMD,例如,在阶段verify
运行pmd:pmd
。另请参见PMD Mojo文档 。
为了使您的自定义规则和自定义规则集可用,您需要将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>
验证mvn site
通常在target/pmd.xml
下会生成pmd报告。
Jenkins PMD插件现在可能只是显示您的规则,而没有代码示例和说明之类的文档。 这是在PMDMessages类中实现的,并使用了PMD的“ RegisteredRuleSets”功能,虽然没有很好的文档说明,但是源代码在这里 (对于PMD 4.3)。
在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.