Forum Webscript.Ru

Программирование => PHP => Тема начата: Dolce0109 от 30 Марта 2002, 03:35:25

Название: Подсчитаем...
Отправлено: Dolce0109 от 30 Марта 2002, 03:35:25
Народ, вот есть у меня проект, на PHP ест-но... большуший, штук 100 файлов, куча поддирикторий, и тут в голову взбрело подсчитать сколько всего у меня строк кода... самому писать такой скрипт сейчас лень, может есть у кого уже?
Название: Рекурсивный подсчет общего количества строк кода
Отправлено: Dolce0109 от 30 Марта 2002, 04:38:20
Отвечать уже не надо, сам написал на досуге... вот файлик. Кладем в любую дир, запускаем, и узнаём скока строк занимает наш проект ;)


/******
* Считалка - Экспериментальный проект!
*
* Данный файл, при запуске из какой-либо дириктории выведет на
* экран броузера общее кол-ко PHP кода во всех файлах в этой
* дириктории и во всех поддирикториях!
*
* Автор: А. Куликов aka Dolce -- [email]alex@koulikov.cc[/email]
* Версия: 1.0
* Дата: 30.03.2002
***************/


/**
* _readDir() - считывает список всех поддирикторий, начиная от
* заданного пути.
*
* @param $path
* @return (array)
*/
function _readDir($path=""){
//echo "OPENING PATH :: " . $path . "
";
$dir_tree = array();

$d = dir($path);
while($entry = $d->read()){
if(!stristr($entry,\'.\')){
  $dir_tree[$entry] = $entry;
}
}

unset($dir_tree[\'templates\']);

$d->close();

return $dir_tree;
}


/**
* _readPHP() - считывает список всех PHP файлов из дириктории, заданой
* в параметре $path
*
* @param $path
* @return (array)
*/
function _readPHP($path=""){
$dir_tree = array();
$d = dir($path);
while(@$entry = $d->read()){
if(eregi(".php$",$entry)){
    array_push($dir_tree,$entry);
}
}
@$d->close();
return $dir_tree;
}


/**
* _readAll()  - давайте мыслить рекурсивно!
*
* @param $path
* @return (int)
*/
function _readAll($path=""){

if(is_dir($path)){
$initial = _readDir($path);
}

//are there subdirs?
if(count($initial)>0){
while(list($key,$val)=each($initial)){
if(strlen($path)>0){
$mypath = $path . "/" . $val;
}else{
$mypath = $val;
}
$overall = $overall + _readAll($mypath);
//echo $mypath . "
";
}
}

//read files
if(is_dir($path)){
$files = _readPHP($path);
}else{
$files = array();
}

while(list($key,$val)=each($files)){
//open each file and check how many lines of code it has
if(strlen($path)>0){
$mypath = $path . "/" . $val;
}else{
$mypath = $val;
}
$file = fopen($mypath, "r");
$rf = fread($file, 20000);
$temp = explode("\\n",$rf);
$tot = count($temp);
//echo "--" . $val . " : lines " . $tot . "
";
$overall = $overall + $tot;
fclose($file);
}
//echo " TOT: " . $overall;
return $overall;
}


/**
   * startTiming() - to start the timer for script execution
   *
   * @return void
*
* Version: 1.0  Date: 13.01.2002  Author: Koulikov Alexey
   */
  function startTiming(){
 global $startTime;
 $microtime = microtime();
 $microsecs = substr($microtime, 2, 8);
 $secs = substr($microtime, 11);
 $startTime = "$secs.$microsecs";
  }


/**
* stopTiming() - to stop the timer for script execution
*
* @return end time - float
*
* Version: 1.0  Date: 13.01.2002  Author: Koulikov Alexey
*/
function stopTiming(){
  global $startTime;

    $microtime = microtime();
    $microsecs = substr($microtime, 2, 8);
    $secs = substr($microtime, 11);
    $endTime = "$secs.$microsecs";
    $tottime = round(($endTime - $startTime),4);
return $tottime;
  }

//Запустим секундомер
  startTiming();

$total = _readAll();
switch ($total){
case ($total < 2500):{$status = \'Малютка\'; break;}
case ($total < 5000):{$status = \'Малышь\'; break;}
case ($total < 7500):{$status = \'Почти Середнячок\'; break;}
case ($total < 10000):{$status = \'Середнячок\'; break;}
case ($total < 20000):{$status = \'Крупнячок\'; break;}
case ($total < 30000):{$status = \'Здоровяк\'; break;}
case ($total < 40000):{$status = \'Гигант\'; break;}
default:{$status = \'Супер Гигант\'; break;}
}

echo "Всего вы (а может и не вы) написали " . $total . " строчек кода!

";
echo "По объективным оценкам, ваш проект - " . $status . "

";
echo "Этот подсчёт занял: " . stopTiming() . " секунд!";
?>
Название: Рекурсивный подсчет общего количества строк кода
Отправлено: Dolce0109 от 30 Марта 2002, 05:31:33
ГГГ... у меня на локальном сервере 136 908 строк кода! гг
Название: Рекурсивный подсчет общего количества строк кода
Отправлено: Dm от 30 Марта 2002, 05:50:02
Dolce0109
поздравляю! :)

ps. давайте не будем флеймить? ;)