【问题标题】:Use of Deprecated PMD rules使用已弃用的 PMD 规则
【发布时间】:2022-02-17 20:52:42
【问题描述】:

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

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

不推荐使用的 PMD 规则的盛行是否意味着我们应该寻找替代工具?

我真的很欢迎你的想法

【问题讨论】:

    标签: apex apex-code pmd


    【解决方案1】:

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

    如果没有替换,PMD 规则通常不会被弃用。例如,AvoidDmlStatementsInLoopsOperationWithLimitsInLoops 替换,如文档所述。 有时,多个规则合并为一个规则,这就是这 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 的规则库已重新组织为“类别”。因此,在 PMD 7 之前,大多数内置规则集已被弃用,这并不意味着规则本身已被弃用。

    【讨论】:

    • 完美。谢谢你的解释。我们一直假设 git 中的规则集是活动/弃用规则的真实来源,但现在将使用您提供的链接。干杯!
    猜你喜欢
    • 1970-01-01
    • 2018-02-06
    • 2016-10-04
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多