Перейти к основному содержанию

mt-howmany: подсчёт количества символов, строк, печатных страниц исходного кода проекта

Опубликовано mishutka -

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

Наша цель была понять, сколько кода для проекта написала именно наша команда. И ещё мы хотели понимать количество символов, строк и примерное количество печатных страниц исходных кодов. Вот так и родился этот мини-проект, чтобы получить ответы на эти вопросы.

mt-howmany - основанная на composer утилита командной строки. Устанавливается она как обычный composer-пакет в качестве зависимости:

composer require mitoteam/mt-howmany

Более подробно процесс установки и использование программы описаны на странице проекта на GitHub.

Поддерживаются как UNIX-совместимые ОС, так и Windows OS. Все пути в конфигурационных файлах задаются относительно рабочей директории, разделители директорий в путях автоматически трансформируются с UNIX-/ на Windows-\ при необходимости.

Мультибайтовые строки Unicode обрабатываются при помощи пакета symfony/string для корректного подсчёта количества символов. Утилита поддерживает исключение файлов из сканирования как по расширению, так и по пути к файлу (через регулярные выражения).Также в конфигах можно указать свои собственные значения для количества символов и количества строк для оценки количества печатных страниц.

Конфигурационные файлы пишутся в формате YAML. Есть возможность разбить конфигурацию на несколько файлов. Например мы используем эту возможность для того, чтобы общую часть конфигурации хранить в общем репозитории, а для каждого конкретного проекта - дополнительную конфигурацию уже только для него.

Пример работы программы для исходников проекта binardo:

mt-howmany by MiTo Team
=======================

Working directory: /www/binardo.mt.test
Config file loaded: /www/binardo.mt.test/web/modules/custom/mtlapbase/mt-howmany.common.yml
Config file loaded: /www/binardo.mt.test/mt-howmany.yml

Results by file extension
=========================

 ----------- -------- ------------ ------------- -------
  Type        Size     Characters   Files Count   Lines
 ----------- -------- ------------ ------------- -------
  php         777Kb    782756       174           32225
  twig        50.0Kb   51145        26            1471
  scss        29.8Kb   30464        47            1886
  js          17.1Kb   17276        11            637
  yml         15.5Kb   15767        18            621
  sh          9.59Kb   9816         11            348
  po          3.69Kb   2965         1             164
  json        3.27Kb   3344         4             127
  module      3.10Kb   3176         2             131
  theme       3.06Kb   3133         2             123
  gitignore   2.23Kb   2280         2             82
  md          2.08Kb   1323         6             38
  txt         139      139          1             8
  htaccess    38       38           2             4
 ----------- -------- ------------ ------------- -------

Totals
======

Types count: 14
Paths count: 67
Files count: 307
Size: 916Kb
Characters: 923622
Lines: 37865
Pages by Characters: 257
Pages by Lines: 1052
  • Страница проекта: mt-howmany
  • GitHub: GitHub Version