如何定义 checkstyle 的抑制定义,适用于 ant 和 eclipse [英] How to define suppressions-definitions for checkstyle, that work with both ant and eclipse
问题描述
我在项目中使用 checkstyle,并且在我的 checkstyle 中定义了一个 SuppressionFilter -配置.我使用 Apache ant 通过持续集成进行自动构建.
I use in a project checkstyle and I have defined a SuppressionFilter in my checkstyle-configuration. I use Apache ant to make automatic builds via Continuous Integration.
我的问题来自以下情况:我不想将太多文件填充到基于项目的ir中,因此 checkstyle.xml 和 suppresss.xml 都在名为 conf 的子目录中(用于构建配置).现在,Ant 和 Eclipse 以不同的方式查找 suppresss.xml.
My problems comes from the following situation: I don't want to fill to much files into the project-basedir, so the checkstyle.xml and the suppressions.xml are both in a subdirectory named conf (for configuration for build). Now Ant and Eclipse work differently for finding the suppressions.xml.
在我声明了一个 ant-task 以使用 checkstyle 的基本配置查找 checkstyle.xml 之后,Ant 使用 project-basedir 作为 basedir 来查找 suppresss.xml.这个 checkstyle.xml 现在包含以下内容:
Ant use the project-basedir as basedir for finding the suppressions.xml, after I declared an ant-task to find the checkstyle.xml with the base-configuration of checkstyle. This checkstyle.xml now contains the following:
<module name="SuppressionFilter">
<property name="file" value="conf/suppressions.xml"/>
</module>
这样ant-build会找到suppresses.xml,因为build的basedir是project-directory.
This way the ant-build finds the suppressions.xml, because the basedir of the build is the project-directory.
现在使用 Eclipse 的 checkstyle-plugin 会带来一个问题.它从 checkstyle.xml 的路径 (conf) 开始查找 suppresss.xml.对于 Eclipse,声明必须如下所示才能起作用:
Now using the checkstyle-plugin for Eclipse brings a problem. It looks for the suppressions.xml starting with the path the checkstyle.xml has (conf). For Eclipse the declaration had to look like this, to work:
<module name="SuppressionFilter">
<property name="file" value="suppressions.xml"/>
</module>
即使这样不起作用,Eclipse 似乎总是需要一个绝对路径.
Even that doesn't work, Eclipse seems to need always an absolute path.
我想知道一种方法,即 Eclipse 和 Ant 都可以使用相同的 checkstyle-configuration.有人知道这个问题的解决方案吗?绝对路径不是解决方案,因为每个开发人员和 CI-Server 都有不同的项目目录路径.
I want to know a way, that both Eclipse and Ant can work with the same checkstyle-configuration. Someone knows a solution to this problem? Absolute paths are no solution, because every developer and the CI-Server have different paths for the project-directory.
推荐答案
使用Checkstyle的属性扩展 功能.在您的 checkstyle.xml
中声明您的 SupressionFilter
为:
Use Checkstyle's property expansion functionality. In your checkstyle.xml
declare your SupressionFilter
as:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle.suppressions.file}" default="suppressions.xml"/>
</module>
然后在 Ant 构建脚本中修改 Checkstyle 任务以包含嵌套属性:
Then modify your Checkstyle task in your Ant build script to include a nested property:
<checkstyle config="conf/checkstyle.xml">
<fileset dir="src" includes="**/*.java"/>
<property key="checkstyle.suppressions.file" value="conf/suppressions.xml"/>
</checkstyle>
这篇关于如何定义 checkstyle 的抑制定义,适用于 ant 和 eclipse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!