Считает количество строк php

количество строк в проекте PHP

В операционной системе POSIX (например, Linux или OS X) вы можете записать следующее в оболочку Bash:

Это будет считать строки во всех php файлах в текущем каталоге, а также в подкаталогах. (Обратите внимание, что эти одиночные «кавычки» являются обратными, а не действительными одинарными кавычками)

И если вы работаете в Windows, вы можете загрузить и установить Cygwin и сделать то же самое. Так как Mac теперь работает поверх операционной системы BSD, я считаю это окончательным ответом.

Имейте в виду, что если у вас есть много файлов шаблонов PHP и / или других файлов PHP со смешанным кодом PHP / HTML, это не исключает только строки HTML.

К сожалению, это не работает для Drupal и других проектов, которые используют различные расширения для кода PHP, такие как .module, .inc и другие

Я сделал себе небольшой script, чтобы сделать это в одном из моих проектов. Просто используйте следующий код на php-странице в корне вашего проекта. script выполнит рекурсивную проверку вложенных папок.

[email protected] */ $fileCounter = array(); $totalLines = countLines('.', $fileCounter); echo $totalLines." lines in the current folder
"; echo $totalLines - $fileCounter['gen']['commentedLines'] - $fileCounter['gen']['blankLines'] ." actual lines of code (not a comment or blank line)

"; foreach($fileCounter['gen'] as $key=>$val) < echo ucfirst($key).":".$val."
"; > echo "
"; foreach($fileCounter as $key=>$val) < if(!is_array($val)) echo strtoupper($key).":".$val." file(s)
"; > function countLines($dir, &$fileCounter) < $_allowedFileTypes = "(html|htm|phtml|php|js|css|ini)"; $lineCounter = 0; $dirHandle = opendir($dir); $path = realpath($dir); $nextLineIsComment = false; if($dirHandle) < while(false !== ($file = readdir($dirHandle))) < if(is_dir($path."/".$file) && ($file !== '.' && $file !== '..')) < $lineCounter += countLines($path."/".$file, $fileCounter); >elseif($file !== '.' && $file !== '..') < //Check if we have a valid file $ext = _findExtension($file); if(preg_match("/".$_allowedFileTypes."$/i", $ext)) < $realFile = realpath($path)."/".$file; $fileHandle = fopen($realFile, 'r'); $fileArray = file($realFile); //Check content of file: for($i=0; $i> else < //Look for a function if(strpos($fileArray[$i], 'function')) < $fileCounter['gen']['functions']++; >//Look for a commented line if(strpos($fileArray[$i], '//')) < $fileCounter['gen']['commentedLines']++; >//Look for a class if(substr(trim($fileArray[$i]), 0, 5) == 'class') < $fileCounter['gen']['classes']++; >//Look for a comment block if(strpos($fileArray[$i], '/*')) < $nextLineIsComment = true; $fileCounter['gen']['commentedLines']++; $fileCounter['gen']['commentBlocks']++; >//Look for a blank line if(trim($fileArray[$i]) == '') < $fileCounter['gen']['blankLines']++; >> > $lineCounter += count($fileArray); > //Add to the files counter $fileCounter['gen']['totalFiles']++; $fileCounter[strtolower($ext)]++; > > > else echo 'Could not enter folder'; return $lineCounter; > function _findExtension($filename) < $filename = strtolower($filename) ; $exts = split("[/\\.]", $filename) ; $n = count($exts)-1; $exts = $exts[$n]; return $exts; >

Я серьезно отредактировал этот фрагмент кода и разместил его на github. Он исправляет все предупреждения и позволяет исключить каталоги во время подсчета. raw.githubusercontent.com/danielson317/php-code-stats/master/.

Читайте также:  Python pil рисование фигур

SLOCCount — это отличный инструмент, который создает отчет о количестве строк для большого количества языков. Он также идет дальше, производя другую связанную статистику, такую ​​как ожидаемая стоимость разработчика.

$ sloccount . Creating filelist for experimental Creating filelist for prototype Categorizing files. Finding a working MD5 command. Found a working MD5 command. Computing results. SLOC Directory SLOC-by-Language (Sorted) 10965 experimental cpp=5116,ansic=4976,python=873 832 prototype cpp=518,tcl=314 Totals grouped by language (dominant language first): cpp: 5634 (47.76%) ansic: 4976 (42.18%) python: 873 (7.40%) tcl: 314 (2.66%) Total Physical Source Lines of Code (SLOC) = 11,797 Development Effort Estimate, Person-Years (Person-Months) = 2.67 (32.03) (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05)) Schedule Estimate, Years (Months) = 0.78 (9.33) (Basic COCOMO model, Months = 2.5 * (person-months**0.38)) Estimated Average Number of Developers (Effort/Schedule) = 3.43 Total Estimated Cost to Develop = $ 360,580 (average salary = $56,286/year, overhead = 2.40). SLOCCount, Copyright (C) 2001-2004 David A. Wheeler SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL. SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to redistribute it under certain conditions as specified by the GNU GPL license; see the documentation for details. Please credit this data as "generated using David A. Wheeler 'SLOCCount'." 

