使用已弃用的 PMD 规则

Use of Deprecated PMD rules

我们最近在我们的 Salesforce 项目中选择了 PMD 来帮助我们进行 Apex 代码质量分析。我们已经实施了一些规则,但发现大多数真正有价值的规则(关于性能、复杂性等)都被标记为已弃用。

人们是否通常使用继续使用已弃用的规则(因为它们仍然有效,即使它们不再受到积极支持)?或者在这个意义上弃用意味着这些可能是 broken/unreliable.

已弃用的 PMD 规则的流行是否意味着我们应该寻找替代工具?

我非常欢迎你的想法

Apex 模块中弃用的规则很少:https://pmd.github.io/latest/pmd_rules_apex.html

PMD 规则通常不会在没有替换的情况下被弃用。例如 AvoidDmlStatementsInLoops is replaced by OperationWithLimitsInLoops,如文档所述。 有时,多个规则合并为一个规则,这 3 performance rules 就是这种情况。您可能会觉得许多规则已被弃用,但不会丢失任何功能,而且较新的规则通常更易于扩展。

如果您看到许多弃用警告,可能是因为您通过已弃用的 规则集 引用了这些规则。例如,如果你写

  <rule ref="rulesets/apex/complexity.xml/AvoidDeeplyNestedIfStmts" />

您将收到弃用警告,因为该规则集将在 PMD 7 中删除。但是,该规则并未弃用,仍然可以在

访问
  <rule ref="category/apex/design.xml/AvoidDeeplyNestedIfStmts" />

我建议这样做是因为您提到了已弃用的复杂性规则,并且没有弃用 PMD Apex 的复杂性规则(规则集 complexity.xml 是)。

在PMD 6中,PMD的规则库被重新组织成“类别”,与之前直接发布规则集的方式形成对比。因此,大多数 built-in 规则集在 PMD 7 之前已被弃用,这并不意味着规则本身已被弃用。