3

我正在尝试在我的 eclipse java 项目中添加一个 suppresss.xml。我的 checkstyle-config.xml 位于 src/main/resources 中,而 suppresss.xml 位于同一目录中。我将此添加到配置文件中:

<module name="SuppressionFilter">
    <property name="file" value="src/main/resources/suppressions.xml"/>
</module>

在 pom.xml 中,我有

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <includeTestSourceDirectory>true</includeTestSourceDirectory>
        <failsOnError>true</failsOnError>
        <propertiesLocation>src/main/resources/checkstyle.build.properties</propertiesLocation>
        <configLocation>src/main/resources/checkstyle-config.xml</configLocation>                    
        <suppressionsLocation>src/main/resources/suppressions.xml</suppressionsLocation>
    </configuration>
</plugin>

当我从命令行mvn verify或通过 eclipse m2e 插件运行时,我收到此错误:

checkstyle 配置期间失败:无法初始化模块 SuppressionFilter - 无法将模块 SuppressionFilter 中的属性“文件”设置为“src/main/resources/suppressions.xml”:无法解析 src/main/resources/suppressions.xml - 无效文件或检查格式: InvocationTargetException -> [帮助 1]

我什至尝试将 checkstyle-config.xml 中的路径更改为${config_log}${basedir}但到目前为止没有运气。

对此的任何帮助都是不言而喻的。

更新:我觉得问题可能不在于文件位置,而在于 suppresss.xml 文件本身。这是我的suppresses.xml,

<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
     "-//Puppy Crawl//DTD Suppressions 1.1//EN"
     "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">

<suppressions>
    <suppress checks="JavadocPackage" files="src/test/java/**"/>
</suppressions>
4

1 回答 1

0

files属性是一个正则表达式,它根据检查的文件的绝对文件路径进行评估。所以**表达式无效。改用这样的东西:

<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
    "-//Puppy Crawl//DTD Suppressions 1.1//EN"
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">

<suppressions>
    <suppress checks="JavadocPackage" files="[/\\]src[/\\]test[/\\]java[/\\].*"/>
</suppressions>

使用[/\\]而不只是/也支持 UNIX 和 Windows 路径分隔符。

于 2014-02-08T18:51:00.343 回答