Kod metriklerini hesaplayın [kapalı]


87

Projeniz için kod ölçümlerini (örneğin kod satırı sayısı, döngüsel karmaşıklık, birleştirme, uyum) hesaplayacak ve zamanla eğilimleri gösteren bir grafik oluşturacak herhangi bir araç var mı?


1
Dile bağlı olarak, hangi dili kullanıyorsunuz?
Valentin Rocher

Yanıtlar:


67

En son projemde SourceMonitor kullandım . Kod ölçümleri analizi için güzel ve ücretsiz bir araçtır.
SourceMonitor resmi sitesinden bir alıntı:

  • Metrikleri kaynak dosyalar üzerinden hızlı, tek geçişte toplar.
  • C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) veya HTML ile yazılmış kaynak kod için ölçümleri ölçer.
  • C ++, C, C #, VB.NET, Java ve Delphi için yöntem ve işlev düzeyi ölçümlerini içerir.
  • Yazılım geliştirme projeleri sırasında karşılaştırma yapmak için kontrol noktalarında ölçümleri kaydeder.
  • Metrikleri tablolarda ve grafiklerde görüntüler ve yazdırır.
  • Standart bir Windows GUI içinde veya XML komut dosyalarını kullanarak komut dosyalarınızın içinde çalışır.
  • Metrikleri diğer araçlarla daha fazla işlenmek üzere XML veya CSV (virgülle ayrılmış değer) dosyalarına aktarır.

Yanında .NET için NDepend sadece en iyi araçtır, ben tavsiye edebilir VEL'ye .

Aşağıdaki araçlar trend analizi yapabilir:


SourceMonitor yalnızca Windows'a yönelik bir araç gibi görünüyor. Diğer İşletim Sistemleri (Linux, BSD, Mac) için benzer bir şey var mı?
Mnementh

Mnementh, ben Windows geliştiriciyim, FOSS adamları için böyle araçlar bilmiyorum. Belki SourceMonitor'u Wine emulator altında çalıştırmayı deneyebilirsiniz?
aku

2
Şimdi C ++, CppDepend için NDepend tipi aracı vardır
Goosey

SourceMonitor ticari amaçlı değildir.
Scott 混合 理论

2
@Kevin 混合 理论 lisansı dikkatlice okuyun - satamayacağınız herhangi bir ortamda kullanabilirsiniz. "Yani, bu yürütülebilir dosyayı kendi yazılım geliştirme çabalarınızın bir parçası olarak kullanabilirsiniz (ticari veya başka türlü) ancak satamazsınız ..."
Natalie Adams

12

Sonar , özellikle Java projeleri için kesinlikle dikkate almanız gereken bir araçtır. Bununla birlikte PHP veya C / C ++, Flex ve Cobol kodunu da işleyecektir.

İşte bir projedeki bazı metrikleri gösteren bir ekran görüntüsü:

alt text http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Aracı http://nemo.sonarsource.org adresindeki demo sitesini kullanarak deneyebileceğinizi unutmayın.


Görünüşe göre SO, bağlantıyı düzeltmeme izin vermiyor - bağlantı şöyle olmalı: nemo.sonarsource.org
Natalie Adams


8

Ayrıca IDE'm için bir kod ölçüm aracı / eklentisi arıyordum, ancak bildiğim kadarıyla, belirli bir süre boyunca karmaşıklığın bir grafiğini gösteren hiçbiri (yani tutulma için) yok. Ancak tutulma metrikleri eklentisini buldum , şu işlemleri yapabilir:

  • McCabe'nin Siklomatik Karmaşıklığı
  • Etkili Kaplinler
  • Yöntemlerde Uyum Eksikliği
  • Yöntemdeki Kod Satırları
  • Alan Sayısı
  • Seviye Sayısı
  • Kapsamdaki Yerel Kişi Sayısı
  • Parametre Sayısı
  • İfade Sayısı
  • Sınıf Başına Ağırlıklı Yöntemler

Ve onu kullanırken, aradığınız grafikleme seçeneğini de kaçırmadım.
Bence, zamanla grafiği kaldırabilecek herhangi bir eklenti / araç bulamazsanız, size en çok uyan ve ihtiyacınız olan tüm bilgileri size sunan araca bakmalısınız; Verilen bilgiler sadece projenizin mevcut yapısı için olsa bile.

Bir yan not olarak, tutulma ölçümleri eklentisi verileri harici bir dosyaya aktarmanıza izin verir (bağlantı bir örneğe gider), bu nedenle bir kaynak kontrol aracı kullanıyorsanız ve yapmanız gerekir! dosyayı kaynak koduyla birlikte derleyin ve depolayın, böylece zamanda geriye gitmek ve farklılıkları kontrol etmek için (temel) bir yolunuz olur.


4

