Как узнать сколько строк кода в проекте Xcode?


есть ли способ определить, сколько строк кода содержит проект Xcode? Я обещаю не использовать такую информацию для целей управленческого измерения или бенчмаркинга сотрудников. ;)

14 123

14 ответов:

проверить 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

открыть терминал.приложение, перейдите в корневой каталог вашего проекта и выполните следующую команду:

только для 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 '{}' \+

терминал быстрые советы:
ЛС: список содержимого каталога
компакт-диск: перейдите в каталог
Нажмите tab для автозаполнения
Не забудьте поставить " \ " обратную косую черту перед пробелы
Я предлагаю перейти на одну папку вниз от основного проекта, чтобы вы избавились от подсчета кода из фреймворков

проверьте статистику Xcode, он делает именно то, что вы хотите. Он также предоставляет другие интересные статистические данные, так что стоит побегать для удовольствия время от времени.

обратите внимание, что он не будет искать внутри реальных папок, хотя он будет выглядеть в группах. Скорее всего, вы не используете реальные папки, поэтому он будет работать отлично. Если вы используете папки, то вам просто нужно сделать подсчет в каждой папке и добавить их вместе.

Примечание: по состоянию на июнь 2012 года, похоже, это не работает правильно с последними версиями Xcode.

  1. открыть терминал
  2. перейдите к вашему проекту
  3. выполните следующую команду внутри вашего проекта:

    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
    

(*исключая подсчет pod файлов из общего количества)

Если вы перейдете в каталог вашего проекта в терминале и введите:

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

это даст вам разбивку проекта, а также общее количество строк для каждого файла и проекта в целом.

версия Nozzi не работает для меня, но этот:

find . -type f -print0 | xargs -0 cat | wc -l

вы можете установить SLOCCount через MacPorts. Или, более грубо, вы можете использовать wc-l.

быстрый и простой способ:

используйте поиск регулярных выражений (найти навигатор, выберите Найти > регулярное выражение).

.\n

удобно работает с областями поиска Xcode, и вы можете легко настроить его на любой тип строки, которую вы хотите подсчитать ;).

Я не знаком с Xcode, но если все, что вам нужно, чтобы подсчитать количество строк из всех этих конкретных файлов в дереве каталогов, вы можете использовать следующую команду:

find .... match of all those files ... -exec wc -l {} +

после ответ Джошуа Ноцци, в GNU find регулярное выражение для таких файлов будет так:

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. Вы можете увидеть дополнительную информацию об этих выражениях в как использовать регулярное выражение в файле find.

если вы работаете с Mac OS find, тогда вам нужен немного другой подход, как пояснил Мотти Шнеор комментарии:

find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +

оба будут предоставлять вывод в виде:

234 ./file1
456 ./file2
690 total

так что вы можете либо сохранить его, как это, или просто труба к tail -1 (то есть, find ... | tail -1) так что вы просто получите последнюю строку, являющуюся итогом.

простите за повторение. Это самый простой способ ИМХО:

  1. в типе терминала

find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;

это скопирует все файлы из папки проекта в newFolder.

  1. скачать Статистика Xcode и использовать его с newFolder enter image description here

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