2013-06-12 314 views
3

我想添加一個suppressions.xml到我的eclipse java項目。我的checkstyle-config.xml位於src/main/resources中,suppressions.xml位於同一個目錄中。我已將此添加到配置文件:maven-checkstyle-plugin:無法解析suppressions.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> 

當我通過命令行或通過Eclipse的插件M2E運行mvn verify,我得到這個錯誤:

Failed during checkstyle configuration: cannot initialize module SuppressionFilter - Cannot set property 'file' in module SuppressionFilter to 'src/main/resources/suppressions.xml': unable to parse src/main/resources/suppressions.xml - invalid files or checks format: InvocationTargetException -> [Help 1]

我甚至試圖在的CheckStyle-config.xml中的路徑更改爲${config_log}${basedir},但沒有呂克到目前爲止。

對此的任何幫助將是可觀的。

更新:我覺得問題可能不在於文件位置,而是與suppressions.xml文件本身。這裏是我的suppressions.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> 
+0

文檔說如果需要,文件可以在類路徑中指定。因爲src/main/resources具有以類路徑根結尾的文件,所以請單獨嘗試'supressions.xml'。這就是配置文件中的條目。我不確定pom中的條目是否相同。我不知道爲什麼你會在這兩個地方需要它。 –

+0

我總是將我的checkstyle.xml配置文件放在與pom.xml文件相同的文件夾中。也許如果你把它和這個suppressions.xml文件放在那裏,並把它們的名字放在pom中沒有路徑,它可能會起作用。 –

+0

試過,並沒有工作。我將它從pom.xml中刪除,並將其更改爲checkstyle-config.xml中的「suppressions.xml」,但無效。在這種情況下無法找到文件錯誤。 – vikas

回答

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路徑分隔符。

+0

https://github.com/checkstyle/checkstyle/issues/3744 – Oliv