NDepend Tool ve CQL(Code Query Language)

Merhaba Arkadaşlar,

blg227_CQL_Sample_1 Yandaki resimde Visual Studio 2010 Ultimate ortamına ait bir ara pencere görmektesiniz. Dikkat edeceğiniz üzere

Select Methods Where NbLinesOfCode>=5

şeklinde bir sorgu cümlesi var Laughing

Oppsss!!! Bu nasıl bir sorgu cümlesi? Tahmin etmeye çalışalım. Sanki uygulamadaki kod satır sayısı 5’ ten fazla olan metodların adlarını döndüren bir sorgu cümlesi gibi Smile

Şu anda bir Code Query Language örneğinin Visual Studio 2010 IDE’ si içerisindeki raporlama sonucunu görmektesiniz.

Peki ben bu sorguya nasıl mı kavuştum?

Sevgili Patrick Smacchia(C# MVP), NDepend isimli bir .Net analiz ürünü geliştirdiklerini bir süre önce bana bildirmişti. Sonrasında ürünün tam sürümünü gönderdi ve bende incelememi, eğer varsa fikirlerimi iletmemi rica etti.

Bildiğiniz üzere Visual Studio 2010 IDE’ si içerisinde Architecture sekmesinde erişip kullanabileceğimiz bazı analiz operasyonları mevcut. Söz gelimi Assembly’ lar, tipler vb… arası bağımlılıkları çıkartabiliyoruz veya bir metodun Sequence Diagram’ ına ulaşabiliyoruz. Bazı var olan mimari kalıpları uygulatıp doğrulatabiliyoruz. Ancak yine de büyük çaplı projelerin yazılması sırasında, bazı metric’ lere uyulup uyulmadığını denetlemek, projenin genel görünümünü rapolarmak, daha detaylı görsel şemalar görmek ve derin bilgi edinmek isteyebiliyoruz. Bu tip ihtiyaçları karşılamak için başka araçlar da var ancak NDepend özellikle CQL(Code Query Language) ve Raporlama kısımlarındaki başarısı ile bence biraz daha ön plana çıkıyor.

NDepend aracı hem kod kalitesini arttırmak için gerekli metric’ lerin kontrolünü sağlıyor hem de az önceki erkan görüntüsünde olduğu gibi CQL ile bazı kriterleri sorgulayabilmemize olanak tanıyor. Tabi bu sadece şu ana kadar öğrenebildiğim iki güzel özelliği. Daha da fazlası var. Ancak basit bir test sürüşü ile yolumuza devam edebiliriz. Bu amaçla örnek olarak aşağıdaki ekran görüntüsünde yer alan Solution içeriğini göz önüne alabiliriz.

blg227_SolutionTree

Sağ alt köşede sarı renkli olan daire mutlaka dikkatinizi çekmiştir. Aslında bu NDepend aracı ile gelen ve Popup Menu açan sihirli bir dairedir Wink Ki bastığınızda aşağıdaki ekran görüntüsüne benzer sonuçlar ile karşılaşabilirsiniz.

blg227_YellowCircle

Dikkat edileceği üzere 18 kural ihlali(18 Rules Violated) olduğu hemen göze çarpmaktadır Undecided Rules Violated kısmına tıkladığımızda ise aşağıdaki ara birim ile karşılaştığımızı görürüz.

blg227_SampleViolation

Bu ekran görüntüsünden de anlaşılacağı üzere bazı kalite kriterlerine ait analiz sonuçları üretilmiştir. Örneğin kodun kalitesi açısından Code Quality grubu ve altındaki Type Metrics kısmına bir bakalım. Type Metrics sonuçları içerisinde örneğin çok fazla sayıda metod içeren 10 öğe olduğu belirtilmektedir. Eğer bu satıra çift tıkarsak aşağıdaki CQL sorgusunu ve sonuçlarını elde ederiz.

blg227_TooManyMethods

Volaaa!!! Laughing Süper. CQL sorgusunu okuduğumuzda 20 den fazla metod içeren 10 tip olduğunu görmekteyiz (Çok doğru. Bunların hepsi Entity Framework tarafndan üretilen Entity tipleri ve Context sınıfıdır Sealed )Burada tanımlı olan kurala göre bir tipin 20den fazla metod içeriyor olması kodun yönetimi açısından zorlayıcıdır. Tabi bu bir Warning olarak karşımıza çıkmaktadır. İsterseniz bu kuralı hiçe sayabilir veya uymak için bir şeyler yapabilirsiniz. Tabi söz konusu kuralları esnetmeniz de mümkündür. Nitekim buradaki metric’ ler atlına yenilerini ekleyebilir, yeni gruplar oluşturabilir ve var olan bazı metric’ lerin sorgularını değiştirebiliriz.

Halen söz konusu aracı detaylı bir şekilde incelemekteyim. Kurulum sonrasın zaten Visual Studio 2010, 2008 ve 2005 için de AddIn olarak kullanabileceğinizi görebilirsiniz. Şu sıralar özellikle kodun kaliteli olması noktasında son derece hassas bir dönemimdeyim Smile

NDepend aracının bu yazıya sığmayacak kadar fazla sayıda özelliği var. Söz gelimi projenin analiz raporu basit bir HTML çıktısı olarak bizlere sunulmakta ama içerisinde inanılmaz derece de derin bilgiler yer almakta. Örneğin aşağıdaki gibi görsel bağımlılık bilgisi içeren görüntüler. Resmen uygulamaların röntgeninin çekildiğini ifade edebiliriz Laughing

blg227_NDependView

Hani projeyi analiz etmeye, dökümantasyon çıkartmaya üşenenlerin yardımına koşan araçlardan birisi olduğunu açıkça ifade etmek isterim. Mesajım umuyorum ki gerekli yerlere gider Wink NDepend uygulaması ile ilişkili detaylı bilgiye buradan ulaşabilirsiniz. Tekrardan görüşünceye dek hepinize mutlu günler dilerim.

Yorumlar (3) -

  • Teşekkürler hocam, güzel bir makaleydi, yararlı oldu Smile
  • resimleri silindiği için üzüntü veren makale Frown
    • Bloğu yeni sunucuya taşırken yaşanan bir kayıptı. Şimdi düzelmiş olması lazım. Uyarınız ve takibiniz için teşekkür ediyorum.

Yorum ekle

Loading