Как узнать сколько строк кода в проекте Xcode?
есть ли способ определить, сколько строк кода содержит проект Xcode? Я обещаю не использовать такую информацию для целей управленческого измерения или бенчмаркинга сотрудников. ;)
14 ответов:
проверить 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 -------------------------------------------------------------------------------
в терминале перейдите в каталог проекта и запустите:
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.
- открыть терминал
- перейдите к вашему проекту
выполните следующую команду внутри вашего проекта:
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
это даст вам разбивку проекта, а также общее количество строк для каждого файла и проекта в целом.
вы можете установить 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
) так что вы просто получите последнюю строку, являющуюся итогом.
простите за повторение. Это самый простой способ ИМХО:
- в типе терминала
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 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