Подсчитайте строки кода
cloc подсчитывает пустые строки, строки комментариев и физические строки исходного кода во многих языках программирования.
Последний выпуск: v2.02 (2 августа 2024 г.)
cloc переехал на GitHub в сентябре 2015 года после того, как с августа 2006 года он размещался на http://cloc.sourceforge.net/.
Шаг 1. Загрузите cloc (несколько способов, см. ниже) или запустите образ docker cloc. Исполняемый файл Windows не имеет никаких требований. Исходная версия cloc требует интерпретатора Perl, а версия cloc для Docker требует установки Docker.
Шаг 2. Откройте терминал ( cmd.exe
в Windows).
Шаг 3. Вызовите cloc для подсчета исходных файлов, каталогов, архивов или коммитов git. Имя исполняемого файла различается в зависимости от того, используете ли вы исходную версию разработки ( cloc
), исходный код выпущенной версии ( cloc-2.02.pl
) или исполняемый файл Windows ( cloc-2.02.exe
).
На этой странице cloc
— это общий термин, используемый для обозначения любого из них.
У Include Security есть видео на YouTube, показывающее шаги в действии.
файл
подсказка> cloc hello.c 1 текстовый файл. 1 уникальный файл. 0 файлов игнорируются. https://github.com/AlDanial/cloc v 1,65 T=0,04 с (28,3 файла/с, 340,0 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- С 1 0 7 5 -------------------------------------------------- -----------------------------
каталог
подсказка> такт gcc-5.2.0/gcc/c 16 текстовых файлов. 15 уникальных файлов. 3 файла проигнорированы. https://github.com/AlDanial/cloc v 1,65 T=0,23 с (57,1 файлов/с, 188914,0 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- С 10 4680 6621 30812 Заголовок C/C++ 3 99 286 496 -------------------------------------------------- ----------------------------- СУММА: 13 4779 6907 31308 -------------------------------------------------- -----------------------------
архив
Мы возьмем исходный zip-файл Cloc с GitHub, затем посчитаем содержимое:
подсказка> wget https://github.com/AlDanial/cloc/archive/master.zip подсказка> cloc master.zip https://github.com/AlDanial/cloc v 1,65 T=0,07 с (26,8 файлов/с, 141370,3 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- Перл 2 725 1103 8713 -------------------------------------------------- ----------------------------- СУММА: 2 725 1103 8713 -------------------------------------------------- -----------------------------
репозиторий git, используя определенный коммит
В этом примере используется код PuDB, фантастического отладчика Python.
подсказка> git clone https://github.com/inducer/pudb.git подсказка> cd pubb подсказка> такт 6be804e07a5db 48 текстовых файлов. 41 уникальный файл. 8 файлов проигнорированы. github.com/AlDanial/cloc v 1,99 T=0,04 с (1054,9 файлов/с, 189646,8 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- Питон 28 1519 728 4659 реструктурированныйтекст 6 102 20 203 ЯМЛ 2 9 2 75 Борн Шелл 3 6 0 17 Текст 1 0 0 11 сделать 1 4 6 10 -------------------------------------------------- ----------------------------- СУММА: 41 1640 756 4975 -------------------------------------------------- -----------------------------
каждый подкаталог определенного каталога
Предположим, у вас есть каталог с тремя разными проектами, управляемыми git: Project0, Project1 и Project2. Вы можете использовать возможности цикла вашей оболочки для подсчета кода в каждом из них. В этом примере используется bash (прокрутите вниз, чтобы увидеть пример cmd.exe):
подсказка> для d в ./*/ ; do (cd "$d" && echo "$d" && cloc --vcs git); сделанный ./Проект0/ 7 текстовых файлов. 7 уникальных файлов. 1 файл проигнорирован. github.com/AlDanial/cloc v 1,71 T=0,02 с (390,2 файлов/с, 25687,6 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- Д 4 61 32 251 Уценка 1 9 0 38 сделать 1 0 0 4 -------------------------------------------------- ----------------------------- СУММА: 6 70 32 293 -------------------------------------------------- ----------------------------- ./Проект1/ 7 текстовых файлов. 7 уникальных файлов. 0 файлов игнорируются. github.com/AlDanial/cloc v 1,71 T=0,02 с (293,0 файлов/с, 52107,1 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- Перейти 7 165 282 798 -------------------------------------------------- ----------------------------- СУММА: 7 165 282 798 -------------------------------------------------- ----------------------------- ./Проект2/ 49 текстовых файлов. 47 уникальных файлов. 13 файлов проигнорированы. github.com/AlDanial/cloc v 1,71 T=0,10 с (399,5 файлов/с, 70409,4 строк/с) -------------------------------------------------- ----------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- ----------------------------- Питон 33 1226 1026 3017 С 4 327 337 888 Уценка 1 11 0 28 ЯМЛ 1 0 2 12 -------------------------------------------------- ----------------------------- СУММА: 39 1564 1365 3945 -------------------------------------------------- -----------------------------
каждый подкаталог определенного каталога (Windows/cmd.exe)
для /D %I в (.*) do cd %I && cloc --vcs git && cd ..
cloc подсчитывает пустые строки, строки комментариев и физические строки исходного кода во многих языках программирования. Имея две версии базы кода, cloc может вычислить различия в пустых строках, строках комментариев и исходных строках. Он полностью написан на Perl, без каких-либо зависимостей за пределами стандартного дистрибутива Perl v5.6 и выше (код некоторых внешних модулей встроен в cloc), поэтому он вполне переносим. Известно, что cloc работает во многих вариантах Linux, FreeBSD, NetBSD, OpenBSD, macOS, AIX, HP-UX, Solaris, IRIX, z/OS и Windows. (Для запуска исходной версии cloc на Perl в Windows требуется ActiveState Perl 5.6.1 или выше, Strawberry Perl, подсистема Windows для Linux, Cygwin, MobaXTerm с установленным подключаемым модулем Perl или среда и терминал mingw, например, предоставленные Git для Windows В качестве альтернативы можно использовать двоичный файл cloc для Windows, созданный с помощью PAR::Packer, для запуска на компьютерах Windows, на которых нет ни Perl, ни Cygwin.)
Помимо подсчета кода в отдельных текстовых файлах, каталогах и репозиториях git, cloc также может подсчитывать код в архивных файлах, таких как .tar
(включая сжатые версии), .zip
, Python Wheel .whl
, Jupyter Notebook .ipynb
, исходные RPM-файлы .rpm
или .src
(требуется rpm2cpio
) и файлы Debian .deb
(требуется dpkg-deb
).
cloc содержит код из SLOCCount Дэвида Уилера, Perl-модуля Дамиана Конвея и Эбигейл Regexp::Common, Perl-модуля Шона М. Бёрка Win32::Autoglob и Perl-модуля Тая МакКуина Algorithm::Diff. Коэффициенты языковой шкалы были получены с веб-сайта Mayes Consulting, LLC http://softwareestimator.com/IndustryData2.htm.
Новые выпуски номинально появляются каждые шесть месяцев.
docker run --rm -v $PWD :/tmp aldanial/cloc
docker run --rm -v " / $( pwd -W ) " :/tmp aldanial/cloc
В зависимости от вашей операционной системы вам может подойти один из этих методов установки (все, кроме двух последних пунктов для Windows, требуют интерпретатора Perl):
npm install -g cloc # https://www.npmjs.com/package/cloc
sudo apt install cloc # Debian, Ubuntu
sudo yum install cloc # Red Hat, Fedora
sudo dnf install cloc # Fedora 22 or later
sudo pacman -S cloc # Arch
sudo emerge -av dev-util/cloc # Gentoo https://packages.gentoo.org/packages/dev-util/cloc
sudo apk add cloc # Alpine Linux
doas pkg_add cloc # OpenBSD
sudo pkg install cloc # FreeBSD
sudo port install cloc # macOS with MacPorts
brew install cloc # macOS with Homebrew
winget install AlDanial.Cloc # Windows with winget
choco install cloc # Windows with Chocolatey
scoop install cloc # Windows with Scoop
Примечание . Я не контролирую ни один из этих пакетов. Если вы столкнулись с ошибкой в cloc при использовании одного из вышеперечисленных пакетов, попробуйте использовать cloc из последней стабильной версии здесь, на GitHub (ссылка приведена ниже), прежде чем отправлять отчет о проблеме.
https://github.com/AlDanial/cloc/releases/latest
https://github.com/AlDanial/cloc/raw/master/cloc
cloc распространяется по лицензии GNU General Public License, v 2, за исключением частей, скопированных из других источников. На код, скопированный из модулей Perl Regexp::Common, Win32::Autoglob и Algorithm::Diff, распространяется действие Художественной лицензии.
cloc имеет множество функций, которые делают его простым в использовании, детальным, расширяемым и портативным:
Если clockc не соответствует вашим потребностям, обратите внимание на другие свободно доступные счетчики:
Другие ссылки:
Хотя cloc не нуждается в модулях Perl, кроме тех, которые входят в стандартный дистрибутив, cloc полагается на несколько внешних модулей. Код трех таких внешних модулей — Regexp::Common, Win32::Autoglob и Algorithm::Diff — встроен в cloc. Четвертый модуль, Digest::MD5, используется только в том случае, если он доступен. Если cloc обнаружит, что Regexp::Common или Algorithm::Diff установлены локально, он будет использовать эти установки. Если этого не произойдет, cloc установит части Regexp::Common и/или Algorithm:Diff, необходимые ему во временные каталоги, которые создаются в начале запуска cloc, а затем удаляются по завершении запуска. Необходимый код из Regexp::Common v2.120 и Algorithm::Diff v1.1902 встроен в исходный код cloc (см. подпрограммы Install_Regexp_Common()
и Install_Algorithm_Diff()
). Из Win32::Autoglob нужны всего три строки, и они включаются непосредственно в cloc.
Кроме того, cloc будет использовать Digest::MD5 для проверки уникальности входных файлов одинакового размера, если Digest::MD5 установлен локально.
Опция параллельной обработки --processes= N была представлена в cloc версии 1.76 для обеспечения более быстрой работы на многоядерных машинах. Однако для его использования необходимо установить модуль Parallel::ForkManager. Этот модуль не работает надежно в Windows, поэтому параллельная обработка будет работать только в Unix-подобных операционных системах.
Бинарный файл Windows создается на компьютере, на котором локально установлены Regexp::Common и Digest::MD5.
Самый надежный вариант создания исполняемого файла cloc для Windows — использовать Perl Development Kit от ActiveState. Он включает в себя утилиту perlapp
, которая может создавать автономные двоичные файлы исходного кода Perl для Windows, Mac и Linux.
perl2exe также поможет. Если у вас есть perl2exe
, измените строки 84-87 в исходном коде Cloc для незначительной модификации кода, необходимой для создания исполняемого файла Cloc для Windows.
В противном случае, чтобы создать исполняемый файл Windows с помощью pp
из PAR::Packer
, сначала установите дистрибутив Perl для Windows (например, Strawberry Perl или ActivePerl), следуя их инструкциям. Затем откройте командную строку, то есть окно DOS, и установите модуль PAR::Packer. Наконец, вызовите недавно установленную команду pp
с исходным кодом cloc, чтобы создать файл .exe
:
C:> cpan -i Дайджест::MD5 C:> cpan -i Regexp::Common C:> cpan -i Алгоритм::Diff C:> cpan -i PAR::Packer C:> cpan -i Win32::LongPath C:> pp -M Win32::LongPath -M Encode::Unicode -M Digest::MD5 -c -x -o cloc-2.02.exe cloc-2.02.pl
Вариант приведенных выше инструкций: если вы установили портативную версию Strawberry Perl, вам нужно будет сначала запустить portableshell.bat
, чтобы правильно настроить среду.
Исполняемый файл Windows в разделе «Релизы», cloc-2.02.exe , был создан на 64-разрядном компьютере с Windows 10 с использованием Strawberry Perl 5.30.2 и PAR::Packer для сборки .exe
.
В идеале никому не нужен исполняемый файл Windows, поскольку на их компьютерах установлен интерпретатор Perl, и они могут запускать исходный файл cloc. Однако на корпоративных машинах Windows с централизованным управлением это может быть затруднительно или невозможно.
Исполняемый файл Windows, распространяемый вместе с cloc, представляет собой лучший вариант .exe
не содержащего вирусов и вредоносных программ. Вам рекомендуется запустить собственные антивирусные сканеры для исполняемого файла, а также проверить такие сайты, как https://www.virustotal.com/. Записи для последних версий:
cloc-2.02-winget.exe: (включает PR 850 для разрешения запуска по символической ссылке в Windows) https://www.virustotal.com/gui/file/be033061e091fea48a5bc9e8964cee0416ddd5b34bd5226a1c9aa4b30bdba66a?nocache=1
cloc-2.02.exe: https://www.virustotal.com/gui/file/369ed76125f7399cd582d169adf39a2e08ae5066031fea0cc8b2836ea50e7ce2?nocache=1
cloc-2.00.exe: https://www.virustotal.com/gui/file/7a234ef0cb495de1b5776acf88c5554e2bab1fb02725a5fb85756a6db3121c1f
cloc-1.98.exe: https://www.virustotal.com/gui/file/88615d193ec8c06f7ceec3cc1d661088af997798d87ddff331d9e9f9128a6782?nocache=1
cloc-1.96.1.exe: https://www.virustotal.com/gui/file/00b1c9dbbfb920dabd374418e1b86d2c24b8cd2b8705aeb956dee910d0d75d45?nocache=1
cloc-1.96.exe: https://www.virustotal.com/gui/file/54bf5f46fbaba7949c4eb2d4837b03c774c0ba587448a5bad9b8efc0222b1583?nocache=1
cloc-1.94.exe: https://www.virustotal.com/gui/file/b48a6002fb75fa66ec5d0c05a5c4d51f2ad22b5b025b7eb4e3945d18419c0952?nocache=1
cloc-1.92.exe: https://www.virustotal.com/gui/file/2668fcf8609c431e8934fe9e1866bc620c58d198c4eb262f1d3ef31ef4a690f7
cloc-1.90.exe: https://www.virustotal.com/gui/file/d655caae55486f9bac39f7e3c7b7553bcfcfe2b88914c79bfc328055f22b8a37/detection
cloc-1.88.exe: https://www.virustotal.com/gui/file/97d5d2631d1cccdbfd99267ab8a4cf5968816bbe52c0f9324e72e768857f642d/detection
cloc-1.86.exe: https://www.virustotal.com/gui/file/1b2e189df1834411b34534db446330d1c379b4bc008af3042ee9ade818c6a1c8/detection
cloc-1.84.exe: https://www.virustotal.com/gui/file/e73d490c1e4ae2f50ee174005614029b4fa2610dcb76988714839d7be68479af/detection
cloc-1.82.exe: https://www.virustotal.com/#/file/2e5fb443fdefd776d7b6b136a25e5ee2048991e735042897dbd0bf92efb16563/detection
cloc-1.80.exe: https://www.virustotal.com/#/file/9e547b01c946aa818ffad43b9ebaf05d3da08ed6ca876ef2b6847be3bf1cf8be/detection
cloc-1.78.exe: https://www.virustotal.com/#/file/256ade3df82fa92febf2553853ed1106d96c604794606e86efd00d55664dd44f/detection
cloc-1.76.exe: https://www.virustotal.com/#/url/c1b9b9fe909f91429f95d41e9a9928ab7c58b21351b3acd4249def2a61acd39d/detection
cloc-1.74_x86.exe: https://www.virustotal.com/#/file/b73dece71f6d3199d90d55db53a588e1393c8dbf84231a7e1be2ce3c5a0ec75b/detection
cloc 1.72 exe: https://www.virustotal.com/en/url/8fd2af5cd972f648d7a2d7917bc202492012484c3a6f0b48c8fd60a8d395c98c/anaанализ/
cloc 1.70 exe: https://www.virustotal.com/en/url/63edef209099a93aa0be1a220dc7c4c7ed045064d801e6d5daa84ee624fc0b4a/anaанализ/
cloc 1.68 exe: https://www.virustotal.com/en/file/c484fc58615fc3b0d5569b9063ec1532980281c3155e4a19099b11ef1c24443b/anaанализ/
cloc 1.66 exe: https://www.virustotal.com/en/file/54d6662e59b04be793dd10fa5e5edf7747cf0c0cc32f71eb67a3cf8e7a171d81/anaанализ/1453601367/
Исполняемые файлы Windows Cloc версии 1.60 и более ранних, созданные с помощью perl2exe, как указано выше, имеют размер около 1,6 МБ, а версии 1.62 и 1.54, созданные с помощью PAR::Packer
, — 11 МБ. Версия 1.66, созданная с использованием более новой версии PAR::Packer
, имеет размер около 5,5 МБ. Почему исполняемые файлы PAR::Packer
намного больше, чем созданные с помощью perl2exe? Моя теория состоит в том, что perl2exe использует более умную логику обрезки деревьев, чем PAR::Packer
, но это чистое предположение.
cloc — это программа командной строки, которая принимает в качестве входных данных имена файлов, каталогов и/или архивов. Вот пример запуска cloc с исходным кодом Perl v5.22.0:
подсказка> cloc perl-5.22.0.tar.gz 5605 текстовых файлов. 5386 уникальных файлов. 2176 файлов проигнорированы. https://github.com/AlDanial/cloc v 1,65 T=25,49 с (134,7 файлов/с, 51980,3 строк/с) -------------------------------------------------- --------------------------------- Языковые файлы, пустой код комментария -------------------------------------------------- --------------------------------- Перл 2892 136396 184362 536445 С 130 24676 33684 155648 Заголовок C/C++ 148 9766 16569 147858 Борн Шелл 112 4044 6796 42668 Паскаль 8 458 1603 8592 XML 33 142 0 2410 ЯМЛ 49 20 15 2078 С++ 10 313 277 2033 сделать 4 426 488 1986 г. Пролог 12 438 2 1146 JSON 14 1 0 1037 якк 1 85 76 998 Файл сообщений Windows 1 102 11 489 DOS Пакет 14 92 41 389 Файл ресурсов Windows 3 10 0 85 Д 1 5 7 8 Лисп 2 0 3 4 -------------------------------------------------- --------------------------------- СУММА: 3434 176974 243934 903874 -------------------------------------------------- ---------------------------------
Чтобы запустить cloc на компьютерах с Windows, откройте командное окно (также известное как DOS) и вызовите cloc.exe из командной строки. Альтернативно, попробуйте ClocViewer, оболочку Cloc с графическим интерфейсом, которую можно найти по адресу https://github.com/Roemer/ClocViewer.
См. также https://github.com/jmensch1/codeflower для графической визуализации результатов синхронизации.
подсказка> такт --help Использование: cloc [опции] <файл(ы)/каталог(ы)/git хэш(и)> | <набор 1> <набор 2> | <файлы отчетов> Подсчитайте или вычислите различия между физическими строками исходного кода в заданные файлы (могут быть архивы, такие как сжатые архивы или zip-файлы, или хэши коммитов git или имена ветвей) и/или рекурсивно ниже данные каталоги. Параметры ввода --extract-with=Эта опция необходима только в том случае, если Cloc невозможен. выяснить, как извлечь содержимое входной файл(ы) сам по себе. Используйте для извлечения файлов двоичного архива (например: .tar.gz, .zip, .Z). Используйте литерал '>FILE<' как заменитель фактического файла(ов), который будет извлечено. Например, для подсчета строк кода во входных файлах gcc-4.2.tar.gz perl-5.8.8.tar.gz при использовании Unix --extract-with='gzip -dc >ФАЙЛ< | смола xf -' или, если у вас GNU tar, --extract-with='tar zxf >ФАЙЛ<' и в Windows используйте, например: --extract-with=""c:Program FilesWinZipWinZip32.exe" -e -o >ФАЙЛ< ." (если там установлен WinZip). --list-file=<файл> Получить список имен файлов и/или каталогов для процесс из , который имеет один файл/каталог имя в каждой строке. Учитываются только точные совпадения; относительные имена путей будут разрешены, начиная с каталог, в котором вызывается cloc. Установить <файл> to — для чтения имен файлов из канала STDIN. См. также --exclude-list-file. --diff-list-file=<файл> Берет пары имен файлов, от которых нужно сравнить <файл>, формат которого соответствует выводу --diff-выравнивание. (Запустите эту опцию, чтобы см. образец.) Идентификатор языка в конец каждой строки игнорируется. Это позволяет --diff и обходит логику выравнивания пар файлов. --vcs= Вызвать системный вызов , чтобы получить список файлы для работы. Если имеет значение «git», то будет вызовите «git ls-files», чтобы получить список файлов и «git submodule status», чтобы получить список подмодулей содержимое которого будет игнорироваться. См. также --git который принимает хеши коммитов git и имена ветвей. Если равен «svn», будет вызван «svn list -R». Основное преимущество заключается в том, что clock будет пропускать файлы, явно исключенные инструментом управления версиями о которых идет речь, то есть те, которые находятся в .gitignore или имеют svn: игнорировать свойство. Альтернативно может быть любой системной командой. который генерирует список файлов. Примечание: cloc должен находиться в каталоге, который может читать файлы в том виде, в котором они возвращены . часы будут не скачивать файлы из удаленных репозиториев. 'svn list -R' может относиться к удаленному репозиторию. для получения имен файлов (и, следовательно, может потребоваться аутентификация в удаленном репозитории), но сами файлы должны быть локальными. Установка на «авто» выбирает между «git» и 'svn' (или ни того, ни другого) в зависимости от наличия подкаталога .git или .svn ниже каталога где вызывается cloc. --unicode Проверить двоичные файлы на наличие в них Unicode расширенный текст ASCII. Это приводит к снижению производительности заметно упасть. Варианты обработки --autoconf Подсчитать файлы .in (обработанные GNU autoconf) признанные языки. См. также --no-autogen. --by-file Отчет о результатах для каждого обнаруженного исходного файла. --by-file-by-lang Отчет о результатах для каждого обнаруженного исходного файла в дополнение к отчетности по языкам. --config <файл> Считать параметры командной строки из <файла> вместо расположение по умолчанию /home/al/.config/cloc/options.txt. Файл должен содержать один переключатель, а также аргументы (если есть) в каждой строке. Пустые строки и строки начинающиеся с '#' пропускаются. Варианты предоставлены на командная строка имеет приоритет над записями, прочитанными из файл. --count-and-diff <набор1> <набор2> Сначала выполните прямой подсчет кода исходных файлов. и отдельно, затем выполните сравнение из них. Входными данными могут быть пары файлов, каталогов, или архивы. Если задан --out или --report-file, будут созданы три выходных файла, по одному для каждого из двух счетов и один для разницы. См. также --diff, --diff-alignment, --diff-timeout, --ignore-case, --ignore-пробелы. --diff Вычислить различия в коде и комментариях между исходный файл(ы) и . Входы может быть любая смесь файлов, каталогов, архивов, или git commit хеши. Используйте --diff-alignment для создать список, показывающий, какие пары файлов где по сравнению. При сравнении веток git только файлы которые изменились в любом коммите, сравниваются. См. также --git, --count-and-diff, --diff-alignment, --diff-list-file, --diff-timeout, --ignore-case, --ignore-пробелы. --diff-timeout Игнорировать файлы, которые занимают более секунд обработать. По умолчанию — 10 секунд. Настройка <Н> значение 0 позволяет неограниченное время. (Большие файлы с множеством повторяющиеся строки могут вызвать Algorithm::Diff::sdiff() это займет несколько часов.) См. также --timeout. --docstring-as-code cloc считает строки документации комментариями, но это не всегда правильно, поскольку строки документации представляют собой обычные строки, когда они появляются в правой части присваивание или в качестве аргументов функции. Этот переключатель заставляет строки документации считаться кодом. --follow-links [только для Unix] Переходить по символическим ссылкам на каталоги. (символические ссылки на файлы всегда соблюдаются). См. также --stat. --force-lang=<язык>[,<расширение>] Обработать все файлы с расширением со счетчиком языка . Для например, чтобы подсчитать все файлы .f с Счетчик Fortran 90 (который ожидает, что файлы заканчиваться на .f90) вместо стандартного Fortran 77 счетчик, использовать --force-lang="Фортран 90,ф" Если опущен, будет учитываться каждый файл. со счетчиком . Этот вариант может быть указано несколько раз (но это только полезно, когда задается каждый раз). См. также --script-lang, --lang-no-ext. --force-lang-def= Загрузить фильтры языковой обработки из , затем используйте эти фильтры вместо встроенных фильтры. Примечание: языки, которые соответствуют одному и тому же расширение файла (например: MATLAB/Mathematica/Objective-C/MUMPS/Mercury; Паскаль/PHP; Лисп/OpenCL; Лисп/Джулия; Перл/Пролог) будут игнорироваться, поскольку они требуют дополнительных обработка, не выраженная в языке файлы определений. Используйте --read-lang-def для определения новые языковые фильтры без замены встроенных фильтры (см. также --write-lang-def, --write-lang-def-incl-dup). --git Принудительно интерпретировать входные данные как цели git (хэши коммитов, имена ветвей и т. д.), если эти сначала не идентифицируются как файл или каталог имена. Эта опция переопределяет логику --vcs=git. если это дано; другими словами, --git получает свое список файлов для работы непосредственно из git, используя хеш или имя ветки, а не из 'git ls-файлы'. Эту опцию можно использовать с --diff для определения разницы в количестве строк между git коммиты или между фиксацией git и файлом, каталог или архив. Используйте -v/--verbose, чтобы увидеть проблемы с системными командами git. --git-diff-rel То же, что --git --diff, или просто --diff, если входные данные распознаются как цели git. Только файлы, которые изменения в любом коммите сравниваются. --git-diff-all Стратегия Git diff №2: сравнить все файлы в репозиторий между двумя коммитами. --ignore-whitespace Игнорировать горизонтальные пробелы при сравнении файлов с --diff. См. также --ignore-case. --ignore-case Игнорировать изменения регистра в содержимом файла; считать прописные и строчные буквы эквивалентными при сравнении файлов с --diff. См. также --ignore-пробелы. --ignore-case-ext Игнорировать регистр расширений имен файлов. Это будет вызвать проблемы со счетом на некоторых языках (в частности, .c и .C связаны с C и С++; этот переключатель будет считать файлы .C скорее C чем C++ в операционных системах *nix). Имя файла нечувствительность к регистру всегда верна в Windows. --lang-no-ext= Подсчитывать файлы без расширений с помощью прилавок. Эта опция переопределяет внутреннюю логику для файлов без расширений (где такие файлы проверяются на соответствие известным языкам сценариев проверив первую строку на наличие #!). См. также --force-lang, --script-lang. --max-file-size= Пропускать файлы размером более мегабайт при обход каталогов. По умолчанию <МБ>=100. Требуемая память Cloc примерно в двадцать раз больше больше, чем самый большой файл, поэтому работает с файлы размером более 100 МБ на компьютере с меньшей памяти, превышающей 2 ГБ, вызовет проблемы. Примечание: эта проверка не распространяется на файлы явно передается как аргументы командной строки. --no-autogen[=list] Игнорировать файлы, созданные системами создания кода например, GNU autoconf. Чтобы просмотреть список этих файлов (затем выйдите), запустите список --no-autogen См. также --autoconf. --original-dir [Эффективно только в сочетании с --strip-comments] Записать удаленные файлы в тот же каталог, что и исходные файлы. --read-binary-files Обрабатывать не только текстовые файлы, но и двоичные файлы. Обычно это плохая идея, и ее следует использовать только предпринята попытка с текстовыми файлами, которые были внедрены двоичные данные. --read-lang-def=<файл> Загрузить новые фильтры языковой обработки из <файла> и объединить их с уже известными cloc. Если определяет язык, который уже знает Clock примерно, определение Cloc будет иметь приоритет. Используйте --force-lang-def, чтобы переопределить часы. определения (см. также --write-lang-def, --write-lang-def-incl-dup). --script-lang= , Обрабатывать все файлы, вызывающиекак #! язык сценариев со счетчиком языка <язык>. Например, файлы, начинающиеся с #!/usr/local/bin/perl5.8.8 будет учитываться счетчиком Perl с помощью --script-lang=Перл,perl5.8.8 Название языка не чувствительно к регистру, но имя исполняемого файла языка сценариев,, должен иметь правильный падеж. Этот вариант может быть указано несколько раз. См. также --force-lang, --lang-no-ext. --sdir=Использовать в качестве рабочего каталога вместо позволяя File::Temp выбрать местоположение. Файлы записанные в это место, не удаляются при конец выполнения (как и в случае с File::Temp). --skip-uniqueness Пропустить проверку уникальности файла. Это даст повышение производительности за счет подсчета файлы с одинаковым содержимым несколько раз (если такие дубликаты существуют). --stat Некоторые файловые системы (AFS, CD-ROM, FAT, HPFS, SMB) нет совпадающего количества каталогов 'nlink' количество его подкаталогов. Следовательно clock может недосчитать или полностью пропустить содержимое таких файловых систем. Этот переключатель заставляет File::Find в каталогах статистики, чтобы получить правильный счет. Скорость поиска файлов снизится. См. также --follow-links. --stdin-name=<файл> Укажите имя файла, которое будет использоваться для определения языка для стандартного ввода. (Используйте - в качестве имени входа для получить исходный код через STDIN.) --strip-comments= Для каждого обработанного файла записать в текущий каталог версия файла с пустым и прокомментированные строки удалены (встроенные комментарии сопротивляться). Имя каждого удаленного файла — это исходное имя файла с добавленным к нему расширением . . Он записывается в текущий каталог, если только --original-dir включен. --strip-str-comments Заменить маркеры комментариев, встроенные в строки, на 'хх'. Это попытка обойти ограничение в Regexp::Common::Comment, где маркеры комментариев встроенные в строки рассматриваются как фактические комментарии маркеры, а не строки, что часто приводит к «Ограничение рекурсии сложного регулярного подвыражения» предупреждение и неправильные подсчеты. Есть два Недостатки использования этого переключателя: 1/количество кодов производительность падает, а 2/код, сгенерированный с помощью --strip-comments будет содержать разные строки где когда-либо были найдены встроенные комментарии. --sum-reports Входные аргументы ранее представляли собой файлы отчетов. создается с помощью опции --report-file в обычном виде формат (например, не JSON, YAML, XML или SQL). Создает совокупный набор результатов, содержащий сумма данных из отдельных файлов отчетов. --timeout Игнорировать файлы, которые занимают более секунд для обработки на любом из этапов фильтрации языка. Максимальное количество секунд, потраченное по умолчанию на этап фильтра — это количество строк в файле разделить на тысячу. Установка на 0 позволяет неограниченное время. См. также --diff-timeout. --processes=NUM [Доступно только в системах с последней версией модуля Parallel::ForkManager. Нет доступно в Windows.] Устанавливает максимальное количество ядра, которые использует Cloc. Значение по умолчанию 0 отключает многопроцессорность. --unix Переопределить автоопределение операционной системы логику и работать в режиме UNIX. См. также --windows, --show-os. --use-sloccount Если установлен SLOCCount, использовать его скомпилированный исполняемые файлы c_count, java_count, pascal_count, php_count и xml_count вместо cloc счетчики. Скомпилированные счетчики SLOCCount существенно быстрее, чем часы, и может дать улучшение производительности при подсчете проектов с большими файлами. Однако эти специфичные для часов функции будут недоступны: --diff, --count-and-diff, --strip-comments, --unicode. --windows Переопределить автоопределение операционной системы логику и работать в режиме Microsoft Windows. См. также --unix, --show-os. Параметры фильтра --include-content= Считать только файлы, содержащие текст, соответствующий данное регулярное выражение. --exclude-content= Исключить файлы, содержащие текст, соответствующий заданному регулярное выражение. --exclude-dir= [,D2,] Исключить указанные каталоги, разделенные запятыми D1, D2, D3 и т. д. от сканирования. Для пример --exclude-dir=.cache,тест пропустится все файлы и подкаталоги, имеющие /.cache/ или /test/ в качестве родительского каталога. Каталоги с именами .bzr, .cvs, .hg, .git, .svn, и .snapshot всегда исключаются. Эта опция работает только с отдельным каталогом. имена, поэтому включение разделителей путей к файлам недопустимо. допустимый. Используйте --fullpath и --not-match-d= чтобы предоставить регулярное выражение, соответствующее нескольким подкаталогам. --exclude-ext= [, [...]] Не считать файлы с заданным именем расширения. --exclude-lang= [,L2[...]] Исключить указанные языки, разделенные запятыми L1, L2, L3 и так далее, от подсчета. --exclude-list-file=<файл> Игнорировать файлы и/или каталоги, имена которых появляются в <файл>. <файл> должен содержать один файл имя в каждой строке. Игнорируются только точные совпадения; относительные имена путей будут разрешены, начиная с каталог, в котором вызывается cloc. См. также --list-file. --fullpath Изменяет поведение --match-f, --not-match-f, и --not-match-d, чтобы указать путь к файлу в регулярном выражении, а не только в базовом имени файла. (При этом каждый файл не расширяется, включая его абсолютный путь, вместо этого он использует столько же путь, передаваемый в clock.) Примечание: --match-d всегда просматривает полную информацию. path и, следовательно, на него не влияет --fullpath. --include-ext= [,ext2[...]] Считать только языки, имеющие данную запятую отдельные расширения файлов. Используйте --show-ext для см. признанные расширения. --include-lang= [,L2[...]] Считайте только указанные языки, разделенные запятыми. Л1, Л2, Л3 и так далее. Используйте --show-lang, чтобы увидеть список признанных языков. --match-d= Считать файлы только в каталогах, соответствующих Perl регулярное выражение. Например --match-d='/(src|include)/' считает файлы только в каталогах, содержащих /src/ или /include/. В отличие от --not-match-d, --match-f и --not-match-f, --match-d всегда сравнивает полный путь с регулярное выражение. --not-match-d= Подсчитать все файлы, кроме тех, что находятся в каталогах соответствующее регулярному выражению Perl. Только конечный имя каталога сравнивается, например, когда считая в /usr/local/lib, только «lib» по сравнению с регулярным выражением. Добавьте --fullpath для сравнения родительских каталогов с регулярное выражение. Не включайте разделители путей к файлам в начало или конец регулярного выражения. --match-f= Считать только файлы, базовые имена которых соответствуют Perl регулярное выражение. Например --match-f='^[Ww]idget' учитываются только файлы, начинающиеся с Widget или widget. Добавьте --fullpath, чтобы включить родительские каталоги. в регулярном выражении, а не только в базовом имени. --not-match-f= Подсчитать все файлы, кроме тех, чьи базовые имена соответствует регулярному выражению Perl. Добавьте --fullpath для включения родительские каталоги в регулярном выражении, а не просто базовое имя. --skip-archive= Игнорировать файлы, заканчивающиеся на указанное регулярное выражение Perl выражение. Например, если дано --skip-archive='(zip|tar(.(gz|Z|bz2|xz|7z))?)' код будет пропускать файлы, заканчивающиеся на .zip, .tar, .tar.gz, .tar.Z, .tar.bz2, .tar.xz и .tar.7z. --skip-win-hidden В Windows игнорировать скрытые файлы. Параметры отладки -categorized = Сохранить размеры файлов в байтах, идентифицированные языки и имена классифицированных файлов в . -countted = Сохранить имена обработанных исходных файлов в . -diff-alignment = Записать в Список файлов и паров файлов показывают, какие файлы были добавлены, удалены и/или сравнивался во время пробега с - -дифф. Этот переключатель Заставляет режим - -дифф. -explain = распечатать фильтры, используемые для удаления комментариев для Язык и выход. В некоторых случаях Фильтры ссылаются на подпрограмму Perl, а не Регулярные выражения. Экзамен Исходный код может потребоваться для дальнейшего объяснения. -Выписать эту информацию об использовании и выход. -find = Сохранить имена каждого файла, найденного . -ИНГИОНДОВАНИЕ = Сохранить имена игнорируемых файлов и причину, по которой они были проигнорированы . -Печатные стадии печати, обработанный исходный код, до и после Каждый фильтр применяется. -show-ext [= ] информация о печати обо всех известных (или просто о дано) расширения файлов и выход. -show-lang [= ] распечатать информацию обо всех известных (или просто о даны) языки и выход. -Show-OS распечатать значение режима операционной системы и выйти. Смотрите также -Unix, -Windows. -v [= ] словесный переключатель (необязательное числовое значение). -Вербозе [= ] длинная форма -v. -Версия распечатана версия этой программы и выйти. --write-lang-def = записывает в фильтры обработки языка затем выходит. Полезно в качестве первого шага к созданию Пользовательские языковые определения. Примечание: языки, которые Карта на то же расширение файла будет исключена. (См. Также-Форрам-Ланг-Дэф,-читает-ланг-деф). -Write-lang-def-incl dup = То же самое, что и-Write-Lang-Def, но включает дублированную расширения. Это генерирует проблемный язык Файл определения, потому что CLOC откажется от использования до тех пор, пока дубликаты не будут удалены. Параметры вывода -Печать вывода языка третьего поколения. (Этот вариант может привести к провалу суммы отчета Если с этим вариантом были произведены некоторые отчеты в то время как другие были произведены без него.) -По проценту x вместо комментариев и чистого количества строк, покажите эти значения в процентах на основе значения x в знаменателе: X = 'c' -> # строки кода X = 'cm' -> # строки кода + комментарии X = 'cb' -> # строки кода + blanks X = 'cmb' -> # строки кода + комментарии + blanks Например, при использовании метода 'c' и вашего кода имеет вдвое больше строк комментариев, чем строки кода, значение в столбце комментариев будет быть 200%. Столбец кода остается подсчетом строк. -CSV Напишите результаты как разделенные запятые значения. -CSV-delimiter = Используйте символ в качестве разделителя для запятой разделенные файлы вместо ,. Этот переключатель сил -CSV должен быть включен. -file-incoding = Выходные файлы записи с помощью кодирования вместо ASCII по умолчанию ( = 'UTF-7'). Примеры: «UTF-16», «euc-kr», 'iso-8859-16'. Известные кодирования могут быть Отпечатано с perl -mencode -e 'print join (" n", encode-> encodings (": all")), " n"' ' -Скорость не показывать скорость обработки строк и файлов в Выходной заголовок. Это делает выходные данные детерминированными. -Джсон написать результаты как нотацию объекта JavaScript (JSON) Отформатированный выход. ---- -out = Синоним для-REPORT-FILE = . --Progress-rate = Показать обновление прогресса после каждых файлов Обработано (по умолчанию = 100). Установить на 0 на подавлять выход хода прогресса (полезно при перенаправлении вывод в Stdout). -quiet подавляет все информационные сообщения, кроме как Окончательный отчет. -report-file = Напишите результаты в вместо stdout. --sql = Результаты записывают как SQL Создание и вставки операторов которая может быть прочитана программой базы данных, такой как SQLite. Если is -, вывод отправляется в Stdout. -SQL-Append Append SQL Вставить операторы в указанный файл от - -sql и не генерируйте создание таблицы заявления. Только действителен с опцией - -SQL. --sql-project = Использовать в качестве идентификатора проекта для текущий запуск. Только действителен с опцией - -SQL. --sql-style =