Как узнать, сколько строк кода есть в проекте Xcode?
Есть ли способ определить, сколько строк кода содержит проект Xcode? Я обещаю не использовать такую информацию для целей управленческого измерения или для бенчмаркинга сотрудников. 😉
Проверьте CLOC .
cloc подсчитывает пустые строки, строки комментариев и физические строки исходного кода на многих языках программирования.
( Устаревшие сборки архивируются на SourceForge .)
Я вижу, что это плавает вокруг и использует его сам:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
Я использовал CLOC, как упоминал Nathan Kinsinger
и он довольно прост в использовании. Это сценарий PERL, который можно добавить и запустить из каталога проекта.
PERL уже является частью Mac OS, и вы можете вызвать сценарий таким образом, чтобы узнать количество написанных вами строк:
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 + 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, и вы можете легко настроить его на любой тип строки, которую вы хотели бы подсчитать;).
Извините за повторение. Это самый простой способ ИМХО:
- В терминальном типе
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Это скопирует все файлы из папки проекта в newFolder
.
- Загрузите статистик Xcode и используйте его с
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 Cc 72 Dir A/file D.py 268 file A.py 467 file Bc 32 file count: 4 line count: 839
И лучшая часть этого инструмента, вы можете добавить .gitignore, как настроить файл на него. Вы можете настроить правила, чтобы выбрать или игнорировать, какие файлы следует считать так же, как и то, что вы делаете в ‘.gitignore’. Да, этот инструмент просто придумал, чтобы узнать, сколько строк у меня легче.
Более подробное описание и использование здесь: https://github.com/MorganZhang100/line-counter
Я автор этого простого инструмента. Надеюсь, это может помочь кому-то.
Любая звезда или вилка оцениваются: P
Я не знаком с xcode, но если вам нужно только подсчитать количество строк из всех этих конкретных файлов в дереве каталогов, вы можете использовать следующую команду:
find .... match of all those files ... -exec wc -l {} +
Следуя ответу Джошуа Ноцци , в GNU найти регулярное выражение для таких файлов было бы так:
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
. Вы можете увидеть дополнительную информацию об этих выражениях в разделе « Как использовать регулярное выражение в поиске файлов» .
Если вы работаете с Mac OS find , то вам нужен немного другой подход, как объяснил Motti Shneor в комментариях:
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
Оба предоставят результат по форме:
234 ./file1 456 ./file2 690 total
Таким образом, вы можете либо сохранить это так, либо просто направить в tail -1
(т. Е. find ... | tail -1
), чтобы вы просто получили последнюю строку, являющуюся суммой.