Kullanılmayan yöntemleri tespit etmek için nasıl ve #Objective-C alma
Bir iPhone uygulaması üzerinde uzun bir süre çalıştıktan sonra, benim kod oldukça kirli, çeşitli içeren olduğunu fark ettim alma ve ya hiç denilen yararlı olmayan yöntemler.
Eğer ya da kod o işe yaramaz hatları tespit etmek için herhangi bir derleyici Direktifi yolu varsa bilmek isterim. Böyle büyük mükafat bu tespit için herhangi bir araç var mı?
CEVAP
Böyle büyük mükafat (BM)kullanılmayan kod bazı türleri sizi uyarmak belirli bir derleyici uyarı ayarlarını kontrol etmenizi sağlar. (Kaynak listesinde projeyi seçin ve ^ Dosya . Bilgi almak, Yapı sekmesini seçin.) İşte ilginizi çekebilecek birkaç benim için Çınlama ve GCC 4.2 için):
- Kullanılmayan Fonksiyonlar
- Kullanılmayan Parametreler
- Kullanılmayan Değerler
Kullanılmayan ithalat tespiti için herhangi bir seçenek göremiyorum, ama derleme hatası/uyarısı verene kadar biraz daha basit — düşük teknoloji yaklaşımı sadece import deyimleri kapatmaktır.
Kullanılmayan Nesnel-C yöntemleri mesajları dinamik olarak gönderilir çünkü kullanılmayan C fonksiyonları çok daha tespit etmek zordur. Uyarı veya bir hata potansiyel bir sorun olduğunu söyleyebilirim, ama bir eksikliği çalışma zamanı hataları olmayacak garantisi yok.
< / ^ hr .
Düzenleme:(Potansiyel olarak) kullanılmayan yöntemleri tespit etmek için bir başka iyi yolu gerçek infaz kod kapsamını incelemektir. Bu genellikle otomatik birim testi ile birlikte yapılır, ama olmak zorunda değildir.
This blog post birim test ve kod kapsamı Güncellemelerinden kullanarak için iyi bir tanıtım. Bölümügcov
sadece arada kodu GCC ile oluşturulan, hangi ile çalışır () araçlı kodu oluşturmak için böyle büyük mükafat almak açıklar idam edilmiştir. nasıl kaydedebilir Eğer bir araçlı inşa uygulamanız için bir spin simülatörü çalıştırın gcov üzerinde görebilirsiniz ne kodu olduğunu idam kullanarak bir araç gibi CoverStory (oldukça basit bir GUI) veya lcov
(Perl komut dosyaları oluşturmak için HTML raporları).
Her SVN commit sonra gcov
CHDataStructures.framework lcov
ve otomatik oluşturmak coverage reports kullanıyorum. Yine akılsızca kodu nedir, kesin bir ölçü olarak yürütülen kapsama tedavi olduğunu unutmayın, "ölü", ama kesinlikle daha fazla araştırma yöntemleri tanımlamak.
Ölü kod kaldırmak için çalışıyoruz beri son olarak, bu ÇOK ilginç bir soru da bulabilirsiniz sanırım
Nasıl özel yöntemleri, alanları veya i...
Nasıl JavaScript devre dışı olup olmad...
Nasıl C/C tamsayı taşması tespit etmek...
Nasıl iPhone 5 (geniş ekran cihazlar) ...
nasıl bir python değişken bir fonksiyo...