【发布时间】:2012-01-15 01:20:45
【问题描述】:
是否可以使用 Checkstyle 来禁止使用某些使用系统相关默认值(语言环境、字符集等)的构造函数或方法。我更喜欢执行一个程序员应该明确系统相关值的策略。所以我认为以下物品是危险的:
-
java.io.FielWriter的所有构造函数- 使用系统相关编码
-
java.io.OutputStreamWriter的OutputStreamWriter(OutputStream os)构造函数- 使用系统相关编码
-
java.lang.String.toLowerCase()方法- 使用系统默认语言环境
-
java.util.Calendar.getInstance()方法- 使用系统默认语言环境和默认时区
(不胜枚举,看图)。
是否可以使用 Checkstyle 5.5 强制执行此操作?
【问题讨论】:
-
好问题。就我个人而言,我认为这是编译器本身默认情况下应该警告的事情 - 这么多可能的错误 - 使用这些方法几乎不是正确的做法..
-
Oracle 应该为这些方法添加一个@SystemDependant 注释。
-
我已经写了一个自定义检查来避免 new Date(),如果你有兴趣可以看看这个:beansgocrazy.blogspot.com.au/2012/04/when-dates-go-wild.html
标签: java coding-style checkstyle