Whitespace与GenericWhitespace冲突后

时间:2013-05-15 05:04:55

标签: java checkstyle

我正在使用上述两项检查。有没有办法让它变成空白后用逗号强制空间,除非是在泛型中?即我希望这是有效的。

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

即函数声明中逗号之后的空格是明智的,但将其置于泛型内部似乎很奇怪。特别是在这个例子的情况下,添加空格似乎使这更难阅读:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用Checkstyle开箱即可轻松完成,所以让我建议一个替代方案(实际上我在商业项目中做的事情):

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

这种方法增加了好处:

  • 开发人员不再需要处理有关代码格式化的烦人的Checkstyle消息。
  • 无法再进行错误的代码格式化。
  • 您可以在所有开发人员之间获得一致的格式,这样可以更轻松地计算差异等。

我知道这种方法在您的情况下可能无法实现,但我知道这种方法非常有效,并且它确实解决了您的问题,而无需编写自定义检查。