如何使用CheckStyle实现制表符缩进要求?

18

在 CheckStyle 中有一个模块 (文件制表符),用于检查源代码中是否存在制表符。他们的理由是:

  • 开发人员不应该需要配置其文本编辑器的制表符宽度才能阅读源代码。
  • 来自 Apache jakarta 编码标准: 在分布式开发环境中,当提交消息发送到邮件列表时,如果使用制表符,它们几乎无法阅读。

为了确保正确的空格数量,还有一个额外的模块 (缩进)。

我更喜欢使用制表符进行缩进,并希望将此要求添加到我的 CheckStyle 文件中。我的理由:

  • 开发人员应该有机会配置用于缩进的空格数。
  • 制表符是一个逻辑和可配置的缩进单位,“n个空格”只是任意的空格数量。

不幸的是,我没有找到一种方法来在 CheckStyle 中实现这一点。

2个回答

19

没有现成的检查程序可以做到这一点,但是您可以相应地配置RegexpSinglelineJava检查。以下配置将放入您的checkstyle.xml中的TreeWalker中:

<module name="RegexpSinglelineJava">
    <property name="format" value="^\t* "/>
    <property name="message" value="Indent must use tab characters"/>
    <property name="ignoreComments" value="true"/>
</module>

它检查缩进中是否有空格。设置ignoreComments可以消除Javadoc注释通常在星号前至少有一个空格的问题。


6
顺便提一下,如果您想检查Javadoc缩进,可以使用 ^\t*(?! \*) (注意末尾的空格!)作为“format”正则表达式,并移除ignoreComments属性。这是个人口味问题。 - barfuin

0

我们还可以通过以下正则表达式在格式字段中配置RegexpSinglelineJava检查-

<property name="format" value="^[\t]*[" "]+([\t]*|[" "]+)[a-zA-Z0-9]"/>

这将检查第一个单词之前的所有空格


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接