我想设置一个使用 PMD 报告的质量门。如果代码覆盖率低于 85% 或代码有 1 个严重错误或 2 个高错误,则不允许升级代码。我还没有找到任何有关 PMD 质量门的信息。我发现其他软件可以完成门部分,但我想知道 PMD 本身是否可以做到这一点。
只是研究是否可以使用 PMD 或我是否必须使用其他产品来创建门。
可以为 PMD 规则分配优先级,如果发现违反特定优先级的规则,则构建可能会失败。
要为规则配置特定优先级,请参阅 https://docs.pmd-code.org/latest/pmd_userdocs_configuring_rules.html .
如果您创建一个自定义规则集并放入优先级为1的最关键规则以及其他不太重要的规则,例如优先级3。 然后,您可以使用选项
--minimum-priority 1
在命令行上运行 PMD,并且仅执行优先级为 1 的规则。默认情况下,如果发现违规,PMD 将以退出代码 4 退出,这将破坏构建。
--no-fail-on-violation
再次运行 PMD 以生成包含所有规则违规的报告。
或者,您可以使用两个单独的规则集并运行 PMD 两次,如上所示(使用和不使用
--no-fail-on-violation
)。这样您就不需要为每个规则配置优先级。您有一个规则集,其中包含导致构建失败的重要规则,而另一个规则集则包含不那么重要的规则。
当 PMD 构建失败时,您的构建管道将停止,并且代码不会提升到下一阶段。所以,这就是质量门。
但是,不可能允许一定数量的违规行为。或者区分新的违规行为或以前已经存在的违规行为。如果发现至少一项规则违规,PMD 将使构建失败。
如果您在现有代码库上引入 PMD,则需要慢慢增加规则集,逐个添加规则并解决问题。另请参阅最佳实践。