.Net kodunuzun kalitesini NDepend ile ölçün

Bir uygulamanın kodunun kalitesinin değerlendirilmesi genellikle öznel bir süreçtir. Bu nedenle kod ölçümlerine (uygulamamızın koduna ilişkin değerli bilgiler sağlayan nicel ölçümlere) dönüyoruz. Geliştiriciler, kodun kalitesini anlamak, olası sorunlar hakkında fikir edinmek ve kaliteyi iyileştirmek için hangi tür ve yöntemlerin yeniden düzenlenmesi gerektiğini belirlemek için kod ölçümlerinden yararlanabilir.

Statik kod analiz araçları, uygulamayı yürütmek zorunda kalmadan bir uygulamadaki kodun kalitesini ölçmek için kullanılır. .Net için pek çok statik kod analiz aracı mevcuttur. Bunlara FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend vb. Dahildir. Bu makale, kod kalitesini görselleştirmek ve iyileştirmek için önlemleri benimsemek için NDepend'i nasıl kullanabileceğimizin bir tartışmasını sunar.

NDepend nedir ve neden kullanılır?

NDepend, Visual Studio ile güzel bir şekilde bütünleşen ve kod kalitesini belirlemek için değerli ölçümler sağlayan statik bir kod çözümleyicisidir. NDepend, bu ölçümleri listeler, matrisler, grafikler, ağaç haritaları ve çizelgeler biçiminde görüntüler. Bu ölçümlerin yanı sıra NDepend, kodunuzu analiz edebilir ve geniş bir kural veritabanına karşı ihlalleri rapor edebilir.

NDepend her analizin sonuçlarını kaydeder, böylece kod kapsamını veya kod kalitesini iyileştirdikten sonra sonuçları karşılaştırabilirsiniz. Hem bağımsız bir uygulama olarak hem de Visual Studio'da bir uzantı olarak çalıştırılabilir. Ayrıca, NDepend'i Azure'daki projelerinizle tümleştirmek için NDepend Azure DevOps uzantısından yararlanabilirsiniz.

Aşağıdakiler, NDepend'in çarpıcı özelliklerinden bazılarıdır:

  • Uyumluluğu kontrol etmek için geniş bir kod kuralları kümesi
  • Kod ölçümlerini görüntülemek için birçok grafik ve diyagram
  • Visual Studio 2010, 2012, 2013, 2015 ve 2017 ile güzel bir şekilde bütünleşir
  • Modüller arasındaki bağımlılıkları keşfetmenizi sağlar
  • Analizi özelleştirmek için CQLinq (LINQ üzerinden Kod Sorgusu) sağlar
  • Kod kapsamını ölçer
  • Bakımı zor kodu tanımlar ve teknik borcu tahmin eder 
  • Trend çizelgeleri oluşturur

NDepend'e başlarken

NDepend'i kullanmaya başlamak için bir kopyasını indirip yüklemeniz gerekir. NDepend'in deneme kopyasını buradan indirebilirsiniz. .Zip dosyası olarak paketlenecektir. 

NDepend yükleyici .zip dosyasını açtıktan sonra, içinde aşağıdaki dosyaları bulacaksınız:

  1. NDepend.Console - derleme süreciyle entegrasyon için kullanılır
  2. NDepend.PowerTools - açık kaynaklı statik çözümleyicilerden oluşan bir koleksiyon
  3. NDepend.VisualStudioExtension.Installer - NDepend için Visual Studio Uzantısını yükler
  4. VisualNDepend - NDepend için bir GUI istemcisi

NDepend'in Visual Studio uzantısını aşağıdaki iki yoldan biriyle yükleyebilirsiniz: You can install the Visual Studio extension of NDepend in one of the following two ways:

  1. NDepend.VisualStudioExtension.Installer'ı çalıştırın
  2. VisualNDepend'i çalıştırın ve "Visual Studio Uzantısını Yükle" yi seçin

NDepend için Visual Studio Uzantısı yüklendikten sonra, Visual Studio IDE içinden metriklerden, kurallardan, raporlardan, grafiklerden, çözümleyici sonuçlarından ve araçlardan yararlanabilirsiniz. Çözümlerinizi ve projelerinizi Visual Studio'yu başlatmak zorunda kalmadan analiz etmek için Visual NDepend'in avantajlarından da yararlanabilirsiniz.

NDepend için Visual Studio Uzantısı, Visual Studio 2010 ile Visual Studio 2017 arasında kullanılabilir. Bunu Visual Studio 2017 ile kullanıyorum.

NDepend ile kaynak kodunu analiz etme

Kaynak kodunuzu analiz etmeye başlamak için "VS çözümlerini ve VS projelerini analiz et" seçeneğini tıklayabilirsiniz. Mevcut diğer seçenekler ".Net derlemelerini klasörde analiz et", ".Net derlemelerini analiz et" ve "Bir kod tabanının 2 sürümünü karşılaştır" şeklindedir. Bu son seçenek, iki yapıyı karşılaştırmanıza olanak tanır - güzel bir özellik!

