Все ленты — последние статьи

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

Автор: IT-студия SoftTime (softtime.ru)

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

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

?>