Forum Webscript.Ru
Программирование => PHP => Тема начата: Dolce0109 от 30 Марта 2002, 03:35:25
-
Народ, вот есть у меня проект, на PHP ест-но... большуший, штук 100 файлов, куча поддирикторий, и тут в голову взбрело подсчитать сколько всего у меня строк кода... самому писать такой скрипт сейчас лень, может есть у кого уже?
-
Отвечать уже не надо, сам написал на досуге... вот файлик. Кладем в любую дир, запускаем, и узнаём скока строк занимает наш проект ;)
/******
* Считалка - Экспериментальный проект!
*
* Данный файл, при запуске из какой-либо дириктории выведет на
* экран броузера общее кол-ко 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() . " секунд!";
?>
-
ГГГ... у меня на локальном сервере 136 908 строк кода! гг
-
Dolce0109
поздравляю! :)
ps. давайте не будем флеймить? ;)