我正在寻找一种解决方案,该解决方案允许我使用PMD检查短变量名称,同时将lambda排除在该规则之外.
主要原因是IntelliJ用单个字符esp自动命名常见的lamba变量.总是缩写的java.lang.Strings像
aListFullOfStrings.forEach(s -> s.replaceAll(" ", ""));
我更喜欢该缩写,但是我不想对所有的lambda添加抑制.我无法找到任何方法来调整我的PMD规则以优雅地解决此问题.
建议非常感激-我对它们的所有配置都不熟悉.
解决方法:
您可以利用基于xpath的PMD抑制功能.
在规则集XML上,只需为此特定规则配置属性,如下所示:
<rule ref="rulesets/java/naming.xml/ShortMethodName">
<properties>
<property name="violationSuppressXPath" value=".[ancestor::LambdaExpression]"/>
</properties>
</rule>
尽管如此,作为PMD维护者,我认为这是更改PMD本身规则的合理案例,因此我添加了github.com/pmd/pmd/issues/720进行跟踪.