02.12.2022

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

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

Код рекурсивной фукнции 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);
?>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *