Xcode permette di (dis) impostazioni di controllo per specifici avvisi del compilatore in grado di avvertire di alcuni tipi di codice non utilizzato. (Selezionare il progetto nell'elenco sorgente e File> Informazioni, quindi selezionare la scheda Genera.) Ecco alcuni (che mostrano per Clang e GCC 4.2 per me) che ti potrebbero interessare:
- inutilizzato Funzioni
- parametri non utilizzati
- valori inutilizzati
non vedo alcuna opzione per il rilevamento di importazioni non utilizzati, ma che è un po 'più semplice - l'approccio low-tech è solo quella di commentare le dichiarazioni di importazione fino a ottenere un errore/avviso di compilazione.
non utilizzati metodi Objective-C sono molto più difficili da rilevare che le funzioni C inutilizzati perché i messaggi vengono inviati in modo dinamico. Un avvertimento o un errore può dirti che hai un potenziale problema, ma la mancanza di uno non garantisce che non si verifichino errori di runtime.
Edit: Un altro buon modo per rilevare (potenzialmente) metodi non utilizzati è quello di esaminare la copertura di codice da esecuzioni effettive. Questo di solito viene fatto in tandem con i test automatici delle unità, ma non deve esserlo.
This blog post è un'introduzione decente per test di unità e di copertura di 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 un codice strumentato in grado di registrare la frequenza con cui è stato eseguito. Se si prende una build strumentata della vostra applicazione per un giro nel simulatore, quindi eseguire gcov su di esso, è possibile vedere ciò che il codice è stato eseguito utilizzando uno strumento come CoverStory (una GUI piuttosto semplicistica) o lcov
(script in Perl per creare report HTML).
Io uso gcov
e lcov
per CHDataStructures.framework e generare automaticamente coverage reports dopo ogni commit SVN. Ancora una volta, ricorda che non è saggio trattare la copertura eseguita come misura definitiva di quale codice è "morto", ma può certamente aiutare a identificare i metodi che è possibile approfondire.
Infine, dal momento che si sta cercando di rimuovere il codice morto, penso che troverete questa domanda SO interessante così:
fonte
2009-09-21 21:41:30
http://clang-analyzer.llvm.org/ – slf
Non sono sicuro di che cosa il vostro punto è ...L'analizzatore statico può trovare molti problemi, ma se si invia un messaggio a una variabile digitata come ** 'id' ** o si crea un selettore da chiamare in fase di runtime, l'analizzatore statico non può garantire che il codice sia veramente inutilizzato. Se il codice che è ancora necessario viene rimosso, è lì che si verificano errori di runtime. Mi sto perdendo qualcosa? –
Inoltre, i selettori creati in base alle stringhe in fase di esecuzione sono abbastanza comuni. – dreamlax