无法使用checkstyle来查找post_inc的空白问题

时间:2014-08-05 18:16:43

标签: checkstyle

处理一个项目,其中所有++--操作都需要左侧和右侧的空白填充。我试图让检查方式检测到这一点,但WhitespaceAround似乎没有检查这一点。

使用checkstyle将i++等代码强制为i ++的最佳方法是什么?

当前代码为https://github.com/dcapwell/tachyon/blob/checkstyle/core/src/main/resources/tachyon_checks.xml

这是我现有的空白支票。

<module name="EmptyForIteratorPad"/>
<module name="GenericWhitespace"/>
<module name="MethodParamPad"/>
<module name="NoWhitespaceAfter">
  <property name="tokens" value="ARRAY_INIT, BNOT, DOT, LNOT, TYPECAST" />
</module>
<module name="NoWhitespaceBefore">
  <property name="tokens" value="SEMI, DOT" />
</module>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter">
  <property name="tokens" value="COMMA, SEMI, TYPECAST, PLUS, PLUS_ASSIGN, POST_DEC, POST_INC, DEC, INC, UNARY_MINUS, UNARY_PLUS" />
</module>
<module name="WhitespaceAround">
  <property name="tokens" value="INC, POST_INC, DEC, POST_DEC" />
</module>
<m

1 个答案:

答案 0 :(得分:1)

根据Checkstyle 5.7文档,WhitespaceAround无法配置为检查POST_INCPOST_DEC令牌。 WhitespaceAfter也是如此。有一个NoWhitespaceBefore规则可以与您想要的相反。

您至少可以配置 NoWhitespaceBefore 来停止标记您的额外空格,就像您已经做过的那样。

由于没有专门的检查可以满足您的需求,您可能需要配置Regexp支票作为最后的手段:

<module name="Regexp">
    <property name="format" value="\w(?:\+\+|--)\W"/>
    <property name="message"
        value="Increment/Decrement operator must be preceded by space."/>
    <property name="illegalPattern" value="true"/>
    <property name="ignoreComments" value="true"/>
</module>

如果i++之间有换行符,这甚至会忽略评论和工作。

(我通常会建议不要使用这种规则。自从时间开始以来,在增加后或减少后的运算符之前没有空格就是Java风格,所以改变它可能会使你的代码变得不那么容易了解他人。 )