Xcode umożliwia (nie) sprawdzanie ustawień określonych ostrzeżeń kompilatora, które mogą ostrzegać o niektórych rodzajach nieużywanego kodu. (Zaznacz projekt na liście źródeł i Plik> Informacje, a następnie wybierz kartę budować.) Oto kilka z nich (który pojawi się na Clang i GCC 4.2 dla mnie), które mogą stanowić przedmiot zainteresowania:
- Nieużywane funkcje
- Niewykorzystane Parametry
- nieużywane wartości
nie widzę żadnych możliwości wykrywania nieużywane importu, ale to nieco prostsze - podejście low-tech jest po prostu skomentuj instrukcje importu aż do ciebie uzyskać błąd kompilacji/ostrzeżenie.
Niewykorzystane metody Objective-C są dużo trudniejsze do wykrycia niż nieużywane funkcje C, ponieważ komunikaty są wysyłane dynamicznie. Ostrzeżenie lub błąd może informować o potencjalnym problemie, ale jego brak nie gwarantuje, że nie wystąpią błędy środowiska wykonawczego.
Edit: Innym dobrym sposobem na wykrycie (potencjalnie) niewykorzystane metody jest analiza pokrycia kodu od rzeczywistych egzekucji. Zwykle odbywa się to w parze z automatycznymi testami jednostkowymi, ale nie musi tak być.
This blog post to przyzwoite wprowadzenie do testów jednostkowych i pokrycia kodu za pomocą Xcode. Sekcja o gcov
(która nawiasem przypomina kod wygenerowany przez GCC, nawiasem mówiąc) wyjaśnia, jak zmusić Xcode do zbudowania oprzyrządowanego kodu, który może rejestrować, jak często został wykonany. Jeśli weźmiesz symulację na oprzyrządowaną kompilację swojej aplikacji, a następnie uruchom gcov, zobaczysz, jaki kod został wykonany za pomocą narzędzia takiego jak CoverStory (dość uproszczony GUI) lub lcov
(skrypty Perla do tworzenia raportów HTML).
Używam gcov
i lcov
dla CHDataStructures.framework i automatycznie generuję coverage reports po każdym zatwierdzeniu SVN. Ponownie, pamiętaj, że nierozsądne jest traktowanie wykonanego zasięgu jako definitywnej miary tego, co kod jest "martwy", ale z pewnością pomoże to w zidentyfikowaniu metod, które możesz dalej zbadać.
Wreszcie, ponieważ starasz się usunąć martwy kod, myślę, że znajdziesz to tak interesujące, jak również pytanie:
http://clang-analyzer.llvm.org/ – slf
Nie jestem pewien, co jest punkt ...Analizator statyczny może znaleźć wiele problemów, ale jeśli wyślesz wiadomość do zmiennej wpisanej jako ** id "** lub utworzysz selektor do wywoływania w czasie wykonywania, analizator statyczny nie może zagwarantować, że kod jest naprawdę nie używany. Jeśli kod, który jest nadal potrzebny, zostanie usunięty, w tym miejscu pojawią się błędy środowiska wykonawczego. Czy czegoś brakuje? –
Co więcej, selektory tworzone na podstawie ciągów w czasie wykonywania są dość powszechne. – dreamlax