如何定义 checkstyle 的抑制定义,可与 ant 和 eclipse 一起使用
我在项目中使用 checkstyle 并在 checkstyle 配置中定义了 SuppressionFilter 。 我使用 Apache ant 通过持续集成进行自动构建。
我的问题来自以下情况:我不想在基于项目的目录中填充太多文件,因此 checkstyle.xml 和suppressions.xml 都位于名为conf 的子目录中(用于构建配置)。 现在,Ant 和 Eclipse 查找 Suppression.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 是项目目录。
现在使用 Eclipse 的 checkstyle-plugin 会带来问题。 它从 checkstyle.xml 的路径 (conf) 开始查找 Suppressions.xml。 对于 Eclipse,声明必须如下所示才能工作:
<module name="SuppressionFilter">
<property name="file" value="suppressions.xml"/>
</module>
编辑:即使这不起作用,Eclipse 似乎始终需要绝对路径。
我想知道一种方法,让 Eclipse 和 Ant 都可以使用相同的 checkstyle-configuration。 有人知道这个问题的解决方案吗? 绝对路径不是解决方案,因为每个开发人员和 CI 服务器都有不同的项目目录路径。
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.
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 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>
This way the ant-build finds the suppressions.xml, because the basedir of the build is the project-directory.
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>
EDIT: Even that doesn't work, Eclipse seems to need always an absolute path.
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
很老了,但我找到了一种更好的方法来使用 Checkstyle 高级属性:
这个问题已经 在 Eclipse Checkstyle 插件中,
${samedir}
属性扩展到配置文件所在的目录:在您的情况下,您的模块配置将如下所示:
Ant 目标还将设置 <代码>samedir 属性:
This question is pretty old, but I've found a better way to do it using the Checkstyle Advanced properties:
For the Eclipse Checkstyle plugin, the
${samedir}
property expands to the directory that the configuration file is located within:In your case, your module configuration would look like this:
The Ant target would also set the
samedir
property:使用 Checkstyle 的属性扩展功能。 在
checkstyle.xml
中将SupressionFilter
声明为:然后在 Ant 构建脚本中修改 Checkstyle 任务以包含嵌套属性:
Use Checkstyle's property expansion functionality. In your
checkstyle.xml
declare yourSupressionFilter
as:Then modify your Checkstyle task in your Ant build script to include a nested property: