当我在Linux和Windows之间来回切换时,我遇到了与Checkstyle抑制配置相同的问题。下面是我在基于Ant的构建系统中解决这个问题的方法:基本上,我通过使用Ant构建脚本配置Checkstyle属性文件,将适当的特定于平台的目录值注入到主Checkstyle配置文件中。
我的Checkstyle主配置文件有一个SuppressionFilter
模块声明,如下所示。在checkstyle-suppressions-file
属性的值来自的Checkstyle属性文件:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle-suppressions-file}"/>
</module>
的的Checkstyle属性文件不是一成不变的,它是由从属性的Ant构建脚本生成的文件模板称为template-checkstyle.properties
。这里是模板是什么样子的镇压文件属性:
[email protected][email protected]/checkstyle_suppressions.xml
我的Ant构建脚本将此文件复制到一个名为checkstyle.properties
文件。副本具有与目录的正确值替换的特殊标记,其中的镇压文件中发现:
<copy file="${scm.dir}/template-checkstyle.properties" tofile="${scm.dir}/checkstyle.properties">
<filterset>
<filter token="SCM_DIR" value="${scm.dir.unix}"/>
</filterset>
</copy>
现在,来自哪里的scm.dir.unix
价值?那么,这是衍生从我的构建属性,阅读。你需要用你提到的目录值来指定这样一个值。
请注意,有一个稍微不明显的问题,涉及您指定此目录的方式。我认为scm.dir.unix
值是从构建属性派生的,因为我发现主要的Checkstyle配置文件不能在SuppressionFilter
模块的file
属性的值中包含反斜线,即Windows路径分隔符。例如,指定类似C:\foo\bar\baz
的内容会导致Checkstyle错误消息,说明找不到C:foobarbaz
。我解决这个由scm.dir
目录构建属性“转换”与Ant的pathconvert
任务“UNIX”格式:
<pathconvert targetos="unix" property="scm.dir.unix">
<path location="${scm.dir}"/>
</pathconvert>
然后我打电话checkstyle
Ant任务是这样的:
<checkstyle config="${scm.dir}/checkstyle_checks.xml"
properties="${scm.dir}/checkstyle.properties">
<!-- details elided -->
</checkstyle>
通话到checkstyle
任务将checkstyle.properties
文件中包含的键/值对注入主Checkstyle配置中。
如果你喜欢,你可以看到完整的剧本here
希望这有助于
感谢您的提示,我的ant版本现在很好,忽略了测试类中的神奇数字(这是一个开始!)。 我必须对您提供的代码进行一次更改(以供任何其他人稍后可能会参考),任务缺少“过滤=真”;至少在用我的蚂蚁版本运行时。 –
2008-10-14 10:02:08