Подсчитайте строки кода
cloc подсчитывает пустые строки, строки комментариев и физические строки исходного кода во многих языках программирования.
Последний выпуск: v2.02 (2 августа 2024 г.)
cloc переехал на GitHub в сентябре 2015 года после размещения на http://cloc.sourceforge.net/ с августа 2006 года.
Шаг 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=<cmd> Эта опция необходима только в том случае, если Cloc не может выяснить, как извлечь содержимое входной файл(ы) сам по себе. Используйте <cmd> для извлечения файлов двоичного архива (например: .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=<файл> Получить список имен файлов и/или каталогов для процесс из <file>, который имеет один файл/каталог имя в каждой строке. Учитываются только точные совпадения; относительные имена путей будут разрешены, начиная с каталог, в котором вызывается cloc. Установить <файл> to — для чтения имен файлов из канала STDIN. См. также --exclude-list-file. --diff-list-file=<файл> Берет пары имен файлов, от которых нужно сравнить <файл>, формат которого соответствует выводу --diff-выравнивание. (Запустите эту опцию, чтобы см. образец.) Идентификатор языка в конец каждой строки игнорируется. Это позволяет --diff и обходит логику выравнивания пар файлов. --vcs=<VCS> Вызвать системный вызов <VCS>, чтобы получить список файлы для работы. Если <VCS> имеет значение «git», то будет вызовите «git ls-files», чтобы получить список файлов и «git submodule status», чтобы получить список подмодулей содержимое которого будет игнорироваться. См. также --git который принимает хеши коммитов git и имена ветвей. Если <VCS> равен «svn», то будет вызван «svn list -R». Основное преимущество заключается в том, что clock будет пропускать файлы, явно исключенные инструментом управления версиями о которых идет речь, то есть те, которые находятся в .gitignore или имеют svn: игнорировать свойство. Альтернативно <VCS> может быть любой системной командой. который генерирует список файлов. Примечание: cloc должен находиться в каталоге, который может читать файлы в том виде, в котором они возвращены <VCS>. часы будут не скачивать файлы из удаленных репозиториев. 'svn list -R' может относиться к удаленному репозиторию. для получения имен файлов (и, следовательно, может потребоваться аутентификация в удаленном репозитории), но сами файлы должны быть локальными. Установка <VCS> на «авто» выбирает между «git» и 'svn' (или ни того, ни другого) в зависимости от наличия подкаталога .git или .svn ниже каталога где вызывается cloc. --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> Сначала выполните прямой подсчет кода исходных файлов. <set1> и <set2> отдельно, затем выполните сравнение из них. Входными данными могут быть пары файлов, каталогов, или архивы. Если задан --out или --report-file, будут созданы три выходных файла, по одному для каждого из двух счетов и один для разницы. См. также --diff, --diff-alignment, --diff-timeout, --ignore-case, --ignore-пробелы. --diff <set1> <set2> Вычислить различия в коде и комментариях между исходный файл(ы) <set1> и <set2>. Входы может быть любая смесь файлов, каталогов, архивов, или git commit хеши. Используйте --diff-alignment для создать список, показывающий, какие пары файлов где по сравнению. При сравнении веток git только файлы которые изменились в любом коммите, сравниваются. См. также --git, --count-and-diff, --diff-alignment, --diff-list-file, --diff-timeout, --ignore-case, --ignore-пробелы. --diff-timeout <N> Игнорировать файлы, которые занимают более <N> секунд обработать. По умолчанию — 10 секунд. Настройка <Н> до 0 разрешает неограниченное время. (Большие файлы с множеством повторяющиеся строки могут вызвать Algorithm::Diff::sdiff() это займет несколько часов.) См. также --timeout. --docstring-as-code cloc считает строки документации комментариями, но это не всегда правильно, поскольку строки документации представляют собой обычные строки, когда они появляются в правой части присваивание или в качестве аргументов функции. Этот переключатель заставляет строки документации считаться кодом. --follow-links [только для Unix] Переходить по символическим ссылкам на каталоги. (символические ссылки на файлы всегда соблюдаются). См. также --stat. --force-lang=<язык>[,<расширение>] Обработать все файлы с расширением <ext> со счетчиком языка <lang>. Для например, чтобы подсчитать все файлы .f с Счетчик Fortran 90 (который ожидает, что файлы заканчиваться на .f90) вместо стандартного Fortran 77 счетчик, использовать --force-lang="Фортран 90,ф" Если <ext> опущен, будет учитываться каждый файл. со счетчиком <lang>. Этот вариант может быть указано несколько раз (но это только полезно, когда <ext> задается каждый раз). См. также --script-lang, --lang-no-ext. --force-lang-def=<file> Загрузить фильтры языковой обработки из <file>, затем используйте эти фильтры вместо встроенных фильтры. Примечание: языки, которые соответствуют одному и тому же расширение файла (например: 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 №2: сравнить все файлы в репозиторий между двумя коммитами. --ignore-whitespace Игнорировать горизонтальные пробелы при сравнении файлов с --diff. См. также --ignore-case. --ignore-case Игнорировать изменения регистра в содержимом файла; считать прописные и строчные буквы эквивалентными при сравнении файлов с --diff. См. также --ignore-пробелы. --ignore-case-ext Игнорировать регистр расширений имен файлов. Это будет вызвать проблемы со счетом на некоторых языках (в частности, .c и .C связаны с C и С++; этот переключатель будет считать файлы .C скорее C чем C++ в операционных системах *nix). Имя файла нечувствительность к регистру всегда актуальна в Windows. --lang-no-ext=<lang> Подсчитывать файлы без расширений с помощью <lang> прилавок. Эта опция переопределяет внутреннюю логику для файлов без расширений (где такие файлы проверяются на соответствие известным языкам сценариев проверив первую строку на наличие #!). См. также --force-lang, --script-lang. --max-file-size=<MB> Пропускать файлы размером более <MB> мегабайт при обход каталогов. По умолчанию <МБ>=100. Требуемая память Cloc примерно в двадцать раз больше больше, чем самый большой файл, поэтому работает с файлы размером более 100 МБ на компьютере с меньшей памяти, превышающей 2 ГБ, вызовет проблемы. Примечание: эта проверка не распространяется на файлы явно передается как аргументы командной строки. --no-autogen[=list] Игнорировать файлы, созданные системами создания кода например, GNU autoconf. Чтобы просмотреть список этих файлов (затем выйдите), запустите список --no-autogen См. также --autoconf. --original-dir [Эффективно только в сочетании с --strip-comments] Записать удаленные файлы в тот же каталог, что и исходные файлы. --read-binary-files Обрабатывать не только текстовые файлы, но и двоичные файлы. Обычно это плохая идея, и ее следует использовать только предпринята попытка с текстовыми файлами, которые были внедрены двоичные данные. --read-lang-def=<file> Загрузить новые фильтры языковой обработки из <file> и объединить их с уже известными cloc. Если <file> определяет язык, который уже знает Clock примерно, определение Cloc будет иметь приоритет. Используйте --force-lang-def, чтобы переопределить часы. определения (см. также --write-lang-def, --write-lang-def-incl-dup). --script-lang=<lang>,<s> Обрабатывать все файлы, которые вызывают <s> как #! язык сценариев со счетчиком языка <язык>. Например, файлы, начинающиеся с #!/usr/local/bin/perl5.8.8 будет учитываться счетчиком Perl с помощью --script-lang=Перл,perl5.8.8 Название языка не чувствительно к регистру, но имя исполняемого файла языка сценариев, <s>, должен иметь правильный падеж. Этот вариант может быть указано несколько раз. См. также --force-lang, --lang-no-ext. --sdir=<dir> Использовать <dir> в качестве рабочего каталога вместо позволяя File::Temp выбрать местоположение. Файлы записанные в это место, не удаляются при конец выполнения (как и в случае с File::Temp). --skip-uniqueness Пропустить проверку уникальности файла. Это даст повышение производительности за счет подсчета файлы с одинаковым содержимым несколько раз (если такие дубликаты существуют). --stat Некоторые файловые системы (AFS, CD-ROM, FAT, HPFS, SMB) нет совпадающего количества каталогов 'nlink' количество его подкаталогов. Следовательно clock может недосчитать или полностью пропустить содержимое таких файловых систем. Этот переключатель заставляет File::Find в каталогах статистики, чтобы получить правильный счет. Скорость поиска файлов снизится. См. также --follow-links. --stdin-name=<файл> Укажите имя файла, которое будет использоваться для определения языка для стандартного ввода. (Используйте - в качестве имени входа для получить исходный код через STDIN.) --strip-comments=<ext> Для каждого обработанного файла записать в текущий каталог версия файла с пустым и прокомментированные строки удалены (встроенные комментарии сопротивляться). Имя каждого удаленного файла — это исходное имя файла с добавленным к нему расширением .<ext>. Он записывается в текущий каталог, если только --original-dir включен. --strip-str-comments Заменить маркеры комментариев, встроенные в строки, на 'хх'. Это попытка обойти ограничение в Regexp::Common::Comment, где маркеры комментариев встроенные в строки рассматриваются как фактические комментарии маркеры, а не строки, что часто приводит к «Ограничение рекурсии сложного регулярного подвыражения» предупреждение и неправильные подсчеты. Есть два Недостатки использования этого переключателя: 1/количество кодов производительность падает, а 2/код, сгенерированный с помощью --strip-comments будет содержать разные строки где когда-либо были найдены встроенные комментарии. --sum-reports Входные аргументы ранее представляли собой файлы отчетов. создается с помощью опции --report-file в обычном виде формат (например, не JSON, YAML, XML или SQL). Создает совокупный набор результатов, содержащий сумма данных из отдельных файлов отчетов. --timeout <N> Игнорировать файлы, которые занимают более <N> секунд для обработки на любом из этапов фильтрации языка. Максимальное количество секунд, потраченное по умолчанию на этап фильтра — это количество строк в файле разделить на тысячу. Установка <N> на 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=<regex> Считать только файлы, содержащие текст, соответствующий данное регулярное выражение. --exclude-content=<regex> Исключить файлы, содержащие текст, соответствующий заданному регулярное выражение. --exclude-dir=<D1>[,D2,] Исключить указанные каталоги, разделенные запятыми D1, D2, D3 и т. д. от сканирования. Для пример --exclude-dir=.cache,тест пропустится все файлы и подкаталоги, имеющие /.cache/ или /test/ в качестве родительского каталога. Каталоги с именами .bzr, .cvs, .hg, .git, .svn, и .snapshot всегда исключаются. Эта опция работает только с отдельным каталогом. имена, поэтому включение разделителей путей к файлам недопустимо. допустимый. Используйте --fullpath и --not-match-d=<regex>. чтобы предоставить регулярное выражение, соответствующее нескольким подкаталогам. --exclude-ext=<ext1>[,<ext2>[...]] Не считать файлы с заданным именем расширения. --exclude-lang=<L1>[,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=<ext1>[,ext2[...]] Считать только языки, имеющие данную запятую отдельные расширения файлов. Используйте --show-ext для см. признанные расширения. --include-lang=<L1>[,L2[...]] Считайте только указанные языки, разделенные запятыми. Л1, Л2, Л3 и так далее. Используйте --show-lang, чтобы увидеть список признанных языков. --match-d=<regex> Считать файлы только в каталогах, соответствующих Perl регулярное выражение. Например --match-d='/(src|include)/' считает файлы только в каталогах, содержащих /src/ или /include/. В отличие от --not-match-d, --match-f и --not-match-f, --match-d всегда сравнивает полный путь с регулярное выражение. --not-match-d=<regex> Подсчитать все файлы, кроме тех, что находятся в каталогах соответствующее регулярному выражению Perl. Только конечный имя каталога сравнивается, например, когда считая в /usr/local/lib, только «lib» по сравнению с регулярным выражением. Добавьте --fullpath для сравнения родительских каталогов с регулярное выражение. Не включайте разделители путей к файлам в начало или конец регулярного выражения. --match-f=<regex> Считать только файлы, базовые имена которых соответствуют Perl регулярное выражение. Например --match-f='^[Ww]idget' учитываются только файлы, начинающиеся с Widget или widget. Добавьте --fullpath, чтобы включить родительские каталоги. в регулярном выражении, а не только в базовом имени. --not-match-f=<regex> Подсчитать все файлы, кроме тех, чьи базовые имена соответствует регулярному выражению Perl. Добавьте --fullpath для включения родительские каталоги в регулярном выражении, а не просто базовое имя. --skip-archive=<regex> Игнорировать файлы, заканчивающиеся на указанное регулярное выражение 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 = <File> Сохранить размеры файлов в байтах, идентифицированные языки и имена классифицированных файлов в <File>. -countted = <File> Сохранить имена обработанных исходных файлов в <File>. -diff-alignment = <File> Записать в <File> Список файлов и паров файлов показывают, какие файлы были добавлены, удалены и/или сравнивался во время пробега с - -дифф. Этот переключатель Заставляет режим - -дифф. -explain = <lang> распечатать фильтры, используемые для удаления комментариев для Язык <lang> и выход. В некоторых случаях Фильтры ссылаются на подпрограмму Perl, а не Регулярные выражения. Экзамен Исходный код может потребоваться для дальнейшего объяснения. -Выписать эту информацию об использовании и выход. -find = <File> Сохранить имена каждого файла, найденного <File>. -ИНГИОНДОВАНИЕ = <File> Сохранить имена игнорируемых файлов и причину, по которой они были проигнорированы <File>. -Печатные стадии печати, обработанный исходный код, до и после Каждый фильтр применяется. -show-ext [= <ext>] информация о печати обо всех известных (или просто о дано) расширения файлов и выход. -show-lang [= <lang>] распечатать информацию обо всех известных (или просто о даны) языки и выход. -Show-OS распечатать значение режима операционной системы и выйти. Смотрите также -Unix, -Windows. -v [= <n>] словесный переключатель (необязательное числовое значение). -Вербозе [= <n>] длинная форма -v. -Версия распечатана версия этой программы и выйти. --write-lang-def = <File> записывает в <File> фильтры обработки языка затем выходит. Полезно в качестве первого шага к созданию Пользовательские языковые определения. Примечание: языки, которые Карта на то же расширение файла будет исключена. (См. Также-Форрам-Ланг-Дэф,-читает-ланг-деф). -Write-lang-def-incl dup = <File> То же самое, что и-Write-Lang-Def, но включает дублированную расширения. Это генерирует проблемный язык Файл определения, потому что CLOC откажется от использования до тех пор, пока дубликаты не будут удалены. Параметры вывода -Печать вывода языка третьего поколения. (Этот вариант может привести к провалу суммы отчета Если с этим вариантом были произведены некоторые отчеты в то время как другие были произведены без него.) -По проценту x вместо комментариев и чистого количества строк, покажите эти значения в процентах на основе значения x в знаменателе: X = 'c' -> # строки кода X = 'cm' -> # строки кода + комментарии X = 'cb' -> # строки кода + blanks X = 'cmb' -> # строки кода + комментарии + blanks Например, при использовании метода 'c' и вашего кода имеет вдвое больше строк комментариев, чем строки кода, значение в столбце комментариев будет быть 200%. Столбец кода остается подсчетом строк. -CSV Напишите результаты как разделенные запятые значения. -CSV-delimiter = <c> Используйте символ <c> в качестве разделителя для запятой разделенные файлы вместо ,. Этот переключатель сил -CSV должен быть включен. -file-incoding = <e> Выходные файлы записи с помощью кодирования <e> вместо ASCII по умолчанию (<e> = 'UTF-7'). Примеры: «UTF-16», «euc-kr», 'iso-8859-16'. Известные кодирования могут быть Отпечатано с perl -mencode -e 'print join (" n", encode-> encodings (": all")), " n"' ' -Скорость не показывать скорость обработки строк и файлов в Выходной заголовок. Это делает выходные данные детерминированными. -Джсон написать результаты как нотацию объекта JavaScript (JSON) Отформатированный выход. ---- -out = <File> Синоним для-REPORT-FILE = <File>. --Progress-rate = <n> Показать обновление прогресса после каждых файлов <n> Обработано (по умолчанию <n> = 100). Установить <n> на 0 на подавлять выход хода прогресса (полезно при перенаправлении вывод в Stdout). -quiet подавляет все информационные сообщения, кроме как Окончательный отчет. -report-file = <File> Напишите результаты в <File> вместо stdout. --sql = <File> Результаты записывают как SQL Создание и вставки операторов которая может быть прочитана программой базы данных, такой как SQLite. Если <File> is -, вывод отправляется в Stdout. -SQL-Append Append SQL Вставить операторы в указанный файл от - -sql и не генерируйте создание таблицы заявления. Только действителен с опцией - -SQL. --sql-project = <mame> Использовать <mame> в качестве идентификатора проекта для текущий запуск. Только действителен с опцией - -SQL. --sql-style = <style> Напишите операторы SQL в данном стиле вместо этого из формата SQLite по умолчанию. Стили включают «Oracle» и «name_columns». ---один-один для простых текстовых отчетов, покажите сумму: вывода Даже если обрабатывается только один входной файл. -xml Напишите результаты в XML. --xsl = <File> Ссылка <File> в виде таблицы стилей XSL внутри вывод XML. Если <File> - 1 (числовое), пишет таблицу стилей по умолчанию, cloc.xsl (или cloc-diff.xsl If-Diff также дается). Этот переключатель сидит -xml включен. -Ямл напишите результаты в Yaml.
Подсказка> Cloc--Show-Lang ABAP (ABAP) ActionScript (AS) ADA (ADA, ADB, ADS, PAD) Adso/idsm (Adso) Agda (Agda, Lagda) Достаточно (достаточно, дофиль, стартап) Ansprolog (LP) Ant (build.xml, build.xml) Грамматика ANTLR (G, G4) Apex Class (CLS) Apex Trigger (триггер) APL (APL, APLA, APLC, APLF, APLI, APLN, APLO, DYALOG, DYAPP, MIPAGE) AppleScript (AppleScript) Arduino Sketch (INO) Арктс (ETS) Артуро (искусство) Asciidoc (Adoc, Asciidoc) ASP (ASA, ASHX, ASP, AXD) ASP.NET (Asax, ASCX, ASMX, ASPX, Master, Sitemap, WebInfo) Аспект (AJ) Сборка (A51, ASM, NASM, S, S) Астро (Астро) Асимптота (ASY) AutoHotKey (ахк, ахкл) Awk (Auk, Awk, Gawk, Mawk, Nawk) Базель (сборка) Biztalk Orchestration (ODX) Biztalk Pipeline (BTP) Blade (Blade, Blade.php) Борн снова оболочка (Bash) Bourne Shell (SH) BrightScript (BRS) Строитель (XML.Builder) C (C, Cats, EC, IDC, PGC) C Shell (CSH, TCSH) C# (CS) C# Designer (Designer.cs) C ++ (C, C ++, C ++ M, CC, CCM, CPP, CPP, CPPM, CXX, CXXM, H ++, INL, IPP, IXX, PCC, TCC, TPP) C/C ++ заголовок (H, H, HH, HPP, HXX) Каир (Каир) Сценарий сборки торта (торт) Углерод (углерод) CCS (CCS) Часовня (CHPL) Циркум (циркум) Чистый (DCL, ICL) Clojure (Boot, CL2, CLJ, CLJS.HL, CLJSCM, CLJX, HIC, Riemann.config) Clojurec (cljc) Clojurescript (cljs) Cmake (Cmake, Cmake.in, Cmakelists.txt) COBOL (CBL, CBL, CCP, COB, COB, COBOL, CPY) Какао 5 (C5, Cocoa5, Cocoa5server, CPKG5) CoffeeScript (_coffee, Cakefile, CJSX, кофе, Iced) Coldfusion (CFM, CFML) ColdFusion CFScript (CFC) Грамматика ограничения (CG3, RLX) ContainerFile (ContainerFile) Coq (v) Кристалл (CR) CSON (CSON) CSS (CSS) CSV (CSV) Огурец (функция) Cuda (cu, cuh) Цифон (PXD, PXI, PYX) D (D) Дафни (DFY) Дал (да) Дарт (Дарт) Форма Delphi (DFM) Denizencript (DSC) Derw (Derw) dhall (dhall) Диета (DT) diff (diff, patch) Дита (Дита) Dockerfile (Dockerfile, Dockerfile) Язык расширения двери (DXL) Партия DOS (Bat, Bat, BTM, BTM, CMD, CMD) Слюни (DRL) DTD (DTD) DTRACE (D) ECPP (ECPP) Eex (eex) EJS (EJS) Эликсир (Ex, Exs) Вяз (ELM) Встроенный кристалл (ECR) Erb (Erb, Erb) Erlang (App.src, Emakefile, Erl, HRL, Rebar.config, Rebar.config.lock, Rebar.lock, XRL, YRL) Ожидайте (Exp) F# (FSI, FS, FS) F# Script (FSX) Фенхель (FNL) Язык конечного состояния (FSL, JSSM) Рыба раковина (рыба) Flatbuffers (FBS) Фокус (focexec) Форт (4 -й, E4, F83, FB, Forth, FPM, FR, FRT, FT, FT, RX, FS, F, FOR) FORTRAN 77 (F, F77, F77, FOR, FTN, FTN, PFO, F, FOR) Fortran 90 (F90, F90) Fortran 95 (F95, F95) Шаблон Freemarker (FTL) Futhark (FUT) FXML (FXML) Gdscript (GD) Gencat NLS (MSG) Glade (glade, ui) Блеск (блеск) Glimmer JavaScript (GJS) Trimmer TypeScript (GTS) GLSL (Comp, FP, FRAG, FRG, FSH, FSHADER, GEO, GEOM, GLSL, GLSLV, GSHADER, TESC, TESE, VERT, VRX, VSH, VSHADER) Иди (иди, ʕ◔ϖ◔ʔ) Godot Resource (TRES) Godot Scene (TSCN) Годоты Шейдеры (GDSHADER) Gradle (Gradle, Gradle.kts) Грааль (GSP) Graphql (gql, graphql, graphqls) Groovy (Gant, Groovy, Grt, Gtpl, Gvy, Jenkinsfile) Хэмл (Хамл, Хэмл.deface) Руль (руль, HBS) Гавань (HB) Заяц (HA) Хаскелл