【问题标题】:How to configure PMD violation threshold in Jenkins如何在 Jenkins 中配置 PMD 违规阈值
【发布时间】:2017-02-21 11:55:09
【问题描述】:

我创建了一个 jenkins 作业,下面是 pom 文件。 1. 您能否建议一种忽略特定“X”个 PMD 违规的方法? 2. 此设置是否正确生成 PMD 报告? Jenkins 的目标是全新安装 pmd:check site

<build>
    <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>-->

                <failOnViolation>true</failOnViolation>


            </configuration>
            <executions>
                <execution>

                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<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>-->
                <failurePriority>5</failurePriority>
                <failOnViolation>true</failOnViolation>
                <targetDirectory>./pmdOutput</targetDirectory>
                <rulesets>
                    <ruleset>/rulesets/basic.xml</ruleset>
                </rulesets>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>

【问题讨论】:

    标签: jenkins static-analysis pmd


    【解决方案1】:

    PMD Maven 插件不允许设置违规次数阈值,它要么在第一次违反给定优先级时失败,要么不这样做。

    我可能会做的不是运行pmd:check 目标,而是让maven 生成报告,并使用Jenkins' PMD plugin 解析报告xml 并在需要时使构建失败。

    Jenkins 的 PMD 插件确实允许更灵活的阈值配置。

    【讨论】:

    • 我只使用 Jenkins 的 PMD 插件作为全新安装 pmd:check 站点。 Jenkins 将生成的报告保存在哪里?不能保存在一个普通的地方吗?即使违反 PMD,如何通过构建?
    • 嗨@Johnco failOnViolation 也不起作用。当只使用“”时,无论“”属性的值如何,代码都会构建。当仅使用“”时,无论“failOnViolation”属性如何,构建都会失败。
    • pmd:check 是使用&lt;failOnViolation&gt; 值的唯一目标(默认为true)。它依赖pmd:pmd 生成报告,然后构建失败与否。该任务绑定到verify 生命周期步骤,因此它使用build 配置,它应该尊重&lt;failOnViolation&gt;&lt;build&gt;
    • Jenkins 的 PMD 插件不会生成报告,但它会解析构建期间生成的报告并根据设置生成指标/更改构建结果。您需要添加构建后步骤来发布 PMD 结果,并确保设置在何处查找 pmd xml 结果(我认为默认值适用于 Maven 项目,但您应该检查一下)。
    • 谢谢@Johnco 我的团队正在安装所需的插件。将让您随时了解此轨道的进展情况。
    【解决方案2】:

    从版本3.10.0开始,PMD有配置选项maxAllowedViolations

    https://maven.apache.org/plugins/maven-pmd-plugin/cpd-check-mojo.html#maxAllowedViolations

     <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <configuration>
              <maxAllowedViolations>180</maxAllowedViolations>
          </configuration>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多