0

我是 Checkstyle 的新手,虽然我主要通过 Maven Checkstyle 插件使用它。

我有一种情况,我认为 Checkstyle 缺乏灵活性。可能是我,不熟悉 Checkstyle 及其配置选项。

我遇到的问题是使用 METHOD_CALL 令牌类型的 ParenPad 检查;我相信。

在大多数情况下,我不允许方法调用中括号前后的任何空格。

e.g. object.method(arg1);                          Case 1

但是,当我使用 StringBuffer 或 StringBuilder 构建 SQL 语句、电子邮件文本或其他一些长字符串时;我喜欢为用于构建长字符串的语句提供 LTR 感觉,以便更容易阅读。

e.g. buffer.append("String 1 ");                   Case 2
     buffer.append(          variable);
     buffer.append(                 " String 2");

我试图获得的风格是在方法调用的左括号之后不允许有一个或多个空格,但在方法调用的右括号之前不允许有空格。

似乎我无法将 Checkstyle 配置为允许这样做。我可以让它接受案例 1 并拒绝案例 2 或反之亦然,但要让它接受两者,我需要一起禁用 ParenPad 测试,我觉得这太激烈了。我希望使用 checkstyle 规则来接受和执行这两种情况。

请告知我如何使用 Checkstyle 完成此操作。我需要什么配置?使用 Checkstyle 来实现这一点是否有“技巧”?是否有 Checkstyle 扩展来满足我的需求?还是我需要写一个自定义检查?

寻求任何帮助或建议。

提前致谢

4

2 回答 2

0

我找到了一个我现在正在使用的解决方法,但希望情况得到改善。我已将 ParenPad 的 Checkstyle 规则修改为如下:

    <module name="ParenPad">
      <property name="option" value="nospace"/>
      <property name="tokens" value="CTOR_CALL,LPAREN,RPAREN,SUPER_CTOR_CALL"/>
    </module>

基本上,它不会对 ParenPad 进行方法调用的规则检查。虽然对于所有其他出现的括号不强制使用空格,但对于用于方法调用的括号来说,它是一个免费的。

我需要的是在方法调用的右括号之前强制没有空格,但在方法调用的左括号之后不允许有一个或多个空格。

于 2013-01-01T06:21:23.273 回答
0

您可以使用该tokens属性来达到预期的效果。只需省略LPAREN令牌即可解除左括号的限制:

<module name="ParenPad">
  <property name="tokens" value="CTOR_CALL,METHOD_CALL,RPAREN,SUPER_CTOR_CALL"/>
</module>

在 Eclipse 中,这看起来像这样:

Eclipse Checkstyle Paren Pad 配置

于 2012-12-29T22:07:09.403 回答