Есть ли способ определить, сколько строк кода содержит проект XCode? Я обещаю не использовать такую информацию для управленческих измерений или целей сравнительного анализа сотрудников. ;)
Есть ли способ определить, сколько строк кода содержит проект XCode? Я обещаю не использовать такую информацию для управленческих измерений или целей сравнительного анализа сотрудников. ;)
Ответы:
Проверьте CLOC .
cloc считает пустые строки, строки комментариев и физические строки исходного кода во многих языках программирования.
Я вижу это плавающим вокруг и использую это сам:
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
-------------------------------------------------------------------------------
Откройте 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 . -type f -print0 | xargs -0 cat | wc -l
Если вы хотите только определенные типы файлов, попробуйте что-то вроде
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Проверьте Xcode Statistician, он делает именно то, что вы хотите. Он также предоставляет другую интересную статистику, так что стоит попробовать время от времени.
Обратите внимание, что он не будет смотреться внутри реальных папок, хотя будет выглядеть в группах. Скорее всего, вы не используете настоящие папки, поэтому он будет отлично работать. Если вы используете папки, то вам просто нужно сделать подсчет в каждой папке и сложить их вместе.
Примечание. По состоянию на июнь 2012 года, похоже, это не работает должным образом с последними версиями Xcode.
выполните следующую команду внутри вашего проекта:
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
Это даст вам разбивку по проекту, а также общее количество строк для каждого файла и проекта в целом.
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
Версия Ноззи не работает для меня, но эта:
find . -type f -print0 | xargs -0 cat | wc -l
Быстрый и простой способ:
Используйте поиск по регулярному выражению (Найти навигатор, выберите «Найти»> «Регулярное выражение»).
. \ П
Удобно работает с областями поиска XCode, и вы можете легко настроить его для любого типа линии, которую вы хотите считать;).
Вы можете установить SLOCCount через MacPorts. Или, грубо говоря, вы можете использовать wc -l.
Я не знаком с 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
. Вы можете увидеть больше информации об этих выражениях в разделе Как использовать регулярные выражения в файле 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
), чтобы получить только последнюю строку, являющуюся итогом.
\|
и другие в MacOS. --regex
действует как в GNU find (тот, который я использую), так и в MacOS.
Извините за повторение. Это самый простой способ ИМХО:
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
Я автор этого простого инструмента. Надеюсь, это может кому-нибудь помочь.