Автор Тема: Подсчитаем...  (Прочитано 3482 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dolce0109

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.koulikov.cc/
Подсчитаем...
« : 30 Марта 2002, 03:35:25 »
Народ, вот есть у меня проект, на PHP ест-но... большуший, штук 100 файлов, куча поддирикторий, и тут в голову взбрело подсчитать сколько всего у меня строк кода... самому писать такой скрипт сейчас лень, может есть у кого уже?
--==(-_-)==--
____DOLCE____

Оффлайн Dolce0109

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.koulikov.cc/
Отвечать уже не надо, сам написал на досуге... вот файлик. Кладем в любую дир, запускаем, и узнаём скока строк занимает наш проект ;)


<?
<?
	
/******
	
* Считалка - Экспериментальный проект!
	

	
* Данный файл, при запуске из какой-либо дириктории выведет на
	
* экран броузера общее кол-ко 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 "
<bTOT: </b>" . $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 "Всего вы (а может и не вы) написали <b>" . $total . "</b> строчек кода!

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

";
	
echo "Этот подсчёт занял: " . stopTiming() . " секунд!";
?>
« Последнее редактирование: 30 Марта 2002, 05:31:21 от Dolce0109 »
--==(-_-)==--
____DOLCE____

Оффлайн Dolce0109

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.koulikov.cc/
ГГГ... у меня на локальном сервере 136 908 строк кода! гг
--==(-_-)==--
____DOLCE____

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Dolce0109
поздравляю! :)

ps. давайте не будем флеймить? ;)
с уважением,
магистр белой магии.

 

Sitemap 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