首页 > 解决方案 > 如何在每次运行 PMD 时避免缓存失效/“分析缓存失效,辅助类路径已更改”?

问题描述

每次我通过 Maven 插件运行 PMD 并设置分析缓存时,我都会看到日志消息

[INFO] Analysis cache loaded
[INFO] Analysis cache invalidated, auxclasspath changed.
[INFO] Analysis cache updated

从有和没有缓存(文件存在)的分析速度来看,没有使用缓存(这就是我在这种情况下理解失效的方式)。我想使用它来加快分析速度。

我在提交钩子中使用 PMD 作为独立二进制文件以及需要指定-auxclasspath. 我在论坛帖子中找到它,使用它并且它似乎可以工作,但是我不明白它并且找不到有关它的信息。提交挂钩仅针对修改后的文件运行,不使用缓存。

我的插件配置是

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>3.13.0</version>
    <executions>
        <execution>
            <id>pmd</id>
            <phase>verify</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <rulesets>
            <ruleset>/pmd.xml</ruleset>
        </rulesets>
        <printFailingErrors>true</printFailingErrors>
        <includeTests>true</includeTests>
        <analysisCache>true</analysisCache>
        <analysisCacheLocation>${env.HOME}/code-analysis/pmd-analysis-cache/${project.name}</analysisCacheLocation>
        <linkXRef>false</linkXRef>
        <verbose>true</verbose>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>net.sourceforge.pmd</groupId>
            <artifactId>pmd-core</artifactId>
            <version>6.21.0</version>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.pmd</groupId>
            <artifactId>pmd-java</artifactId>
            <version>6.21.0</version>
        </dependency>
    </dependencies>
</plugin>

有一个问题报告允许对 auxclasspath 是什么以及生成消息的原因进行一些猜测,但是它没有提供解释或说明如何正确使用它。

标签: mavenpmd

解决方案


推荐阅读