Xcode ti consente di (des) controllare le impostazioni per avvisi specifici del compilatore che possono avvisarti di alcuni tipi di codice inutilizzato. (Seleziona il progetto nell'elenco sorgente e File> Ottieni informazioni, quindi seleziona la scheda Crea.) Eccone alcuni (che per me vengono visualizzati per Clang e GCC 4.2) che potrebbero interessarti:
- Funzioni inutilizzate
- Parametri inutilizzati
- Valori inutilizzati
Non vedo alcuna opzione per rilevare le importazioni inutilizzate, ma è un po 'più semplice: l'approccio a bassa tecnologia consiste semplicemente nel commentare le istruzioni di importazione fino a quando non si ottiene un errore / avviso di compilazione.
I metodi Objective-C inutilizzati sono molto più difficili da rilevare rispetto alle funzioni C inutilizzate perché i messaggi vengono inviati dinamicamente. Un avviso o un errore può dirti che hai un potenziale problema, ma la mancanza di uno non garantisce che non avrai errori di runtime.
Modifica: un altro buon modo per rilevare metodi (potenzialmente) inutilizzati è esaminare la copertura del codice dalle esecuzioni effettive. Questo di solito viene fatto in tandem con i test automatici delle unità, ma non è necessario.
Questo post del blog è un'introduzione decente al test di unità e alla copertura del codice utilizzando Xcode. La sezione su gcov
(che funziona solo con il codice generato da GCC, tra l'altro) spiega come ottenere Xcode per creare codice strumentato in grado di registrare la frequenza con cui è stato eseguito. Se prendi una build strumentata della tua app per un giro nel simulatore, quindi esegui gcov su di essa, puoi vedere quale codice è stato eseguito utilizzando uno strumento come CoverStory (una GUI abbastanza semplicistica) o lcov
(script Perl per creare report HTML) .
Uso gcov
e lcov
per CHDataStructures.framework e genera automaticamente rapporti di copertura dopo ogni commit SVN. Ancora una volta, ricorda che non è saggio trattare la copertura eseguita come una misura definitiva di ciò che il codice è "morto", ma può certamente aiutare a identificare i metodi che puoi investigare ulteriormente.
Infine, dal momento che stai cercando di rimuovere il codice morto, penso che troverai interessante anche questa domanda SO:
id
, o crei un selettore da chiamare in fase di esecuzione, l'analizzatore statico non può garantire che il codice è veramente inutilizzato. Se il codice ancora necessario viene rimosso, è lì che si ottengono errori di runtime. Mi sto perdendo qualcosa?