如何定义 checkstyle 的抑制定义,可与 ant 和 eclipse 一起使用

发布于 2024-07-15 20:48:31 字数 1187 浏览 10 评论 0原文

我在项目中使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼波传意 2024-07-22 20:48:31

很老了,但我找到了一种更好的方法来使用 Checkstyle 高级属性

这个问题已经 在 Eclipse Checkstyle 插件中, ${samedir} 属性扩展到配置文件所在的目录:

在您的情况下,您的模块配置将如下所示:

<module name="SuppressionFilter">
    <property name="file" value="${samedir}/conf/suppressions.xml" />
</module>

Ant 目标还将设置 <代码>samedir 属性:

<checkstyle config="${checkstyle.tool.dir}/checks.xml" failOnViolation="false">
    <fileset dir="${src.dir}" includes="**/*.java" />
    <property key="samedir" value="${checkstyle.tool.dir}/conf" />
</checkstyle>

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:

<module name="SuppressionFilter">
    <property name="file" value="${samedir}/conf/suppressions.xml" />
</module>

The Ant target would also set the samedir property:

<checkstyle config="${checkstyle.tool.dir}/checks.xml" failOnViolation="false">
    <fileset dir="${src.dir}" includes="**/*.java" />
    <property key="samedir" value="${checkstyle.tool.dir}/conf" />
</checkstyle>
殊姿 2024-07-22 20:48:31

使用 Checkstyle 的属性扩展功能。 在 checkstyle.xml 中将 SupressionFilter 声明为:

<module name="SuppressionFilter">
    <property name="file" value="${checkstyle.suppressions.file}" default="suppressions.xml"/>
</module>

然后在 Ant 构建脚本中修改 Checkstyle 任务以包含嵌套属性:

<checkstyle config="conf/checkstyle.xml">
    <fileset dir="src" includes="**/*.java"/>
    <property key="checkstyle.suppressions.file" value="conf/suppressions.xml"/>
</checkstyle>

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>

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文