Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [funkcja] Licznik linii kodu w plikach o danym rozszerzeniu
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
Rude Dude
Skrypt umożliwia przeszukanie danego katalogu pod kątem plików o danym rozszerzeniu.

Skrypt zlicza ile linii kodu ma każdy z plików o danym rozszerzeniu, a następnie przedstawia informację o każdym z plików oraz sumuje liczbę linii kodu i podaje ją.

Skrypt napisałem by móc sobie sprawdzić ile linii kodu zaprogramowałem tworząc swój serwis.

  1. <?php
  2.  
  3. /*
  4.  
  5. <<< Licznik linii kodu w plikach o danym rozszerzeniu >>>
  6. 2008 Copyright by Artur (RudeDude)
  7.  
  8. ### Wersja: 1.00 / 06.12.2008r.
  9.  
  10. ### Moje Serwisy (Kontakt):
  11.   www.webook.pl
  12.   www.CPG.superhost.pl
  13.   www.Eurolol.pl
  14.  
  15.  
  16. ### Licencja GNU
  17. <a href=\"http://gnu.org.pl/text/licencja-gnu.html\" target=\"_blank\">http://gnu.org.pl/text/licencja-gnu.html</a>
  18.  
  19.  
  20. ### Jak uruchomić skrypt?
  21. 1. Umieść ten plik w katalogu nadrzędnym w stosunku do katalogu który ma zostać przeszukany
  22. 2. Podaj w zmiennej $nazwa_katalogu nazwe katalogu ktory bedzie przeszukany
  23. 3. Podaj w $nazwa_katalogu nazwe rozszerzenia plikow ktorych linie kodu maja byc zliczone
  24.  
  25.  
  26. ### Wskazówka:
  27. Jeśli katalog który będzie przeszukiwany zawiera dużo plików skrypt może wykonywać się ponad 30 sekund,
  28. w takim wypadku może zostać zatrzymany przez serwer.
  29. Zmien sobie w pliku php.ini w linii
  30.   max_execution_time = 30;
  31. czas 30 sekund na więcej aby skrypt mógł się wykonać do końca.
  32. Zalecam korzystanie ze skryptu na localhost'cie, w końcu to tylko Ciebie interesuje ile linii kodu zaprogramowałeś :)
  33. Nie ma sensu obciążać skryptem serwera hostingowego, no chyba że nie masz na localu plików swojej witryny
  34.  
  35. */
  36.  
  37. $nazwa_katalogu = 'katalog'; // podaj nazwe katalogu w ktorym maja zostac przeszukane pliki o danym rozszerzeniu i zliczone ich linie kodu
  38. $nazwa_rozszerzenia = 'php'; // podaj rozszerzenie plikow ktore maja byc sprawdzone pod kątem liczby linii kodu
  39.  
  40.  
  41.  
  42.  
  43. # start skryptu ---------------------------------------------------------------------------------
  44.  
  45. licznik_linii($nazwa_katalogu.'/');
  46.  
  47. $all_files = $liczba_plikow_liczonych+$liczba_plikow_pominietych;
  48.  
  49.  
  50. echo '<hr>Pominiete pliki:<br /> '.$pominiete_pliki;
  51. echo '<hr> Pliki '.$nazwa_rozszerzenia.' maja lacznie linii kodu: <b>'.$linii_all.'</b>';
  52. echo ' / Plików '.$nazwa_rozszerzenia.': '.$liczba_plikow_liczonych.' / Plików pominietych: '.$liczba_plikow_pominietych.' / Wszystkich plików: '.$all_files;
  53.  
  54.  
  55. #-------------------------------------------------------------------------------------------------
  56.  
  57. function licznik_linii($katalog) {
  58.  global $linii_all, $pominiete_pliki, $liczba_plikow_liczonych, $liczba_plikow_pominietych, $nazwa_rozszerzenia;
  59.  static $linii;
  60.  
  61.  $dir = new DirectoryIterator($katalog);
  62.  
  63.  while($dir->valid()) {
  64.  
  65.    if(!$dir->isDot()) {
  66.      
  67.      $nazwa_pliku = $katalog.$dir->current();      
  68.      $nazwa_katalogu = $nazwa_pliku.'/';
  69.      
  70.      if(is_dir($nazwa_katalogu)) { // jesli jest katalogiem to otwórz i czytaj linie w plikach w nim zawartych
  71.        licznik_linii($nazwa_katalogu);
  72.      } else {
  73.        
  74.        // sprawdzenie czy plik ma dane rozeszezenie
  75.        $spr_php = strstr($nazwa_pliku, '.'.$nazwa_rozszerzenia);
  76.        
  77.        if($spr_php == '.'.$nazwa_rozszerzenia) {
  78.            
  79.          echo '<b>sciezka:</b> '.$nazwa_pliku.'<br />';
  80.          $liczba_linii = count(file($nazwa_pliku));
  81.                
  82.          echo 'linii w pliku: '.$liczba_linii.'<br /><br />';
  83.          $linii += $liczba_linii;
  84.          $linii_all = $linii;
  85.          
  86.          $liczba_plikow_liczonych++;        
  87.          
  88.        } else {
  89.          
  90.          $pominiete_pliki .= '<b>sciezka:</b> '.$nazwa_pliku.'<br />';
  91.          
  92.          $liczba_plikow_pominietych++;
  93.          
  94.        }
  95.        
  96.      }
  97.      
  98.        
  99.    }
  100.    
  101.    $dir->next();
  102.  }
  103.  
  104.  
  105. }
  106.  
  107. ?>
erix
Nie podoba mi się parę rzeczy:
Kod
global $linii_all, $pominiete_pliki, $liczba_plikow_liczonych, $liczba_plikow_pominietych, $nazwa_rozszerzenia;

Wiadomo, dlaczego. tongue.gif

Kod
$dir = new DirectoryIterator($katalog);

A słyszałeś o czymś takim, jak RecursiveDirectoryIterator? snitch.gif Połowa kodu będzie zbędna. winksmiley.jpg

Poza tym, proponowałbym angielskie nazwy zmiennych i metod.
gandziorz
Cytat(erix @ 7.12.2008, 01:01:45 ) *
Poza tym, proponowałbym angielskie nazwy zmiennych i metod.

Polacy nie gęsi i swój język mają!
phpion
Cytat(gandziorz @ 11.01.2009, 03:38:48 ) *
Polacy nie gęsi i swój język mają!

Kwestia przyjętego stadnardu kodowania. Ja zdecydowanie jestem za angielskimi nazwami dla funkcji/metod jak i dla samych zmiennych. Wprowadzenie polskich nazw zupełnie mi nie pasuje, szczególnie gdy powstają potworki typu getImie() - dlaczego mieszane są 2 konwencje językowe i dlaczego nie Imię?
Mize
Cytat(gandziorz @ 11.01.2009, 01:38:48 ) *
Polacy nie gęsi i swój język mają!


Okay, to teraz posadź do tego kodu obcokrajowca i zobaczymy czy będziesz taki zadowolony ze jego pracy. ;|
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.