El compilador tiene acceso a la cadena de formato Y a los tipos y parámetros necesarios. Así que supongo que habría alguna forma de indicar parámetros faltantes para las variables ... incluso si solo fuera por un subconjunto de casos. ¿Hay alguna forma de eclipse u otra ide que indique que los varargs pasados podrían causar un problema en el tiempo de ejecución?Cómo obtener string.format para quejarse en tiempo de compilación
Respuesta
Parece que FindBugs puede resolver su problema. Hay algunas categorías de advertencia relacionadas con las cadenas de formato.
El compilador de Java no tiene ningún conocimiento semántico incorporado de los parámetros de StringFormat, por lo que no puede verificarlos en tiempo de compilación. Por lo que sabe, StringFormat es simplemente otra clase y String.format es solo otro método, y la cadena de formato dada es simplemente otra cadena como cualquier otra.
Pero sí, siento tu dolor al haber tenido estos mismos problemas en los últimos días. Lo que deberían haber hecho es "menos cuidadoso" sobre la cantidad de parámetros, y dejar los marcadores% s finales sin reemplazar.
quizás el el compilador no puede decir ... cierto, pero tal vez hay algunas herramientas de análisis estático por ahí que hacen eso? – mafalda
- 1. Obtener tiempo de compilación JAR
- 2. String.Format para obtener "2.4k" de "2400"
- 3. ¿Cómo probar UIViewControllers en tiempo de compilación?
- 4. ¿Cómo usar 'ref' en tiempo de compilación?
- 5. Cómo escapar% en String.Format?
- 6. ¿Cómo llenar NSArray en tiempo de compilación?
- 7. offsetof en tiempo de compilación
- 8. hashing de cadena en tiempo de compilación
- 9. ¿Puede GCC no quejarse de referencias indefinidas?
- 10. Crear plantillas T4 en tiempo de ejecución (tiempo de compilación)?
- 11. Polimorfismo en tiempo de compilación para los miembros de datos
- 12. Terminología Java: ¿Por qué error en tiempo de compilación y no excepción en tiempo de compilación?
- 13. String.format() para formatear el doble en Java
- 14. GCC optimización en tiempo flotante en tiempo de compilación
- 15. Reflejo de tiempo de compilación en C#
- 16. Generar números únicos en tiempo de compilación
- 17. ¿Cómo obtener la clase de un objeto singleton en tiempo de compilación?
- 18. Qt - Error 2 en tiempo de compilación
- 19. cómo obtener la compilación advertencia
- 20. Cómo ajustar Java String.format()?
- 21. Constantes en .NET con String.Format
- 22. Constantes en tiempo de compilación Clojure
- 23. Tiempo de compilación de perfiles
- 24. Tipo de especialización en tiempo de compilación
- 25. use CMake para obtener la revisión de svn de compilación
- 26. operador sizeof en tiempo de compilación o tiempo de ejecución
- 27. Constantes de matriz en tiempo de compilación
- 28. dos tipos en tiempo de compilación
- 29. ¿Cómo afirmar algo en tiempo de compilación en Java?
- 30. ¿Recursión en tiempo de compilación Scala?
Idea agradable para una mejora eclipse, por cierto. Podría verificar, al menos, cadenas de formato estáticas y varargs de tamaño fijo. –
Echa un vistazo a mi respuesta aquí - http://stackoverflow.com/questions/24769455/java-string-format-compile-time-error-checking-and-safer-alternative - todavía es un ligero trabajo en progreso –