К сожалению, SLOCCount немного длиннее в зубе и боль в шее для проектов PHP, особенно те, у которых есть вложенный каталог vendor , который вы не хотите считать. Кроме того, он выдает предупреждение для каждого файла PHP, у которого нет закрывающего тега (который должен быть всем из них, если вы не смешиваете HTML и PHP).

CLOC — это более современная альтернатива, которая делает все (редактировать: почти все) SLOCCount делает, но также поддерживает —exclude-dir и он не страдает от вышеупомянутой проблемы с тегами. Он также испускает базу данных SQLite, из которой вы можете извлечь некоторые довольно продвинутые показатели.

Я просто искал оценки времени / стоимости / человека, и я не смог найти ни одной опции на странице руководства, которая их возвращает.

Источник

Все способы, как определить количество строк в MySQL

От автора: один мой знакомый утверждает, что Дед Мороз существует. В него он поверил после того, как его младшему сыну на Новый Год подарили 10 кг шоколадных конфет. Теперь на следующий год придется у Деда Мороза просить пломбы для всех членов семьи! К счастью в веб-программировании можно перестраховаться от таких неожиданностей, и определить количество строк в MySQL заранее.

Зачем знать сколько?

Любая таблица состоит из столбцов и строк. Объем хранящихся в базе данных зависит от того, сколько строк содержится в каждой ее таблице.

Подобно тому, как число дырок в зубах человека зависит от съеденного ранее объема конфет. Точнее, от общего веса сладостей, которым «одарили» вашего ребенка на Новый Год :).

Понятно, что от большого числа строк в базе MySQL пломб во рту не прибавится, но все же знание этого параметра может понадобиться при оптимизации работы вашего сайта, для запуска некоторых скриптов и т.д.

Легко!

Для получения в MySQL количества строк не обязательно «кумекать» в составлении SQL-запросов. Достаточно просто открыть в программной оболочке нужную таблицу и посмотреть id последней строки. Именно этот столбец чаще всего используют в качестве уникального ключа, и его значение генерируется автоматически (автоинкремент) путем приращения единицы(+1) к предыдущему.

PHP-разработчик с нуля

Курс «PHP-разработчик с нуля»

— Научитесь создавать сайты и веб-приложения на языке PHP.

— Изучите актуальные фреймворки Laravel, Simfony и Yii2.

— 78 часов теории и 361 час практики.

— Вы создадите 5 масштабных проектов для портфолио.

— Помощь с поиском работы или стажировки.

SQL и получение данных

Курс «SQL и получение данных»

— Освоите один из основных инструментов работы с данными.

— 20 часов теории, 32 часа практики.

— Видеолекции, вебинары, практические задания и тренажёр.

— Выполните 6 домашних работ и итоговый проект.

— Помощь с поиском работы или стажировки.

Курс веб-разработчик с нуля

Курс «веб-разработчик с нуля»

— Научитесь программировать на JavaScript и PHP.

— Сможете создавать сайты и веб-приложения.

— Сможете уверенно работать и с фронтендом, и с бэкендом веб-сервисов.

— Выполните 9 масштабных проектов для портфолио

— Помощь с поиском работы или стажировки.

Чтобы доказать эту «аксиому», откроем в phpMyAdmin таблицу любой БД. Например, таблицу animal. Как видно на скриншоте, значение столбца id идет по порядку, от 1 до.… Так, отставить! А куда убежал котяра с «идентификационным номером» 4? Наверное, опять «собачек» под номерами 5 и 6 испугался 🙂

В этой базе MySQL количество строк в таблице можно просто посчитать «на пальцах». Но что делать, если в таблице не 7 строк, а несколько сотен? Например, как в этой.

И это лишь одна из восьми страниц выборки. На самом деле число записей может исчисляться не только сотнями, но и тысячами. Вдобавок здесь нет столбца id, потому что он не является обязательным. Его наличие зависит от структуры всей БД, поскольку в ней значения всех строк взаимосвязаны между собой. Получается, что описанный выше метод подсчета строк MySQL не всегда действует.

Несколько правильных методов

Как говорится, первый метод «комом», поэтому рассмотрим несколько более эффективных и менее «простых» способов:

Функция COUNT() – возвращает число строк. Является встроенной функцией SQL. Все таки давайте узнаем, количество записей большой таблицы из БД, скриншот которой приведен выше. Код запроса:

