我在项目中使用 checkstyle 并且定义了一个抑制滤波器 http://checkstyle.sourceforge.net/config.html#Filters在我的 checkstyle 配置中。我使用 Apache ant 通过持续集成进行自动构建。
我的问题来自以下情况:我不想在基于项目的目录中填充太多文件,因此 checkstyle.xml 和suppressions.xml 都位于名为conf 的子目录中(用于构建配置)。现在,Ant 和 Eclipse 查找 Suppressions.xml 的工作方式有所不同。
在我声明一个 ant 任务以使用 checkstyle 的基本配置查找 checkstyle.xml 后,Ant 使用基于项目的目录作为 basedir 来查找 Suppressions.xml。此 checkstyle.xml 现在包含以下内容:
<module name="SuppressionFilter">
<property name="file" value="conf/suppressions.xml"/>
</module>
通过这种方式,ant-build 会找到suppressions.xml,因为构建的basedir 是项目目录。
现在使用checkstyle插件 http://eclipse-cs.sourceforge.net/为Eclipse带来了一个问题。它从 checkstyle.xml 的路径 (conf) 开始查找 Suppressions.xml。对于 Eclipse,声明必须如下所示才能工作:
<module name="SuppressionFilter">
<property name="file" value="suppressions.xml"/>
</module>
编辑:即使这不起作用,Eclipse 似乎始终需要绝对路径。
我想知道一种方法,让 Eclipse 和 Ant 都可以使用相同的 checkstyle-configuration。有人知道这个问题的解决方案吗?绝对路径不是解决方案,因为每个开发人员和 CI 服务器都有不同的项目目录路径。