2011-04-13 21 views
15

Clojure kodu için yazılım ölçümlerini toplamak üzere statik bir analizör yazmayı düşünüyoruz. Tabii ki, dosya sayısı, fonksiyonlar, fonksiyon başına parametreler gibi bariz şeyleri ele alacaktır. Clojure koduna özgü herhangi bir metrik var mı diye merak ediyorum. Herhangi bir fikir?Clojure programları için özel yazılım ölçütleri

Ortalama olarak

cevap

13

- Ben yazılım ölçütleri şüpheli bir fikir olduğunu düşünüyorum - onlar genellikle gerçekten önemli soru dikkatini dağıtmak "Biz müşteriye teslim edilir ne kadar değer ??".

Ben bazı bağlamlarda gerekli bir kötülük olabilir tanımak ve zaman zaman kod tabanı hakkında bazı ihtiyaç duyacağı bilgiler size verebilir, Having.

Burada Clojure'a özgü bir kaç tane var. üst düzey tanımlamaktadır

  • sayısı (belki de toplam sembolüne bir oran olarak ifade sayısı?)
  • Java bağlama: (., yeni SinifAdi, .someMethod vs.), Java birlikte çalışma ile ilişkili sembollerin% - ideal Java birlikte çalışmasından sorumlu belirli modüllerle sınırlı olan bağlantıyı sürdürün, yani birlikte çalışmayı yöneten kütüphaneler dışında her yerde% düşük olmalıdır. fonksiyon defns ait
  • Ortalama maksimum yuvalama seviyesi (I 5ish iyi tahmin 10+ kötü ??)
  • Makro yoğunluğu: Docstringler ile fonksiyonların
  • % sembollerin
  • % makro genişleme gerektiren formlarının veya% türüyle tanımlanmış fonksiyon parametreleri anonim fonksiyonların
  • Ortalama boyutu (bunlar muhtemelen küçük olmalı!) kullanılan clojure.core içinde fonksiyonların
  • % ipuçları
  • (kod "kelime aralığında" ve sofistike bir fikir verir)
  • (Teşekkür ederiz s nickik!) yaratılan ref tiplerinin sayısı (dinamik vars, atom, ref ve agent) - eğer değişken durumunuzu dikkatli bir şekilde kontrol etmek istiyorsanız önemlidir!

Not; Eğer bu işe yararsanız, farklı açık kaynak clojure projelerinin bazılarındaki sonuçlardaki değişimi görmek gerçekten ilginç olurdu!

+0

Metrik metrik duyarlılığı anlıyorum. Bence metrikler problemli bölgelere zum yapmak için sadece faydalıdır. Güzel cevap btw. –

+0

Kontig referans türleri gerçekten gelişecektir. Ref/atom/ajan ve dinamik vars sayımı (1.3'de). – nickik

+0

@nickik - tamamen katılıyorum ref türleri çok önemlidir. Yine de statik bir analizörde kullandığınız metriği anlamaya ne kadar zor? Öngördüğüm sorun, bu genellikle dinamik olarak tahsis edilir, bu yüzden sadece ref/atom/agent sembollerini saymak için kesinlikle gerekli değildir ..... yine de – mikera