为什么明显使用未使用的方法会导致 PMD 违规
Why a PMD violation for unused method when it is obviously used
PMD 失败:... Rule:UnusedPrivateMethod Priority:3 避免未使用的私有方法,例如 'printMyString(String)'
private void anyMethod() {
var myString = "a String";
printMyString(myString);
}
private void printMyString(String string) {
System.out.println(string);
}
将此插件用于 maven
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.12.0</version>
这似乎是 PMD 中的一个错误,因为它在通过推断 "var" 跟踪变量类型时存在问题。目标方法有具体定义的参数。
我可以通过禁用特定的 PMD 规则来解决这个问题。在 pom.xml 中,我修改了 PMD 插件以使用本地规则文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.12.0</version>
<configuration>
<linkXRef>false</linkXRef>
<printFailingErrors>true</printFailingErrors>
<failOnViolation>true</failOnViolation>
<rulesets>
<ruleset>${basedir}/PMD.xml</ruleset>
</rulesets>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
和 PMD.xml 文件(在项目的根目录中)。
<ruleset xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Default Maven PMD Plugin Ruleset" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
Excluding rules.
</description>
<rule ref="category/java/bestpractices.xml">
<exclude name="UnusedPrivateMethod"/>
</rule>
</ruleset>
PMD 失败:... Rule:UnusedPrivateMethod Priority:3 避免未使用的私有方法,例如 'printMyString(String)'
private void anyMethod() {
var myString = "a String";
printMyString(myString);
}
private void printMyString(String string) {
System.out.println(string);
}
将此插件用于 maven
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.12.0</version>
这似乎是 PMD 中的一个错误,因为它在通过推断 "var" 跟踪变量类型时存在问题。目标方法有具体定义的参数。
我可以通过禁用特定的 PMD 规则来解决这个问题。在 pom.xml 中,我修改了 PMD 插件以使用本地规则文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.12.0</version>
<configuration>
<linkXRef>false</linkXRef>
<printFailingErrors>true</printFailingErrors>
<failOnViolation>true</failOnViolation>
<rulesets>
<ruleset>${basedir}/PMD.xml</ruleset>
</rulesets>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
和 PMD.xml 文件(在项目的根目录中)。
<ruleset xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Default Maven PMD Plugin Ruleset" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
Excluding rules.
</description>
<rule ref="category/java/bestpractices.xml">
<exclude name="UnusedPrivateMethod"/>
</rule>
</ruleset>