2012-07-06 30 views
0

我在命令行上使用checkstyle。不在Maven或ANT中。Checkstyle抑制:我做错了什么?

我已经定义了一个suppressions.xml文件并从我的-c CheckstyleConfig.xml引用它。

Checkstyle运行(不解析错误),但它不压制任何东西。

我想让Checkstyle忽略.class文件。这里是我的suppression.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suppressions PUBLIC 
"-//Puppy Crawl//DTD Suppressions 1.1//EN" 
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> 
<suppressions> 
<suppress checks="." files="(.*\.class)"/> 
</suppressions> 

任何想法对我做错了什么? Checkstyle仍在处理.class文件。

谢谢。

回答

0

Checkstyle对类文件不起作用,它不能解析它们。 Checkstyle适用于Java源代码,它们是以“.java”结尾的文件。

所以,问题是你的正则表达式来抑制错误。抑制应该是:

<suppress checks="." files="(.*\.java)"/> 
0

Checkstyle适用于任何你喂它它。默认的eclipse-cs安装只会为它提供Java文件和属性文件,但由于您是从命令行运行的,因此您必须排除.class文件的检查或取消警告。

最好从检查中排除.class文件(这样Checkstyle永远不会看到它们),因为它会为您节省时间。

但是,如果你想压制警告,你也可以这样做。 files正则表达式在suppressions.xml是贪婪的,所以.*已经覆盖了整个文件名,并且示例中的模式永远不会匹配。试试这个语法(抑制所有.class文件):

<suppressions> 
    <suppress checks=".*" files="\.class$" /> 
</suppressions> 
+0

顺便说一句,使用'.'或'*'的'checks'说法并不重要。两种变体都以不同的方式匹配所有检查。 – 2012-10-30 21:18:22

+0

感谢您花时间回答这个问题。这个问题与之前工作中的项目有关。那份工作SUUUUUUUUUUUUUCKED(洛克希德马丁)。如果我记得,我解决问题的方式是,我包装了一个PERL脚本,只发送java文件到CS。 – 2012-11-16 21:08:09

+0

是的,事实上Checkstyle会检查你给它的东西。所以如果你给它的类文件,你选择了正确的解决方案与您的脚本。不将错误的文件提供给CS比CS有效地抑制警告更好。我会调整我的答案 - 迄今为止没有,因为我认为这个问题已经死了。 :-) – 2012-11-16 22:28:38