SORU
16 Mart 2012, Cuma


Bir Rails uygulamasında kullanılmayan kodu bul

Kod nasıl ve çalıştırmak değil ne bulabilirimüretim?

Bu uygulama iyi bir test ama test bir sürü test varkullanılmamışkod. Onlar testleri... yeniden Düzenle ve bu pisliği temizlemek istiyorum çalışırken kapsama almak bu yüzden, zamanımı boşa tutar. Arka planda bir sürü iş, bu üretim env bana rehberlik etmek istiyorum nedeni budur. Heroku de dinamometre döngüleri herhangi bir performans telafi etmek için hazırlansın ben çalışan profiler etkiler.

İlgili How can I find unused methods in a Ruby app? yararlı değil soru.

Bonus: bir kod satırı çalıştırmak ne kadar hızlı olduğunu göstermek için Ölçümler. Bunu niye istediğimi bilmiyorum, ama ben biliyorum! :)

CEVAP
20 Mart 2012, Salı


Normal koşullar altında bu yaklaşım olacağını kullanmak için test verileri için kod kapsamı, ama dediğin gibi var parça kodu o test ama değil kullanılan üretim uygulaması, bir şeyler yapmalısın biraz farklı.

İlk açıklık için:Otomatik araçlar güvenmiyorum. Hem aktif olarak, hiçbir şey daha fazla test şeyler için sonuçlar.

İle reddi arkamızda, benim önerim kullandığınız bir kod kapsama aracı (rcov simplecov Ruby 1.9) üretim uygulama ve ölçü kodu yolları vardır aslında kullanılan kullanıcılarınız. Bu araçlar ilk olarak test kapsama ölçüm için tasarlanmış olsa da, aynı zamanda üretim korunmak için kullanabilirsiniz

Test sırasında zaman çerçevesi alakalı tüm kod yolları ziyaret varsayımı altında, geri kalanını kaldırabilirsiniz. Ne yazık ki, bu varsayım muhtemelen tam olarak tutamaz. Hala parçaları çıkarırken uygulaması ve iç işleyişini bilginizi uygulamak zorunda kalacak. Bu genellikle doğrudan değil koşmak gibi bildirimsel parçaları (model başvuruları gibi) kaldırılıyor ama sadece sistemin diğer parçaları yapılandırmak için kullanıldığında daha da önemlidir.

Yukarıdaki ile birlikte olabilecek başka bir yaklaşım ve kapatabilirsiniz bu ayırt edici özellikler içine uygulamayı yeniden deneyin. Eğer kimse şikayet etmezse ve kontrol kullanılmamış olduğundan şüphelenilen özellikleri devre :)

Ve son bir not olarak: tam bir analiz yapmak için sihirli bir araç bulamazsın. Hiçbir aracı kod belirli bir parçası gerçek kullanıcılar tarafından kullanılan olup olmadığını biliyor çünkü. Araçlar yapabileceği tek şey (daha fazla veya daha az) grafikler statik erişilebilirlik, eğer kod bir şekilde belli bir noktaya denir inan oluşturun. Bir dinamik dil gibi Ruby bile bu oldukça zor elde etmek olarak statik analiz vermez çok fikir karşısında meta-programlama veya dinamik çağıran var yoğun olarak kullanılan bir raylar bağlam. Bu yüzden bazı araçlar aslında kod çalıştırmak veya test kapsamı dışında fikir almak için deneyin. Ama kesinlikle büyü diye bir şey yok.

Yani raylar bir uygulama (genellikle gizli) yüksek iç karmaşıklığı göz önüne alındığında, elle analizi çoğu vakit. En iyi tavsiye muhtemelen app modularize ve bazı modülleri kapatmak için f kullanılmadığı test etmek olacak. Bu doğru entegrasyon testleri ile desteklenebilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DragsterMC Gaming

    DragsterMC G

    30 HAZİRAN 2013
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012
  • MVLV28

    MVLV28

    17 Mart 2008