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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
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):
1 2 |
String path = new String("c:\\www\\www"); new source(path,"php"); |
V mém případě jsem se dočkal výsledků:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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í.