Daha önceki kod analizi yazımda, kod analizinin neden önemli olduğunu sizlerle paylaşmıştım. .NET platformunda statik kod analizini yapmanız için birkaç seçenek var. Gerek Visual Studio ile gerekse de diğer çeşitli araçlarla kodun analizini yapmanız mümkün. Özellikle Visual Studio 2008 Team Edition For Developers ve Team Suite ile beraber gelen "Code Analysis" aracı ile çeşitli kod metrikleri; Line of Code, Cyclomatic Complexity, Depth of Inheritance, Maintainability Index ve Class Coupling gibi metrikler yapılan kodun analizinde büyük önem taşıyor.

Visual Studio dışında, statik olarak kodunuzu analiz edebileceğiniz, Microsoft tarafından geliştirilen ve .NET platformunda CLR (Common Language Runtime) 'da yönetilebilen kodun (managed code) analizini yapabileceğiniz  FxCop aracı var. Ücretsiz olarak dağıtılan bu araç, Visual Studio'da bulunan Code Analysis aracının temelini oluşturuyor. Bu araç ile, verdiğiniz .NET assembly'lerinin analizini yapıyor  ve yazılım geliştiriciler için .NET Framework Design Guidelines' da bulunan kurallara (Rules) uygun olup olmadığına bakıyor. Bu belirlenmiş kurallar dışında kendi kurallarınızı da oluşturarak, bu kurallara uygun olup olmadığını da analiz edebilisiniz. Aslına bakarsanız, kodun analizini bu belirlenmiş kurallara göre yapmak aslında bir nevi, bu kuralları öğrenmekten de geçiyor. En basiti, yapılan bir projede, sınıf elemanlarının isimlendirmesinde kullanılan Pascal ve Camel stillerinin uygunluğunu bu analiz aracı ile yapabiliyorsunuz. Bu stilleri biliyor olabilirsiniz, ama kurumsal bir projede birden fazla kişinin aynı projede çalıştığını düşünürsek, aynı kalitede kod ortaya çıkarmak ya da en azından bir seviyede tutmak için kodun okunabilir ve yönetilebilirliği açısından bu tür araçların önemi büyüktür. Yine başka bir örnek, eğer yazdığınız projedeki bir sınıf, "new" anahtar sözcüğü ile yaratılmıyorsa, kısacası nesne örneklemesi yapılmıyorsa, bu sınıfın kullanılmadığının ya da içindeki herhangi bir methodun kullanlmadığı sonucunda gösterebiliyor. En güzel özelliği de, bir kuralın ihlalinde, hangi kuralın ihlal edildiğinin yanı sıra, bu ihlalin çözümünü size öneriyor.

fxCodeAnalysis-1

Yazılım geliştirme hayat döngüsünün bir parçası olması gereken bu güzel araç, yukarıdaki resimde de görüldüğü gibi grafik arayüzü ile yazılım geliştiricilere kolay bir kullanım sunuyor. Günümüzde iyi bir yazılım geliştirici sadece verilen işi yapan değil, yaptığı işi kaliteli yapan insan konumuna gelmiştir. Yazdığınız kodu sadece siz değil, büyük bir projede ya da en azından 2-3 kişinin çalıştığı bir projede kodun okunabilir ve yönetilebilir olması çok büyük önem taşımaktadır. .NET Framework ile yazılım geliştiren bir programcının, sınıf kütüphanelerini iyi bilmesi dışında, kod yazımındaki yönergeleride iyi bilmesi hem kendisinin hem de şirketin yararına olacaktır. Ayrıca, yazılımcı .NET Framework Design Guidelines gibi denenmiş best practice'leri öğrenerek kendi kod yazma kültürünü geliştirmiş olacaktır.

FxCop, derlenmiş nesne verilerinden yola çıkarak bir analiz yapmaktadır. Yani orjinal kaynak kod yerine, ara dile (MSIL) çevrilmiş kodu ayrıştırarak analiz işlemini gerçekleştirir.

Analiz alanları;

  • Correctness
  • Naming Conventions
  • Library Design
  • Localization
  • Performance
  • Security

designGuideline1Bu alanlar genel hatlarıyla çeşitli kollara ayrılmaktadırlar. .NET Framework Design Guidelines'a bakarak analiz edilen alanları öğrenebilir ve bu alanlarda kendi yazdığınız kodun kalitesini arttıracak bilgiler edinebilirsiniz. MSDN'de bulunan link, aslında Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries kitabından bir kısım. Detaylı bilgiler için kitabı alıp göz atmanızı öneririm.

FxCop MSDN

FxCop Rules

Download FxCop 1.36 Beta