Projektowanie stron WWW od podszewki
Losowy artykuł: Avast i "ochrona"

Artykuły na każdy temat

[PHP] Zliczanie linii kodu

Dodano 03.01.2017r. o 02:54
Jest to poniekąd nawiązanie do poprzedniego artykułu gdzie zajmowaliśmy się liczeniem jak i wyjmowaniem wszystkich komentarzy z projektu. Tym razem mamy dla odmiany liczenie linijek kodu jak i wagi plików. Gdyby ktoś miał bardzo duże pliki do przemielenia to polecam to lub to rozwiązanie.

Ogólnie można to rozbudować chociażby o takie rzeczy jak wyrażenia regularne odpowiedzialne za filtrowanie ścieżek czy też mapowanie (do tablicy/obiektu) każdego pliku z osobna celem dalszej analizy.
Kod:
<?php
$dir '../path_to_project/';
$prohibited_dirs = ['/libs/''/templates_c/'];
$allowed_extensions = ['php''js''json''tpl''css''txt'];
header('Content-Type: text/plain; charset=utf-8');

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirRecursiveIteratorIterator::SELF_FIRST FilesystemIterator::UNIX_PATHS)) as $file_info)
{
 if($file_info -> isDir() === true)
 {
  ++$statistics['general']['dirs'];
 }
 else
 {
  $path substr($file_info -> getPathname(), strlen($dir));

  if($path[0] !== '/')
  {
   $path '/'.$path;
  }

  foreach($prohibited_dirs as $prohibited_dir)
  {
   if(substr($path0strlen($prohibited_dir)) === $prohibited_dir)
   {
    $path null;
    break;
   }
  }

  if(in_array($file_info -> getExtension(), $allowed_extensions) === true && $path !== null)
  {
   ++$statistics['general']['designated_files'];
   $statistics['general']['filesize'] += filesize($file_info -> getPathname());
   $statistics['general']['amount_of_lines'] += count(file($file_info -> getPathname()));
  }

  ++$statistics['general']['files'];
 }
}

var_dump($statistics);
?>
A gdyby ktoś potrzebował szybko przeliczyć bajty na inne jednostki to w ramach bonusu dorzucam fragment klasy do debugowania.
Kod:
<?php
class debug
{
 static private $units = ['B''kB''MB''GB'];

 static private function convert($size)
 {
  $unit floor(log($size1024));

  return round($size pow(1024$unit), 2).' '.debug::$units[$unit];
 }
}
?>
Przypominam również, iż do zaawansowanych statystyk można wykorzystać narzędzia takie jak PHPDoc, CLOC lub PHPLOC.

Komentarze

Brak komentarzy

Dodaj komentarz

Zostaw komentarz jeżeli możesz! Nie bądź przysłowiowym botem! Nie bądź obojętny! Ciebie to nic nie kosztuje, a mi sprawi uśmiech na twarzy.
Zezwolono używać: BBCode
Zabroniono używać:
znaczników HTML

(Wymagany)

(Wymagany, niepublikowany)

(Nie wymagana)

Token:

Obrazek dla bota

(Przepisz tylko cyfry!)

(Wymagana)