gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:11:27 24 4
gpt4 key购买 nike

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

  1. 规则集文件
  2. 自定义规则的java代码(自定义规则扩展自AbstractJavaRule)。

我将此 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>

我如何告诉 jenkins PMD 插件使用我的新 JAVA 规则?

最佳答案

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

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

  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 站点 是否会生成 pmd 报告,通常位于 target/pmd.xml 下。

  4. Jenkins PMD 插件现在可能只显示您的规则,但没有代码示例和描述等文档。这是在 PMDMessages 中实现的类并使用 PMD 的“RegisteredRuleSets”功能,该功能没有很好的文档记录,但源代码是 here (适用于 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

关于java - 如何在 Jenkins PMD 插件中添加自定义 PMD 规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com