1

I am using both of the above checks. Is there a way to make it so WhitespaceAfter forces space after commas, EXCEPT when it is in generics? ie I want this to be valid.

public void function(String a, String b) {
    Map<String,String> data = Hashtable<String,String>();
    // etc...
}

ie space after comma in functions declaration is sensible, but putting it inside the generics seems strange. Especially in the case of this example, adding the space seems to make this harder to read:

public void fn(Connection c, Map<String,Object>>items) {
}
4

2 回答 2

1

不幸的是,checkstyle 似乎无法实现您的目标。WhitespaceAfterrule 没有任何选项可以在类型参数中排除逗号。也许您可以通过扩展或重写规则来编写自己的WhitespaceAfter规则,参考http://checkstyle.sourceforge.net/writingchecks.html

于 2013-05-15T05:58:52.440 回答
0

使用开箱即用的 Checkstyle 不容易做到这一点,所以让我提出一个替代方案(这实际上是我在商业项目中所做的):

禁用所有与代码格式化相关的 Checkstyle 规则,并改用 IDE 的自动代码格式化程序。每当您保存编辑器内容时,许多 IDE(例如 Eclipse)都可以格式化您的代码。
然后您可以配置自动格式化程序来处理您的情况。我刚刚检查了 Eclipse Juno 代码格式化选项;它可以做你想做的事——在泛型声明中的逗号后没有空格,但在其他任何地方的逗号后都有空格。

这种方法有额外的好处:

  • 开发人员不必再处理有关代码格式的恼人 Checkstyle 消息。
  • 不再可能出现错误的代码格式。
  • 您可以在所有开发人员中获得一致的格式,这使得差异等的计算更加容易。

我知道这种方法在您的情况下可能是不可能的,但我知道这是一种效果很好的方法,它确实可以解决您的问题,而无需编写自定义检查。

于 2013-05-15T20:13:58.000 回答