Ответ 1
Отъезд CLOC.
cloc подсчитывает пустые строки, строки комментариев и физические строки исходного кода во многих языках программирования.
Есть ли способ определить, сколько строк кода содержит проект Xcode? Я обещаю не использовать такую информацию для целей управленческого измерения или для бенчмаркинга сотрудников.;)
Отъезд CLOC.
cloc подсчитывает пустые строки, строки комментариев и физические строки исходного кода во многих языках программирования.
Я вижу это всплывающее и использую его сам:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
Я использовал CLOC, как упоминалось в Nathan Kinsinger
, и он довольно прост в использовании. Это PERL script, который можно добавить и запустить из каталога проекта.
PERL уже является частью Mac OS, и вы можете вызвать script таким образом, чтобы узнать свое количество строк, которые вы написали:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Это пример вывода, полученного из такой команды:
176 text files.
176 unique files.
4 files ignored.
http://cloc.sourceforge.net v 1.56 T=2.0 s (86.0 files/s, 10838.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Objective C 80 3848 1876 11844
C/C++ Header 92 980 1716 1412
-------------------------------------------------------------------------------
SUM: 172 4828 3592 13256
-------------------------------------------------------------------------------
В терминале перейдите в каталог проекта и запустите:
find . -type f -print0 | xargs -0 cat | wc -l
Если вы хотите только определенные типы файлов, попробуйте что-то вроде
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Проверьте статистик Xcode, он делает именно то, что вы хотите. Он также предоставляет другие интересные статистические данные, поэтому стоит потратить время и время.
Обратите внимание, что он не будет выглядеть в реальных папках, хотя он будет выглядеть в группах. Скорее всего, вы не используете настоящие папки, чтобы они отлично работали. Если вы используете папки, вам просто нужно сделать подсчет в каждой папке и добавить их вместе.
Примечание: По состоянию на июнь 2012 года, похоже, что это не работает должным образом с последними версиями Xcode.
Откройте Terminal.app, зайдите в корневой каталог проекта и выполните следующую команду:
Только для Swift:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
Только для Obj-C:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
Для Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
Для Obj-C + Swift + C + С++:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.c -o -iname \*.cc -o -iname \*.h -o -iname \*.hh -o -iname \*.hpp -o -iname \*.cpp -o -iname \*.swift \) -exec wc -l '{}' \+
Краткие советы терминалов:
ls: список содержимого каталога
cd: изменить каталог
Нажмите вкладку для автозаполнения
Не забудьте поставить "\" обратную косую черту перед пробелами
Я предлагаю перейти в одну папку из основного проекта, чтобы вы избавились от количества кодов из фреймворков
Если вы перейдете в каталог проекта в терминале и введите:
find . "(" -name "*.h" -or -name "*.m" -or -name "*.mm" -or -name "*.hpp" -or -name "*.cpp" -or -name "*.c" -or -name "*.cc" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
Это даст вам разбивку проекта, а также общую сумму для каждого файла и проекта в целом.
выполните следующую команду внутри вашего проекта:
find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
Или:
find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
(* Исключая файлы подкадров из общего количества)
Версия Nozzi не работает для меня, но эта:
find . -type f -print0 | xargs -0 cat | wc -l
Вы можете установить SLOCCount через MacPorts. Или, более грубо, вы можете использовать wc -l.
Быстрый и простой способ:
Используйте поиск по регулярному выражению (Find Navigator, выберите Find > Regular Expression).
.\П
Удобно работает с областями поиска Xcode, и вы можете легко настроить его на любой тип строки, которую вы хотели бы сосчитать;).
Я не знаком с xcode, но если вам нужно только подсчитать количество строк из всех этих конкретных файлов в дереве каталогов, вы можете использовать следующую команду:
find .... match of all those files ... -exec wc -l {} +
После ответа Джошуа Ноцци, регулярное выражение для таких файлов будет выглядеть так:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
или даже
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
для этого используется регулярное выражение для соответствия всем файлам, заканчивающимся на .m
, .mm
, .cpp
или .swift
. Вы можете увидеть дополнительную информацию об этих выражениях в Как использовать регулярное выражение в поиске файлов.
Это даст результат в форме
234 ./file1
456 ./file2
690 total
Таким образом, вы можете либо сохранить его так, либо просто подключиться к tail -1
(т.е. find ... | tail -1
), чтобы вы могли просто получить последнюю строку.
Извините за повторение. Это самый простой способ ИМХО:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Это скопирует все файлы из папки проекта в newFolder
.
newFolder
line-counter
- хорошая альтернатива. Он легче CLOC и намного более мощный и простой в использовании, чем другие команды.
Краткий обзор
Вот как вы получаете инструмент
$ pip install line-counter
Используйте команду line
, чтобы получить количество файлов и количество строк в текущем каталоге (рекурсивно)
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
Если вам нужна дополнительная информация, просто используйте line -d
.
$ line -d
Search in /Users/Morgan/Documents/Example/
Dir A/file C.c 72
Dir A/file D.py 268
file A.py 467
file B.c 32
file count: 4
line count: 839
И лучшая часть этого инструмента, вы можете добавить .gitignore как файл конфигурации. Вы можете настроить правила для выбора или игнорирования того, какие файлы должны считаться так же, как то, что вы делаете в '.gitignore'. Да, этот инструмент просто придумал, чтобы узнать, сколько строк у меня легче.
Больше описания и использования здесь: https://github.com/MorganZhang100/line-counter
Я автор этого простого инструмента. Надеюсь, это может помочь кому-то.
Любая звезда или вилка оценивается: P