¿Es posible utilizar Checkstyle para prohibir el uso de algunos constructores o métodos que usan valores predeterminados dependientes del sistema (configuración regional, juego de caracteres, etc.). Prefiero aplicar una política donde el programador debe ser explícito sobre los valores dependientes del sistema. Por lo que considero los siguientes artículos a ser peligroso:Regla de comprobación para evitar la invocación de algunos métodos y constructores
- todos los constructores de
java.io.FielWriter
- utilizando dependiente del sistema de codificación
- la
OutputStreamWriter(OutputStream os)
constructor deljava.io.OutputStreamWriter
- usando dependiente del sistema de codificación
- del
java.lang.String.toLowerCase()
método- usando por defecto del sistema local
- El
java.util.Calendar.getInstance()
método- usando regional predeterminada del sistema y por defecto la zona horaria
(la lista sigue, se obtiene el imagen).
¿Es posible aplicar esto usando Checkstyle 5.5?
Buena pregunta. Personalmente, creo que esto es algo por lo que el compilador debería advertir de manera predeterminada, tantos posibles errores, el uso de estos métodos casi nunca es lo correcto. – Voo
Oracle debería agregar una anotación @SystemDependant a esos métodos. – gawi
He escrito un cheque personalizado para evitar una nueva Fecha(), mira esto si estás interesado: http://beansgocrazy.blogspot.com.au/2012/04/when-dates-go-wild.html – n0rm1e