Il compilatore ha accesso alla stringa di formato E ai tipi e ai parametri richiesti. Quindi presumo che ci sarebbe un modo per indicare i parametri mancanti per i varargs ... anche se solo per un sottoinsieme di casi. C'è qualche modo per eclipse o un altro ide per indicare che i vararg passati potrebbero causare un problema in fase di runtime?Come ottenere string.format per protestare in fase di compilazione
risposta
Sembra che FindBugs possa risolvere il tuo problema. Esistono alcune categorie di avvertenze relative alle stringhe di formattazione.
Il compilatore Java non ha alcuna conoscenza semantica integrata dei parametri StringFormat, quindi non può controllarli al momento della compilazione. Per quello che ne sa, StringFormat è solo un'altra classe e String.format è solo un altro metodo, e la stringa di formato data è solo un'altra stringa come qualsiasi altra.
Ma sì, sento il tuo dolore, avendo incontrato questi stessi problemi negli ultimi due giorni. Quello che avrebbero dovuto fare è renderlo 'meno attento' al numero di parametri, e lasciare solo i marcatori% s non rimossi.
forse il compilatore non posso dire ... vero, ma forse ci sono alcuni strumenti di analisi statica là fuori che lo fanno? – mafalda
- 1. offsetof in fase di compilazione
- 2. Come compilare NSArray in fase di compilazione?
- 3. Valori interi in fase di compilazione
- 4. Compilazione sass/scss di ASP.NET in fase di esecuzione e in fase di compilazione?
- 5. Terminologia Java: perché l'errore in fase di compilazione e non l'eccezione in fase di compilazione?
- 6. Asserzioni in fase di compilazione in C++?
- 7. Qt - Errore 2 in fase di compilazione
- 8. C++ hexfloat parsing in fase di compilazione
- 9. Running PublicResXFileCodeGenerator in fase di compilazione
- 10. È valido "strlen()" in fase di compilazione?
- 11. Clojure costanti in fase di compilazione
- 12. Enforza annotazioni java in fase di compilazione
- 13. Mappa due tipi in fase di compilazione
- 14. Imporre fase di compilazione constexpr
- 15. Polimorfismo in fase di compilazione per i membri dei dati
- 16. Rilevamento costante in fase di compilazione C++
- 17. if/else in fase di compilazione?
- 18. C# Concatenazione in fase di compilazione per costanti stringa
- 19. Costanti degli array in fase di compilazione
- 20. Come rendere GCC valutare le funzioni in fase di compilazione?
- 21. Come affermare qualcosa in fase di compilazione in Java?
- 22. #error in Swift (come contrassegnare l'errore in fase di compilazione)
- 23. Come ottenere avvisi o errori in fase di compilazione in stile printf
- 24. fase di compilazione limiti di matrice
- 25. Come verificare il tipo in fase di compilazione
- 26. Come salvare il puntatore nel membro in fase di compilazione?
- 27. Come verificare in fase di compilazione che un'espressione è illegale?
- 28. std :: equivalente cout in fase di compilazione o static_assert stringificazione di valori costanti in fase di compilazione in C++ 11
- 29. Come iniettare codice C# in fase di compilazione?
- 30. Angularjs: Come passare la funzione in fase di compilazione
bella idea per un miglioramento eclisse, btw. Potrebbe controllare almeno per le stringhe di formato statico e varargs di dimensioni fisse. –
Controlla la mia risposta qui - http://stackoverflow.com/questions/24769455/java-string-format-compile-time-error-checking-and-safer-alternative - è ancora un leggero work in progress –