20.10.10

PMD (Açık Kaynak Kodlu Kod Analiz Aracı)

Mart 2010 tarihinde hazırladığım bir yazıyı paylaşmak istiyorum. 

Doğrulama ve test yazılım geliştirme sürecinin önemli bir parçasıdır. Testin kalitesi yazılımın kalitesiyle paralellik sergiler. Bu süreçte kullanılabilecek bir araç olarak PMD'den nasıl faydalanıldığı kısaca aşağıda anlatılmıştır.

PMD java için yazılmış açık kaynak kodlu kod analiz aracıdır. 

http://sourceforge.net/projects/pmd/files/ adresinden indirilebilmektedir. Bu adreste JDeveloper, Eclipse, Netbeans gibi çeşitli IDE’ler için uygun indirme yapılabilmektedir. Ben Netbeans üzerinde çalıştığım için Netbeans versiyonunu indirdim. Daha sonra eklentiyi IDE’me kurdum. Bu işlemi Tool>Plugins>Downloaded>Add Plugins..>pmd.nbm adımlarını izleyerek yaptım. Eklentiyi kurduktan sonra bir projeye sağ tıkladığımda Tools bölümünden Run PMD çalıştırılarak ya da Ctrl+Alt+P kısayoluyla çalıştırılabilmektedir.


Şekil 1

PMD’nin kodu analiz ederken hangi kriterlere bakacağını da ayarlamamız mümkün. Buna göre kodun şu şu özelliklerine bakılsın, şunlara bakılmasına gerek yok şeklinde bir ayarlama yapılabiliyor. Aynı zamanda eski ayarların saklanıp tekrar kullanılması, farklı senaryolar için farklı ruleset’lerin kullanılması mümkün. İlk önce Tools>Options>Miscallaneous>PMD penceresini açılır.(Şekil-2)


Şekil 2
Buradan “Manage Rules” butonuna basıldığında Rule editor tablosu gelir. Buradan rule’lar kullanıcı tarafından belirlenir. “>>” tuşu ile tüm rule’ların yüklenmesi de sağlanabilir.


Şekil 3
Kuralları bu şekilde ayarladıktan sonra artık kodları test edebiliriz. Test işlemi için yaz stajında yazdığım “Çoklu Server Client” programımı seçtim. Bu program ağ üzerinden bilgisayarların haberleşmesini sağlayan, aynı bilgisayarda birden fazla server ve client oluşturulmasına imkan veren bir programdır. Run PMD yapılınca PMD 128 adet uyarı verdi. Bunlardan biri de EmptyCatchBlock hatasıydı. Hatanın yanında açıklaması var. Daha detaylı bir
açıklama ve kod örneğine “Rule editor” penceresinde hata seçildiğinde ulaşılabilmektedir. Bu kadar çok uyarı çıkmasının nedeni tüm kuralları geçerli kılmam oldu.


Şekil 4

Şimdi de daha önceden hazırlanmış bir ruleset’in kullanılmasında bahsedeceğim. Bu sefer Options Penceresinden (Bkn Şekil-2) Manage rulesets butonuna basıyoruz. Add ruleset butonuna basarak bir xml dosyası yüklüyoruz.(Bkn Şekil-5) Bu dosyada kural ayarlarımız mevcut. Bu xml dosyasını kendimiz değiştirebiliyor, ihtiyaca göre edit edebiliyoruz. Ya da daha önceden başkalarının yazdığı bir ruleset’i kullanabiliyoruz. Aşağıda kullandığım ruleset’in içi gözükmektedir.

<?xml version="1.0" ?>
- <ruleset name="Custom ruleset" xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>Imagine PMD Rule Set</description>
<rule ref="rulesets/basic.xml" />
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/clone.xml" />
<rule ref="rulesets/coupling.xml" />
<rule ref="rulesets/finalizers.xml" />
<rule ref="rulesets/imports.xml" />
<rule ref="rulesets/logging-java.xml" />
<rule ref="rulesets/logging-jakarta-commons.xml" />
<rule ref="rulesets/naming.xml" />
<rule ref="rulesets/optimizations.xml" />
<rule ref="rulesets/strings.xml" />
<rule ref="rulesets/sunsecure.xml" />
<rule ref="rulesets/unusedcode.xml" />
- <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
- <properties>
<property name="reportLevel" value="8" />
</properties>
</rule>
- <rule ref="rulesets/strictexception.xml">
<exclude name="SignatureDeclareThrowsException" />
</rule>
</ruleset>


