Подсчёт числа строк в программном проекте

Функция предназначена для подсчёта числа строк в программных проектах, состоящих из множества вложенных директорий. Конечно, число строк не может свидетельствовать в полной мере о затраченных усилиях и времени на программный проект, но является важным показателем в оценке сложности проекта.

Код рекурсивной фукнции scan_dir, которая обходит директории


<?php

  
////////////////////////////////////////////////////////// 

  // Рекурсивная функция - спускаемся вниз по каталогу 

  ////////////////////////////////////////////////////////// 

  
function scan_dir($dirname

  { 

    
// Объявляем переменные замены глобальными

    
GLOBAL $extentions$count;

    
// Открываем текущую директорию 

    
$dir opendir($dirname); 

    
// Читаем в цикле директорию 

    
while (($file readdir($dir)) !== false

    { 

      
// Если файл обрабатываем его содержимое 

      
if($file != "." && $file != ".."

      { 

        
// Если имеем дело с файлом - производим в нём замену

        
if(is_file($dirname."/".$file)) 

        { 

          
// Извлекаем из имени файла расширение

          
$ext strrchr($dirname."/".$file"."); 

          foreach(
$extentions as $exten)

          if(
preg_match($exten$ext))

          {

            
// Читаем содержимое файла

            
$content file($dirname."/".$file); 

            
// Подсчтываем число файлов

            
$count += count($content);

            
// Удаляем массив

            
unset($content);

          }

        } 

        
// Если перед нами директория, вызываем рекурсивно 

        // функцию scan_dir 

        
if(is_dir($dirname."/".$file)) 

        { 

          
scan_dir($dirname."/".$file); 

        } 

      } 

    } 

    
// Закрываем директорию 

    
closedir($dir); 

  } 

?>

Воспользоваться результатами можно при помощи следующего кода

Код вызова функции scan_dir()


<?php

  
// Имя корневой директории проекта

  
$dirname "softtime"

  
// Массив с расширениями файлов, для которых следует подсчитывать

  // число строк

  
$extentions = array("#\.php#i"); 

  
// $extentions = array("#\.cpp#i","#\.h#i");

  // Счётчик строк - глобальная переменная

  
$count 0;

  
// Вызов функции, осуществляющей рекурсивный спуск по подкаталогам

  // корневого каталога

  
scan_dir($dirname);

  
// Записываем число строк в переменную $count

  
file_put_contents("test",$count);

?>
 
« Предыдущая статья   Следующая статья »