Basitlik adına, buradaki son makalelerimden birinin kaynak kodunu kullanacağım ("Lamar ASP.Net Core'da nasıl kullanılır?"). "VS çözümlerini ve VS projelerini analiz et" i tıkladığınızda, aşağıdaki Şekil 1'de gösterildiği gibi yeni bir pencere görüntülenecektir.

Şimdi “Gözat” a tıklayabilir ve NDepend'in analiz etmesini istediğiniz projenin çözüm dosyasını belirtebilirsiniz.

Son olarak, aşağıdaki Şekil 3'te gösterildiği gibi analizi başlatmak için "Tek bir .Net derlemesini analiz et" seçeneğine tıklayın.

Bu, seçilen proje üzerinde bir kod analizi çalıştıracaktır. Analiz tamamlandığında, NDepend aşağıdaki seçeneklerle bir pencere görüntüleyecektir:

  • NDepend Dashboard'u görüntüleyin
  • NDepend Etkileşimli Grafiğini Göster
  • Browser NDepend Code Rules
  • Diyaloğu kapat

NDepend panosunu görüntülemeyi seçelim. Çıktı şu şekildedir: 

NDepend size kod satırlarını, türler hakkındaki bilgileri, borçları, kaynak koddaki yorumları, kapsam bilgilerini, yöntem karmaşıklığını, kalite kapılarını ve ihlal edilen kuralları ve diğer konuları gösterir.

NDepend özellikleri

Bağımlılık grafiği ve bağımlılık matrisi

NDepend ayrıca size bir bağımlılık grafiği ve kodunuzun bağımlılık matrisini gösterir. İlki, projenizdeki bağımlılıkların grafiksel bir görünümünü sağlarken, ikincisi, kodunuzun ad alanlarına ve türlere bağımlılıklara göre düzenlenmiş bir tablo görünümünü sağlar.

Trend çizelgeleri

Trend çizelgeleri gösterge tablosunda mevcuttur. Bu grafikler, projenin kaynak kodunun kalitesinin zaman içinde nasıl değiştiğine dair bir önizleme sağlar. Ayrıca kendi özel trend çizelgelerinizi de oluşturabilirsiniz.

Cyclomatic karmaşıklık

Döngüsel karmaşıklık, programınızın karmaşıklığını anlamanıza ve kod kapsamını iyileştirmenize yardımcı olabilecek, kaynak koddaki doğrusal olarak bağımsız yolların nicel bir ölçüsüdür. Uygulamanızın kodundaki döngüsel karmaşıklığı analiz etmek için NDepend'in avantajlarından yararlanabilirsiniz. Bu makalede siklomatik karmaşıklık hakkında daha fazla bilgi edinebilirsiniz.

CQLinq kullanarak sorgulama

CQLinq, NDepend'in en çarpıcı özelliklerinden biridir. CQLinq, LINQ kullanarak .Net kodunu sorgulamanızı sağlar. Kod borcunu, sorunları, kuralları ve kalite kapılarını sorgulamak için CQLinq'ten yararlanabilirsiniz.

Bir örneğe bakalım. Aşağıdaki CQLinq sorgusu, siklomatik karmaşıklık değerinin azalan sırasına göre sıralanmış, 20'den büyük bir siklomatik karmaşıklığa sahip soyut olmayan yöntemlerin yöntem adlarını ve döngüsel karmaşıklığını görüntüler.

Application.Methods m'den

burada m.CyclomaticComplexity> = 20 &&! m.IsAbstract

m. Siklomatik Karmaşıklık azalan

yeni {m, m.CyclomaticComplexity} seçin

İşte bir CQLinq sorgusunun başka bir örneği. Bu, çalıştırıldığında 100'den fazla kod satırına sahip yöntemlerin adlarını gösterecektir.

m.NbLinesOfCode> 100 olan Yöntemlerde m'den m'yi seçin

CQLinq hakkında daha fazla bilgi edinmek için, buradan NDepend belgelerine bakabilirsiniz. 

NDepend, uygulamanızın koduna ilişkin değerli bilgiler sağlayabilen statik bir kod analiz aracıdır. NDepend'i bağımsız bir uygulama olarak veya Visual Studio ile tümleşik olarak çalıştırabilirsiniz. NDepend ücretsiz olmasa da, güçlü yetenekleri göz önünde bulundurulduğunda makul fiyatlıdır ve Visual Studio'nun tüm son sürümlerinde mevcuttur.

NDepend'i öğrenmek için harika bir kaynak istiyorsanız, Eric Dietrich'in "Practical NDepend" Pluralsight kursunu şiddetle tavsiye ederim.