Şekil 5

İnternetten indirdiğim custom ruleset ile projemde tekrar test başlattığımda bu sefer bana 26 uyarı verdi.(Bkn Şekil-6)


Şekil 6
Bu uyarıları düzelterek daha kaliteli bir program oluşturmak mümkün. Projenin tamamına test uyguladım ancak class’lara tek tek uygulamak da mümkün. Hatalarımı göstermesi bakımında benim için çok yararlı oldu. Anlayamadığım hatalarda açıklamalara ve örnek kodlara bakmak da tecrübe kazandırdı. Bu sayede ileride yazdığım programlarda günden güne daha az hata mesajı alacağımı düşünüyorum.

19.10.10

İnsanlardan Bazıları

İnsanlardan bazıları….

İnsanlardan bazıları (100 sene sonra toprağın altındaki çürümüş bedenini düşünmeden) boyuyla posuyla caka satıyor, satmasın.

İnsanlardan bazıları kendisine verilen şekli değiştiriyor, değiştirmesin.

İnsanlardan bazılar gecenin gizlediğini gündüz açığa çıkartıyor, çıkartmasın.

İnsanlardan bazıları (o kimsenin süsü görmeyeceği günü unutarak) aşırı süsleniyor, süslenmesin.

İnsanlardan bazıları boş işlerle uğraşıyor, uğraşmasın.

İnsanlardan bazıları yapacağım diyor, yapamayacağını demesin.

İnsanlardan bazıları verdiği hediyeyi geri istiyor, istemesin.

İnsanlardan bazıları trafikte haddi aşıyor, aşmasın.

İnsanlardan bazıları -mış gibi yapıyor, yapmasın.

İnsanlardan bazıları kibirleniyor, kibirlenmesin.

İnsanlardan bazıları üç kuruşluk menfaat peşinde koşuyor, koşmasın.

İnsanlardan bazıları yalan söylüyor, söylemesin.

İnsanlardan bazıları kalp kırıyor, kırmasın, yıkmasın.

İnsanlardan bazıları güzel olanı bırakıp çirkine gidiyor, gitmesin.

İnsanlardan bazıları elindekinin kıymetini bilmiyor, yazık ediyor, etmesin.

İnsanlardan bazıları kendisine bakmadan diğerine akıl veriyor, verdiği akıl akıl değilse hiç vermesin.

İnsanlardan bazıları yarı yolda bırakıyor, bırakmasın.

İnsanlardan bazıları hayatlarında verdikleri en büyük sözü bozuyor, bozmasın.

İnsanlardan bazıları yaptıklarını başa kakıyor, kakmasın.

İnsanlardan bazıları gösteriş için saçıyor, saçacaksa hak için saçsın.

İnsanlardan bazıları esirgiyor, esirgeyecekse dolandırıcıdan esirgesin.

İnsanlardan bazıları hak görününce kızıyor, kızmasın, üzülsün.

İnsanlardan bazıları pişman oluyor, sonra yine haddi aşıyor, sonra da unutuyor, unutmasın.

İnsanlardan bazıları şimdiyle seviniyor, çok sevinmesin, gelecekle üzülsün.

İnsanlardan bazıları altın çatal bıçakla oynuyor, onları dünyadaki sahiplerine bıraksın.

İnsanlardan bazıları devletten çalıyor, çalmasın.

İnsanlardan bazıları çaldığını bilmiyor, bilmiyorsa öğrensin.

İnsanlardan bazıları bilmediği işe giriyor, girmesin.

İnsanlardan bazıları haddi aşanları dost ediniyor, edinmesin.

İnsanlardan bazıları gidip boyun eğiyor, sonra da gelip baş kaldıranların koluna giriyor, girmesin.

İnsanlardan bazıları yaptıklarının boşa gitme ihtimalini hiç düşünmüyor mu, kendisine sorsun.

İnsanlardan bazıları söz veriyor, veriyorsa tutsun.

