Java 当未使用的方法明显被使用时,为什么会出现PMD冲突

Java 当未使用的方法明显被使用时,为什么会出现PMD冲突,java,java-11,pmd,Java,Java 11,Pmd,PMD故障:。。。规则:UnusedPrivateMethod优先级:3避免未使用的私有方法,如“printMyString(String)” 使用这个插件来maven <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.12

PMD故障:。。。规则:UnusedPrivateMethod优先级:3避免未使用的私有方法,如“printMyString(String)”

使用这个插件来maven

            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.12.0</version>
org.apache.maven.plugins
maven pmd插件
3.12.0

这似乎是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>

org.apache.maven.plugins
maven pmd插件
3.12.0
假的
真的
真的
${basedir}/PMD.xml
检查
cpd检查
和PMD.xml文件(在项目的根目录中)


不包括规则。

我无法复制这个。你的代码在什么地方可用吗?你能创建一个复制这个问题的小样本项目吗?我准备了一个简单的测试项目:-对于方法processDocument来说它不会失败。该问题很快在PMD处被跟踪,但由于我们无法复制它,它已经结束。我更新了问题,为更新的示例提供了一个更简洁的问题示例。不幸的是,我仍然无法复制它:-当然,我需要添加一个方法来使用“anyMethod”,否则这将被标记为未使用。但printMyString被正确检测为已使用……请注意,使用调整后的规则集PMD.xml,您将执行比以前少得多的规则。默认情况下,maven pmd插件使用以下规则集:/rulesets/java/maven-pmd-plugin-default.xml-可在此处找到:(部分“默认规则集”)。从本地复制开始,注释掉你不想要的规则。除了完全禁用规则,还可以抑制:请参见
        <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>
<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>