Unutmayın, ölçtüğünüz şey elde ettiğiniz şeydir. loc üretkenlik veya verimlilik hakkında hiçbir şey söylemiyor.

bir programcıyı kod satırlarına göre derecelendirirseniz .. kod satırları alırsınız. aynı argüman diğer ölçütler için de geçerli.

otoh .. http://www.crap4j.org/ çok muhafazakar ve kullanışlı bir ölçüdür. kapsamla ilgili karmaşıklığı belirler.


2
Bir programcıyı yorum satırlarına göre derecelendirirseniz ... satır yorum alırsınız.
EML


3

NDepend aracı ile ilgili olarak ile ilgili olarak, Kod Satır Sayısı'ndan Yöntem Sıralaması (popülerlik), Döngüsel Karmaşıklık, Yöntemlerin Uyumluluk Eksikliği, Yüzde Kapsamı (NCover veya VSTS'den alınmıştır), Kalıtım Derinliği gibi 82 farklı kod birlikte gelir. .

Onun kural sistemle, NDepend da sorunları bulmak ve tahmin edebilirsiniz teknik borcu ilginç bir kod metrik (düzeltme sorunlarına dev-çabanın miktarı vs dev-zaman miktarı sabitlenmemiş sorunları bildirmek için yılda şımarık).

Tüm bu ölçümler burada detaylandırılmıştır .


2

.NET uzayda iseniz, Geliştirici Ekspres CodeRush LOC, Cyclomatic Karmaşıklık ve (oldukça mükemmel, IMHO) sağlamaktadır Bakım Karmaşıklık gerçek zamanlı olarak kod analizi.

(Bakım Karmaşıklığı bağlantısı için üzgünüz; Google'ın önbelleğine gidiyor. Orijinalin çevrimdışı ATM olduğu görülüyor).


2

Atlassian FishEye, iş için başka bir mükemmel araçtır. Kaynak kontrol sisteminizle entegre olur (şu anda CVS, SVN ve Perforce'u destekler) ve tüm dosyalarınızı bu şekilde analiz eder. Yine de analiz oldukça basittir ve ürünün kendisi ticari (ancak çok makul fiyatlı, IMO).

Ayrıca, eş kod incelemelerini kolaylaştıran Crucible adlı bir eklenti de edinebilirsiniz.



2

Code Analyzer , bu tür ölçümleri oluşturan basit bir araçtır.

alternatif metin
(kaynak: teel.ws )


3
GUI güzel görünmekle birlikte, oluşturulan ölçümler oldukça işe yaramaz görünüyor - örneğin "Dosya başına boşluk satırı"?
kizzx2




0

PHP cephesinde, ben mesela inanıyoruz phpUnderControl aracılığıyla ölçümlerini kapsamaktadır PHPUnit (yanılmıyorsam eğer).

Ölçütlerin genellikle hatalı olduğunu unutmayın. Örneğin, önemsiz sorunlar üzerinde çalışan bir kodlayıcı, karmaşık sorunları çözen bir kodlayıcıdan daha fazla kod üretecek ve grafikleriniz üzerinde daha iyi görünecektir.


0

Bazı trend analizlerinin peşindeyseniz, SLOC'nin ötesinde ölçmek gerçekten bir şey ifade ediyor mu?

Sondaki noktalı virgül için bir grep yapıyor ve geri dönen satırların sayısını saysanız bile, peşinde olduğunuz şey SLOC ölçüm tekniğinde tutarlılıktır. Böylelikle bugünün ölçümü geçen ayın ölçümü ile anlamlı bir şekilde karşılaştırılabilir.

McCabe Cyclometric Complexity'nin bir eğiliminin ne vereceğini gerçekten göremiyorum? Geliştiricilere geri bildirim sağlamak için CC'nin daha kaliteli bir anlık görüntü için kullanılması gerektiğini düşünüyorum.

Düzenleme: Ooh. Yararlı olabilecek birkaç başka ölçüm düşündüm. SLOC yüzdesi ve test kapsamı olarak yorumlar. Hiçbirinin kaymasına izin vermek istemezsin. Bunlardan herhangi birini güçlendirmek için geri dönmek, asla onları "anın sıcağında" yapmak kadar tanrı değildir!

HTH.

şerefe

Rob


0

Scitools 'Understand , sizin için birçok kod ölçütü üretme yeteneğine sahiptir. Kod ölçüm özellikleri konusunda pek tecrübem yok, ancak genel olarak statik analiz özellikleri güzeldi ve fiyatı çok makul. Destek mükemmeldi.



0

Java için, 60'tan fazla kaynak kodu metriğini hesaplayan, zaman içindeki tüm değişiklikleri izleyen ve ayrıca kaynak kodun sürdürülebilirliği için genel bir derecelendirme sağlayan aracımız QualityGate'i deneyebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.