www.www.zaachi.com »  Blog/Algoritmy  »  Kolik kódu máš, tolikrát…

Kolik kódu máš, tolikrát…



Zajímá vás kolik máte zdrojového kódu na svém disku, kolik už jste toho naprogramovali?

 

Mě to zajímalo taky a tak jsem si napsal jednoduchý program, který mi tyto informace vypíše.

 

Jednoduchý prográmek je napsán v javě.

Třída, kterou si ukážeme, obsahuje dva vstupní parametry:

  • adresář, jež obsahuje zdrojový kód
  • přípona souboru, která bude brána v potaz

Po spuštění program rekurzivně prochází všechny podadresáře v hlavním, zadaném, adresáři a hledá v něm soubory, které vyhovují zadané příponě.

Po nalezení vyhovujícího souboru jej otevře, spočítá počet řádek, zjistí jeho velikost a všechny údaje ukládá do globálních proměnných.

Funkce, pro zjištění všech důležitých hodnot vypadá takto:

public void displayFiles( String path ){
    //novy soubor
    File file = new File(path);
    //list souboru z otevreneho adresare
    String[] files = file.list();
    //projdeme vsechny soubory
    for (int i = 0; files != null && i < files.length; i++) {
        //vytvorime novy File
        File f = new File(path + "\\" + files[i]);
        //pokud se jedna o adresar, rekurzivne volame
        if( f.isDirectory() ){
            displayFiles(path + "\\" + files[i] );
        }
        else{
            //pokud soubor obsahuje spravnou priponu
            if( files[i].endsWith(filetype) ){
                FileReader fr = null;
                try {
                    //novy FileReader
                    fr = new FileReader( f );
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
                //zjistime pocet radek
                LineNumberReader ln = new LineNumberReader(fr);
                int count = 0;
                try {
                    while (ln.readLine() != null)
                        count++;
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //pripocteme potrebne hodnoty
                num_of_lines+=count;
                num_of_files++;
                num_of_filesize += f.length();
            }
        }
    }
}

Funkce je volána z konstruktoru, kde jsou taktéž vypsány veškeré informace (počet souborů, počet řádek v souborech, průměr počtu souborů ku počtu řádek, výsledná velikost souborů).

Celý kód definován ve třídě source, jejíž konstruktor obsahuje dané dva vstupní parametry. Volat třídu můžete například takto (zdrojový kód celé třídy je v závěru článku):

String path = new String("c:\\www\\www");
new source(path,"php");

V mém případě jsem se dočkal výsledků:

Filetype: php
Files: 4 763
Code lines: 525 885
Average: 110
Files size: 20 061 628 b

Filetype: java
Files: 272
Code lines: 29 085
Average: 106
Files size: 809 087 b

Filetype: cpp
Files: 999
Code lines: 59 982
Average: 60
Files size: 5 464 668 b

Závěrem

Celý zdrojový kód si můžete zobrazit zde: source.java.txt

Funkci jsem využil na zjištění informací o zdrojovém kódu, ale určitě by jej šlo využít i jinak, už nyní mě napadá více možností.

 


linkuj topclanky
Komentáře (0)

Autor: Zaachi
Publikováno: 18.10.2008 14:49:21
TOPLIST.cz

rss coments img img img