java 如何从检查操作中删除某些文件

whlutmcx  于 2023-10-14  发布在  Java
关注(0)|答案(2)|浏览(139)

我使用checkstyle插件来格式化我的代码,我需要从检查操作中排除一些Java类。为此,我写了下面的代码:

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="src/main/java/package1/*.java"/>
</module>

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="src/main/java/package2/*.java"/>
</module>

我试图排除2个不同包中的所有类。但不幸的是,代码不起作用。我也试过如下:

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="src/main/java/package1/*.java"/>
    <property name="fileNamePattern" value="src/main/java/package2/*.java"/>
</module>

但这并不奏效。checkstyle插件再次检查所有类。我如何才能做到这一点?

6yt4nkrj

6yt4nkrj1#

经过长时间的尝试,我找到了解决办法。我给出路径的格式是错误的。正确的格式应该是这样的:

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="[/\\]src[/\\]main[/\\]java[/\\]package1"/>
    </module>

    <module name="BeforeExecutionExclusionFileFilter">
        <property name="fileNamePattern" value="[/\\]src[/\\]main[/\\]java[/\\]package2"/>
    </module>

如果我们想给给予多个包忽略,这是我们应该做的方式。给两个同名的属性不起作用。希望这对其他人有帮助。

of1yzvn4

of1yzvn42#

您的问题是fileNamePattern被视为regex,因此package1/*.java中的x1将不匹配类名字母,但将是/的量词。
此外,让我们考虑一下checkstyle中的排除逻辑代码(截至2023年9月10日):

public boolean accept(String uri) {
    return fileNamePattern == null || !fileNamePattern.matcher(uri).find();
}

因为它使用的是find,而不是match,所以公共路径可以省略,你可以使用正则表达式or表达式,所以你的xml可能会被剥离为

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="package1|package2"/>
</module>

相关问题