Yazılım Yardımcıları

Code Cracker

Standardın Önemi

Yazılım geliştirme için static kod analizi önemli konulardan birisidir. Yazılımcının ortaya çıkardığı uygulamanın işlevselliği ve kullanışlılığı yanı sıra bu uygulamanın kodlarının belli bir standart ile yazılıp yazılmadığı da aynı derece de önem taşımaktadır. Bu kodun standardı dendiği zaman çok geniş bir dünyadan bahsediyoruz. Bu dünyanın içinde kullanılan notasyon (Camel, hungarian, pascal .. vs), seçilen metot ve değişken isimleri, kullanılan valueType’lar, yorumlar,  design patterler, class standartları (her iş için ayrı sınıf ya da tüm işler aynı sınıf altında), karar yapılarının kullanımı, döngülerin kullanımı, hatta nesne için bir instance oluştururken değer atama şekline kadar daha bir çok maddeyi sıralayabiliriz.

Her yiğidin bir yoğurt yiyişi vardır, yazılım sektöründe standart oturtmak oldukça zor görünen ancak doğru stratejiler ve yerinde eğitimler ile basite indirgenebilecek bir konudur. Yazılımın kalitesi, genişletilebilir olması ve değişikliklere cevap verebilmesi için mümkün olduğunca bir standart oluşturulmalıdır. Bu durum sadece ekip olarak çalışılan projeler için geçerli değildir, tek başınıza da proje geliştiriyor olabilirsiniz, eğer bir standardınız yok ise kendi yazdığınız kodu dahi daha sonra açtığınız zaman anlayamazsınız.

Yukarıda saydığım standartların oturtulamaması durumu genellikle ilgili uygulamanın baştan yazılmasına ve bir noktadan sonra baştan yazılan uygulamanın da baştan yazılmasına yani kısır bir döngüye sebep olmaktadır. Projenin aciliyeti, yazılım ekibindeki sirkülasyon, kişisel sorunlar, şirket politikaları gibi daha bir çok konu standartsızlık sebebi olarak görülebilir ancak bir yazılımcının herşeyden önce kendi geleceğini düşünmesi ve yazdığı her bir satır kodu en azından daha sonra kendisi açıp baktığında anlayabilecek standartlarda yazması gerekir.

Code Cracker

Bir standart oturtabilmek için piyasada bir çok yardımcı eklenti, uygulama ve paket bulunmakta. Biz bu yazıda “code cracker” isimli static kod analizi yapan nuget paketini göreceğiz.
Static kod analizi yazdığınız kodları tarıyarak belli kurallar çerçevesinde olup olmadığını kontrol eder ve bize uyarılarda ve önerilerde bulunur. Code cracker bizim için tam olarak bu işi yapıyor ve nuget paket yönetici üzerinden eklediğiniz projenin içerisinde gezerek yapılması gerekenleri bildiriyor. Tamamen ücretsiz ve açık kaynak kodlu olan bu pakete dair linkleri alt kısımda bulabilirsiniz.

Github Sayfası : https://github.com/code-cracker/code-cracker
Code Cracker : http://code-cracker.github.io/

Şimdi projeye nasıl dahil edeceğimize bakalım.
Öncelikle Visual Studio üzerinde projemizi açıyoruz ve solution explorer üzerinden hangi projelerimize bu paketi kuracağımızı seçiyoruz.

Açılan ekrandan aşağıdaki gibi arama yaparak gerekli seçimleri yapıyoruz ve install tuşuna basıyoruz. Ben çalıştığım Solution altında bulunan tüm projelerime bu paketi yüklüyorum.
Paketi yükledikten sonra Solution’ına sağ tıklayarak Build diyorum. Daha sonra Error List tabında Warnings ve Message kategorisinde aşağıdaki ekran görüntüsünde olduğu gibi çeşitli uyarılar görüntüleniyor. Bu uyarılar çift tıklayarak ilgili kodun olduğu kısma gidebilir ve klavyede nokta tuşuna basılı tutarak Ctrl tuuna basarsanız codecracker size bu kodu nasıl düzeltebileceğinizi söyleyen bir mesaj çıkaracak, bu mesaja tıklamanız durumunda ise kodu sizin için otomatik olarak düzeltecektir. Error List tabında ilgili uyarıya sağ tıklayıp Show Error Help seçeneğine tıklarsanız Code Cracker web sayfasında ilgili hata ile ilgili bilgilendirmelere ulaşabilirsiniz.

Tabiki bu paketin size önerdiği herşeyi uygulamak zorunda değilsiniz ancak özellikle değişken tanımlarının var şeklinde yapılması tek satırda yazılabilecek if kontrollerinin kısaltılması, nesne içeriği doldururken kısa yazım şekilleri gibi tavsiyelere uyabilirsiniz. Aşağıda bulunan kısa örnekler bile bu konularda kodunuzu nasıl standart hale getirdiğinizi gösteriyor. Artık bu hatırlatmalar sayesinde bu gibi tanımları farklı farklı yapmadan hep aynı şekilde ilerlememiz mümkün olacak.

Hangi kurallara göre kontrol yapılması gerektiği ve kuralların Error List içerisinden hangi başlık(Error, Warning, Message) altında gelmesi gerektiği gibi konuları yönetebilmek için, codecracker ‘ı yüklediğiniz projelerin Solution Explorer tabında bulunan Dependency altındaki Analyzers bölümünden CodeCracker.CSharp seçeneğini genişleterek ulaşabilirsiniz.
code cracker, statik kod analizi

Kısa bir örnek göstermek gerekirse;
if (Resource != null)
{
value = Resource.Value;
}
else
{
value = key;
}

Bu şekilde yazılan kodu Code Cracker sizin için aşağıdaki şekilde düzenleyecektir.
value = Resource != null ? Resource.Value : key;


int a = 1;
yerine
var a = 1;
olarak tanımlama yapacaktır.


CustomersDto dto = new CustomersDto();
dto.Id = Guid.NewGuid();
dto.Name = “Mehmet Ali”;
dto.Surname = “EROL”;
dto.Phone = “0000 555 444 6666”;

Yukarıdaki gibi bir nesne türetme ve doldurma işlemi için aşağıdaki şekilde bir kısaltma yapacaktır.

var dto = new CustomersDto
{
Id = Guid.NewGuid(),
Name = “Mehmet Ali”,
Surname = “EROL”,
Phone = “0000 555 444 6666”
};