Xcode, sizi bazı kullanılmayan kod türleri konusunda uyarabilecek belirli derleyici uyarıları için ayarları kontrol etmenizi (kaldırmanızı) sağlar. (Kaynak listesinden projeyi seçin ve Dosya> Bilgi Al, ardından Oluştur sekmesini seçin.) İşte ilginizi çekebilecek birkaç (Clang ve GCC 4.2 için gösterilenler):
- Kullanılmayan İşlevler
- Kullanılmayan Parametreler
- Kullanılmayan Değerler
Kullanılmayan içe aktarmaları tespit etmek için herhangi bir seçenek görmüyorum, ancak bu biraz daha basit - düşük teknoloji yaklaşımı, bir derleme hatası / uyarısı alana kadar içe aktarma ifadelerini yorumlamaktır.
Kullanılmayan Objective-C yöntemlerini tespit etmek, kullanılmayan C işlevlerine göre çok daha zordur çünkü mesajlar dinamik olarak gönderilir. Bir uyarı veya hata, olası bir sorununuz olduğunu size söyleyebilir, ancak sorunun olmaması, çalışma zamanı hatalarınızın olmayacağını garanti etmez.
Düzenleme: Kullanılmayan yöntemleri (potansiyel olarak) tespit etmenin bir başka iyi yolu da gerçek yürütmelerden gelen kod kapsamını incelemektir. Bu genellikle otomatik birim testiyle birlikte yapılır, ancak böyle olması gerekmez.
Bu blog yazısı , Xcode kullanarak birim testi ve kod kapsamına iyi bir giriş niteliğindedir. gcov
(Bu arada yalnızca GCC tarafından oluşturulan kodla çalışan) ile ilgili bölüm, Xcode'un ne sıklıkta yürütüldüğünü kaydedebilen enstrümantasyonlu kod oluşturmak için nasıl elde edileceğini açıklar. Simülatörde bir dönüş için uygulamanızın araçlı bir yapısını alırsanız , ardından gcov'u çalıştırın, CoverStory (oldukça basit bir GUI) veya lcov
(HTML raporları oluşturmak için Perl komut dosyaları ) gibi bir araç kullanarak hangi kodun çalıştırıldığını görebilirsiniz. .
Kullandığım gcov
ve lcov
için CHDataStructures.framework ve otomatik olarak oluşturun kapsama raporları her SVN sonra işlemek. Yine, yürütülen kapsamı hangi kodun "ölü" olduğunun kesin bir ölçüsü olarak ele almanın akıllıca olmadığını, ancak daha fazla araştırabileceğiniz yöntemleri belirlemenize kesinlikle yardımcı olabileceğini unutmayın.
Son olarak, ölü kodu kaldırmaya çalıştığınız için, bu SO sorusunu da ilginç bulacağınızı düşünüyorum:
id
veya çalışma zamanında çağırmak için bir seçici oluşturursanız, statik analizör garanti edemez kodun gerçekten kullanılmamış olduğunu. Hala ihtiyaç duyulan kod kaldırılırsa, çalışma zamanı hataları alacağınız yer burasıdır. Bir şey mi kaçırıyorum?