处理一个项目,其中所有++
和--
操作都需要左侧和右侧的空白填充。我试图让检查方式检测到这一点,但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
答案 0 :(得分:1)
根据Checkstyle 5.7文档,WhitespaceAround无法配置为检查POST_INC
或POST_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风格,所以改变它可能会使你的代码变得不那么容易了解他人。 )