So che le funzioni possono essere chiamate dinamicamente, ma esiste un modo per determinare staticamente quali funzioni (e metodi degli oggetti ObjC) non vengono chiamate?C'è un modo per determinare le funzioni inutilizzate in Xcode4?
risposta
Non sono sicuro che questa sia una cosa sensata per qualcuno che abbia tentato di creare un tale strumento di analisi statico: sarebbe molto complicato e probabilmente si scoprirà che troverà solo esempi di funzioni che potrebbero essere non essere chiamato - es funzioni che hai creato nelle tue classi e non hai chiamate per loro. Tutte le cose che interagiscono con Cocoa ... beh, il problema è che potrebbero "chiamarsi" in circostanze diverse.
In ogni caso, ciò che dovrebbe essere veramente interessato è la copertura del codice di runtime - in quanto ciò mostrerebbe (con una discreta serie di test) quale codice viene effettivamente utilizzato, che sarebbe un sottoinsieme più piccolo.
objc_cover ti aiuterà a individuare metodi Objective-C potenzialmente inutilizzati.
aggiungi -Wunused-function
al tuo elenco di WARNING_CFLAGS
.
considera anche le funzioni prese dall'indirizzo come riferimento (ideale per l'utilizzo normale). quindi compilare il programma con gcc e clang per una copertura ottimale.
nota che questo flag non copre tutti i casi (ad esempio le funzioni esportate) e si concentra principalmente sulle funzioni che hanno un collegamento interno. diffating utilizzando strip
e nm
può aiutare a isolare i simboli esterni - non conosco un buon strumento per questo processo esatto.
se si desidera individuare metodi objc non utilizzati, è necessario riformulare la domanda.
- 1. Il compilatore Swift ignora le funzioni inutilizzate?
- 2. iPhone: esiste un modo automatico per identificare le risorse inutilizzate?
- 3. Esiste un modo automatico per trovare viste inutilizzate in MVC?
- 4. Trova le variabili e le funzioni inutilizzate in un progetto MATLAB-Simulink
- 5. Un modo per controllare le funzioni anonime?
- 6. C'è un modo per nominare le funzioni freccia in javascript?
- 7. C'è un modo semplice per scoprire le stringhe inutilizzate nel progetto Android?
- 8. CODE_SIGN_IDENTITY parametro per xcodebuild (Xcode4)
- 9. Le istruzioni sull'utilizzo inutilizzate riducono le prestazioni?
- 10. Rimuovere le risorse inutilizzate utilizzando Android Studio?
- 11. Come rimuovere automaticamente le stringhe gettext inutilizzate?
- 12. Perché Golang consente la compilazione di funzioni inutilizzate?
- 13. Come rimuovere le risorse inutilizzate dalle librerie?
- 14. Esiste un modo per determinare l'ambiguità in una grammatica?
- 15. Le importazioni inutilizzate in Python ostacolano le prestazioni?
- 16. C'è un modo per determinare le terminazioni di linea in un repository git esistente?
- 17. JPA sinistra si uniscono per trovare le voci inutilizzate
- 18. Scrivere un decoratore per le funzioni R
- 19. Un modo rapido per determinare se esiste una PID (Windows)?
- 20. Un modo per determinare se un elemento è stato imballato?
- 21. Un modo per determinare quale oggetto ha chiamato un metodo?
- 22. xcode4 non supporta Perforce?
- 23. C'è un modo per identificare soppressioni di messaggi FxCop inutilizzate o non aggiornate?
- 24. Il modo migliore per chiamare le funzioni Haskell da Java
- 25. C'è un modo per determinare automaticamente le dipendenze quando si imposta un file di controllo dpkg?
- 26. modo corretto per documentare le funzioni argomenti aperti a JSDoc
- 27. "ultimo" operatore per le funzioni?
- 28. Strumento per determinare le licenze per le dipendenze pom.xml
- 29. Rimuovi localizzazioni inutilizzate dall'APK
- 30. Come rilevare proprietà inutilizzate in primavera
concordato. Questo è un problema difficile, soprattutto quando si inizia a introdurre i puntatori di funzione, i callback e il codice condizionale pesante. Sembra il problema dell'arresto. – Luke
@Luke - d'accordo, la domanda è interessante - pensarci mi ha fatto capire quanto sarebbe stato difficile. Con l'uso di selettori e inoltro di messaggi anche. Codice di strumenti per copertura dinamica - non banale, ma molto più facile da vedere come è possibile farlo. – iandotkelly
@iandotkelly: idea interessante, facendolo dinamicamente. piccolo trucco che viene in mente: lancia il tuo codice attraverso un profiler per un po ', estrai tutti i nomi di funzioni e confronta con un database TAGS. Questo dovrebbe darti un'idea, quali funzioni sono chiamate raramente o mai del tutto. Ciò è ovviamente stocastico e non preciso al 100%, ma elimina il controllo di molte funzioni effettivamente chiamate. – Arne