PHP ölü kod tespiti [kapalı]

6 Cevap php

Ben çok dağınık kod ile bir proje var - burada ve orada çoğaltma ve ölü kod sürü.

Bir süre önce birim testleri ile sıfır kod kapsama vardı ama şimdi biz TDD tüm yeni kod yazmaya çalışıyoruz şekilde ve de (test-son tekniği) birim testleri ile "eski" kod kapsayan teknik borcunu düşürücü.

Business logic's complexity is quite high ve bazen kimsenin bazı yöntemler kullanılmaktadır olsun veya olmasın cevap verebilir.

Bu ölü kod yöntemleri nasıl bulunabilir? Kapsamlı günlüğü? Yükseköğretim test kapsamı? (Müşteriler yeni özellikler çıkmak istiyorum çünkü çok kolay değil)

6 Cevap

xdebug 'ın kod kapsama araçları işlevleri / yöntemleri tüm izleme ifadelerini koymak gerek kalmadan, kod satırları aslında idam edildiği test etmek için izin.

Şimdi biraz geç, ama PHPDCD Sana xprof / xdebug ile gerçek kod yürütülmesine profile sahip çok daha bilgilendirici bir sonuç vermelidir ki, statik bunu iddia ediyor.

Ben orada bütün araçların yeteneklerinin ötesinde olabilir, tamamen kullanılmayan bir kod tespit etmek için bir yol bilmiyorum. Ama orada araçlar açısından, onlara iyi bir özet için http://phpqatools.org/ çarptı.

  • Şimdiye kadar, nesne yönelimli bir bakış açısıyla kodunuzu üzüyor ve vs size kaç sınıfları ayrıntıları verir phploc benim favorilerimden biri kaç fonksiyonları vs kaç testleri Cyclomatic Karmaşıklık vs işlev başına ortalama loc vs.

  • Benim sonraki favori "PHP Kopyala-Yapıştır Dedektörü" olduğunu phpcpd olduğunu. Bu, tüm kod temeli tokenizes ortak imzalar arar ve size satır numaraları ile dosyaların bir listesini verir.

  • Sizin için yararlı olanları seçin, lots o sayfadaki diğer araçlar vardır.

Biz aktif web2project ve biz dotProject çatallanmasının yana iki yıl içinde bu araçları kullanırken, biz (aslında% 12, şimdi yaklaşık% 2.5 tekrarını ortadan üstlenmeden gelen kod temeli yaklaşık% 35 düştü ettik ), ve genellikle daha iyi şeyler yapılandırılması. Ve bu counting bizim 15k + Birim Testlerinin hatları bulunuyor. :)

Ben xdebug profiler ile sistemi aracılığıyla çalışan öneriyoruz (http://xdebug.org/docs/profiler).

Görünüm sistemi ile http://code.google.com/p/webgrind/ ve fiziksel çağrıldığını ne görmek ile günlükleri çalıştırın.

SD PHP Test Coverage Tool bakın. Siz de dahil olmak üzere (veya değil) test suit istediğiniz şekilde çalışan, kod istediğiniz şekilde egzersiz. Yürütme sonunda, (web sitesinde ekran var) kodu idam edildi ne bir ekran görebilirsiniz. Idam değil, kod ölü, ve sizin açınızdan biraz daha analiz gerektirir, ancak iyi sistemi egzersiz ise, uygulanmayan yargı kod hata işleyicileri veya gerçekten ölü şeyler ya da olduğu olabilir. PHP Test Kapsamı aracı PHP sunucusuna any değişiklik gerektirmez.

SD CloneDR aracı çok büyük bir kaynak kodu üsleri yinelenen kodu bulur. Bu dil duyarlı (kapsayan C, C + +, Java, C #, Ada, Fortran gibi PHP4 ve PHP5) bu yüzden biçimlendirme, boşluklarla veya yorumların varlığında veya yokluğunda değişikliklerden aldatmasın değildir. Bu tam bir kopyası klonlar algılamak ve bayan klonlarının yakın olacaktır. Web sitesi birçok dilde örneğin klon raporlar göstermektedir.

Birisi xdebug verileri kullanır Structure101g bir lezzet hayata inanmak - S101 sonra herhangi bir kullanılmayan kümeleri, birbirlerine kullanın ama ana kod temeli kesilir yani dosyaları tespit edecektir.