Как узнать, сколько строк кода есть в проекте 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 

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

    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 

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

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

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

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

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

    Используйте поиск по регулярному выражению (Find Navigator, выберите Find> Regular Expression).

    . \ П

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

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

    1. В терминальном типе

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

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

    1. Загрузите статистик 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 ), чтобы вы просто получили последнюю строку, являющуюся суммой.

    Давайте будем гением компьютера.