İnsanlardan bazıları başkalarına duygu sömürüsü yapıyor, yapmasın.

İnsanlardan bazıları akrabadan yüz çeviriyor, çevirmesin.

İnsanlardan bazıları kapıdan kovuyor, kovmasın.

İnsanlardan bazıları yok sayıyor, saymasın.

İnsanlardan bazıları sinsice planlıyor, O’nun da bir planı olduğunu unutmasın.

İnsanlardan bazıları kapılara dayanıyor, dayanmasın.

İnsanlardan bazıları kötü konuşuyor, konuşmasın.

İnsanlardan bazıları evladını düşünüyor,  diğerinin de evlat olduğunu düşünsün.

İnsanlardan bazıları haddi aşıyor, aşmasın.

İnsanlardan bazıları para biriktiriyor, biriktirecekse daha güzelini biriktirsin.

İnsanlardan bazıları malını sayıyor, sayacaksa günahını saysın.

İnsanlardan bazıları dertsiz, dünyayla oyalanıyor, kendine gelsin.

İnsanlardan bazıları az bir karşılık için çok çalışıyor, çalışacaksa daha hayırlısına çalışsın.

İnsanlardan bazıları ufak zaferlerinde kendilerini üstün görüyor, bi de çıksın kendisine Ay’dan baksın.

İnsanlardan bazıları bazı insanları anlatıyor, artık sussun, biraz da kendine baksın, o anlattıklarını kendisinde arasın.

   M.Ali

16.10.10

Devlet Görevini Yerine Getirsin

Devletin en temel görevi vatandaşı yaşatmaktır. Bunun bir adım sonrasıysa vatandaşı daha iyi yaşatmaktır.

Mal canın yongası. İnsanın daha iyi yaşaması, huzurlu bir ortamda gerçekleşen zenginleşmeyle sağlanır. Zenginleşmenin de bir adım sonrası istikrardır.

Zenginlik kadar zenginliği korumak da önemlidir. Zenginliği koruma noktasında insanoğlunun elindeki en büyük silahlardan biri sigorta sistemidir.

Deprem sigortası, hırsızlığa karşı sigorta, arabalarımızın kaskosu, tüm bunlar sahip olduklarımızı korumak için kullandığımız argümanlar. Ancak maalesef bunların büyük bir kısmını özel şirketler sağlamakta ve bizim zenginliğimizi korurken bir taraftan da bizim paralarımızla zenginleşmekteler. Zenginliğimizi korurken bizi biraz daha fakirleştiriyorlar. İşte bu benim canımı sıkıyor.

Benim devlet anlayışımda vatandaşın zenginliğini korumak devletin asli görevlerinden biridir. Bu noktada önerim şu: devlet karsız sigortacılık yapsın. Ancak dikkat edin, karsız diyorum. Bugün devletin birçok bankası var ancak hepsi de kar amacı güden kuruluşlar. Ben kar amacı güden bir şirketten bahsetmiyorum. Benim bahsettiği konu sigortacılığın devlet tarafından kar sağlamadan yapılması. Örneğin ben arabamın kaskosunu Güneş Sigortaya 600 liraya değil de, devlete, devletin bir kurumuna 350-400 liraya yaptırayım. Benim kazalar vs. karşısında mağdur duruma düşmememi devlet bana hiçbir çıkar gözetmeden sağlasın.

Türkiye Sigorta ve Güvence Kurumu(TSGK) kurulsun. Hem kısaltması da kulağa hoş geliyor. :)  Bu iş bürokratlarca uzun uzun düşünülsün, planlansın. Sağlam ve güçlü bir sistem tasarlanıp uygulansın. Ben bir vatandaş olarak bunu devletimden istiyorum. Devlet bunu yapmakla bana ihsan etmiş de olmayacak üstelik. Bu, devletin görevi. Zaten yapmak zorunda. Benim zenginliğimi korumak zorunda. Ben onun yasalarına uyuyorsam o da beni mutlu etmek ve mutluluğumu sürdürülebilir kılmak zorunda. Zaten biz devleti o yüzden var ettik, o yüzden yaşatıyoruz.
                                                                                 
Ekim 2010 – Mehmet Ali Demir
Related Posts Plugin for WordPress, Blogger...