Оказывается в таблице country целых 239 записей! Понятно, что для их подсчета не хватит пальцев ни на руках, ни на ногах (если не использовать конечности других людей или животных)). Как видите, этот способ в MySQL подсчета количества строк работает намного точнее и чаще всего используется профессионалами.

Но эта функция умеет не только это! Например, с ее помощью можно узнать, сколько из «представленных» в БД стран находятся в Европе:

А еще, сколько раз каждая страна упоминается в таблице. Пример запроса:

С помощью этого запроса мы узнали количество строк в MySQL, в которых упоминается каждая из стран. Из результатов его выполнения видно, что по одному разу.

Чуть не забыл! Если у вас еще нет в наличии базы world, с которой мы сегодня работаем, то ее можно скачать по этой ссылке с официального сайта разработчиков СУБД MySQL. После скачивания архив с ней нужно разархивировать и затем импортировать не сервер БД. В phpMyAdmin это можно сделать через пункт основного меню «Импорт».

Более подробно об этой процедуре я рассказывал в одном из предыдущих материалов.

Функция MAX() – в некоторых случаях она также позволяет в MySQL узнать количество строк в таблице. Почему иногда? Сейчас объясню. Помните первый способ подсчета, который мы рассмотрели в начале. Он подразумевает, что самое большое значение столбца id равно числу записей. Применение данной функции является своего рода «автоматизацией» того метода. MAX() возвращает максимальное значение указанного столбца (id). Для тестирования функции мы будет использовать таблицу city, которая также входит в состав базы world. Код запроса:

Источник

count

Подсчитывает все элементы в массиве при использовании с массивом. При использовании с объектом, реализующим интерфейс Countable , он возвращает возвращаемое значение метода Countable :: count () .

Parameters

Если необязательный параметр mode установлен в COUNT_RECURSIVE (или 1), count () будет рекурсивно подсчитывать массив. Это особенно полезно для подсчета всех элементов многомерного массива.

count () может обнаруживать рекурсию, чтобы избежать бесконечного цикла, но будет E_WARNING каждый раз (в случае, если массив содержит себя более одного раза) и возвращать счетчик больше, чем можно было ожидать.

Return Values

Возвращает количество элементов в value . До PHP 8.0.0, если параметр не был ни массивом , ни объект , который реализует счетные интерфейс, 1 будет возвращено, если value не было null , и в этом случае 0 будет возвращено.

Changelog

Version Description
8.0.0 count () теперь будет вызывать TypeError для недопустимых счетных типов, переданных в параметр value .
7.2.0 count () теперь будет выдавать предупреждение о недопустимых счетных типах, переданных в параметр value .

Examples

Пример # 1 отсчет () Пример

 $a[0] = 1; $a[1] = 3; $a[2] = 5; var_dump(count($a)); $b[0] = 7; $b[5] = 9; $b[10] = 11; var_dump(count($b)); ?>

Выводится приведенный выше пример:

Пример # 2 count () non Countable | пример массива (плохой пример — не делайте этого)

 $b[0] = 7; $b[5] = 9; $b[10] = 11; var_dump(count($b)); var_dump(count(null)); var_dump(count(false)); ?>

Выводится приведенный выше пример:

Вывод приведенного выше примера в PHP 7.2:

int(3) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 12 int(0) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 14 int(1)

Вывод приведенного выше примера в PHP 8:

int(3) Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12 

Пример # 3 Рекурсивный подсчет () Пример

 $food = array('fruits' => array('orange', 'banana', 'apple'), 'veggie' => array('carrot', 'collard', 'pea')); // recursive count var_dump(count($food, COUNT_RECURSIVE)); // normal count var_dump(count($food)); ?>

Выводится приведенный выше пример:

Пример # 4 Счетный объект

 class CountOfMethods implements Countable < private function someMethod( ) < >public function count( ): int < return count(get_class_methods($this)); > > $obj = new CountOfMethods(); var_dump(count($obj)); ?>

Выводится приведенный выше пример:

See Also

  • is_array () — Проверяет , является ли переменная массивом
  • isset () — определяет, объявлена ​​ли переменная и отличается от нуля
  • empty () — определяет, пуста ли переменная
  • strlen () — получает длину строки
  • is_countable () — Проверяет, что содержимое переменной является счетным значением
  • Arrays
PHP 8.2

(PHP 4 4.1.0,5,7,8)cosh Гиперболический косинус Возвращает гиперболический косинус числа num,определяемый как (exp(arg)exp(-arg))/2.

(PHP 4,5,7,8)count_chars Возвращает информацию об использованных символах string Подсчитывает количество вхождений каждого байта-значения (0..255)в строке и возвращает

(PHP 4 4.0.1,5,7,8)crc32 Вычисляет полином строки Генерирует полином контрольной суммы циклической избыточности строки 32-битной длины.

Источник

Оцените статью