Projenizdeki kodlar kaç satır oldu acaba?


Geliştirmekte ve geliştirmekten sıkılmakta olduğum bir projenin dosyaları epeyce artmıştı. Bir gün merak ettim, kaç satır yazmışımdır acaba diye…

Hergün istekler, hergün artan ihtiyaçlar, “aa şu da olabilir mi?”, “aa şu özelliği de ekleyebilir miyiz?” diye diye incecik bir saç teli sağlamından bir peruğa dönüştü (Perulular böyle der :P).

Bir sayayım dedim ama çok fazla dosya var. Bunun için “code metrics” araçları var. Ama onları da okuyup anlayana kadar oturur kendi işimi kendim yaparım dedim.

Deneyin Amacı: Bir klasördeki dosyaların kaç satırdan oluştuklarını öğrenmek.

Araçlar: Bir adet web tarayıcısı (Elbette Firefox), Windows kullanıcıları için WAMP Server, Bir adet NotePad++

Deney düzeneğinin hazırlanması:

1. Öncelikle proje klasörünün yolunun tanımlanması lazım.

$yolBu = "D:\\Projeler\\BitmeyenSarki";

\\ yazmamın sebebini biliyorsunuz zaten ama bilmeyen de olabilir. O da öğrensin. (http://www.php.net/manual/tr/language.types.string.php)

2. Projenizdeki uzantıları belirlemeniz gerekiyor.

/*buraya, uygun şekilde, istediğiniz uzantıları ekleyebilirsiniz.*/
$uzantilarBunlar = array('php', 'css', 'html', 'json', 'js');

3. İsteğe bağlı olarak belki toplam satır sayısını öğrenmek isteyebilirsiniz:

$toplamSatir = 0;

4. Gelelim işlemi yapan fonksiyonu yazmaya:

$sonuclar = satirSay($yolBu, $uzantilarBunlar);

Bu kadar… Şaka şaka… Devam ediyoruz. Şimdi fonksiyon çağrısını oluşturduk ama çağırdığımız fonksiyon yok ortada. O zaman buyurun yazalım:

5. Fonksiyonun adı satirSay. Sayacağı satırlar nerede? Dosyalarda. Hangi klasörde? $yolBu ile belirtilen değişkenin gösterdiği yerde. Hangi dosyalar? Uzantıları $uzantilarBunlar dizisinin elemanları olan dosyalar.

Yeterince soru-cevap yaptıktan sonra faaliyete geçelim:

6. Fonksiyonu çağırdığımız yapıya uygun şekilde tanımlayalım:

function satirSay($yol, $uzantilar)
{
}

$yol $yolBu değişkenini karşılayacaktır. $uzantilar da $uzantilarBunlar değişkenini…

7. Küme parantezlerinin içine gereken kodları yazalım. Burada ihtiyacımız olan bir sınıf var ki işleri çok çok kısaltıyor: Iterator sınıfı (http://www.php.net/manual/tr/class.recursiveiteratoriterator.php). Fonksiyonu baştan yazalım.

function satirSay($yol, $uzantilar)
{
    $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($yol));
    //$rii ile belirtilen yoldaki klasörlerin isimlerini kaydeden bir dizidir. 
    //Bu sayede, acaba iç içe kaç klasör var, uğraşmıyoruz.
    $dosyalar = array(); //dosya isimlerini ve satır sayılarını bu dizi içinde tutacağız.
    //başlıyoruz... Her bir klasördeki her bir dosya için aşağıdaki işlemleri tekrarlatıyoruz.
    foreach ($rii as $dosya) {
        if ($dosya->isDir()){ 
            continue;
        }
        $parcala = explode('.', $dosya->getFilename()); //Dosya ismini her . karakterinden parçalıyoruz.
        $uzanti = end($parcala); //dosya uzantısını elde ediyoruz.
        if (in_array($uzanti, $uzantilar)) { //Eğer dosyanın uzantısı belirtien uzantılardan bir tanesiyle aynı ise 
            $dosyalar[$dosya->getPathname()] = count(file($dosya->getPathname())); 
            //$dosyalar dizisine o dosyanın yolunu anahtar(key), satır sayısını da değer (value) olarak kaydediyoruz.
        }
    }
    return $dosyalar;
    //İşlem bittikten sonra fonksiyonun çağrıldığı satıra sonuçları geri döndürüyoruz.
}

İşlem bitti mi? Tabii ki hayır! Zira bilgileri elde ettik ama şu an elimizde ne var onu bilmiyoruz.

Bunun için küçük bir döngüde dosya isimlerini ve satır sayılarını ekrana yazdırabiliriz.

foreach ($sonuclar as $key => $value)
{
    echo $key . ": " . $value . "<br />";
    $toplamSatir += $value;
}

Belki toplam kaç satırdan oluştuğu da ilgimizi çekebilir.

echo "Toplam $toplamSatir satir kodunuz... mu otururum (: ";

Sonuçlar ekranda şu şekilde görünecektir.
D:\Projeler\BitmeyenSarki\config.json: 69
D:\Projeler\BitmeyenSarki\form.html: 137
D:\Projeler\BitmeyenSarki\index.php: 35
D:\Projeler\BitmeyenSarki\script.js: 139
D:\Projeler\BitmeyenSarki\style.css: 409
Toplam 789 satir kodunuz mu otururum (:

Bu kadar.

One thought on “Projenizdeki kodlar kaç satır oldu acaba?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s