У меня довольно большой проект, и в конце концов я закончил его. Мне просто интересно узнать, сколько строк кода есть в моем проекте. Я использую Xcode 3. Итак, можете ли вы узнать, сколько строк кода было скомпилировано?
Знаете, сколько строк кода у вас есть в проекте Xcode?
Ответ 1
Откройте 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 + С++:
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: изменить каталог
Нажмите вкладку для автозаполнения
Не забудьте поставить "\" обратную косую черту перед пробелами
Я предлагаю перейти в одну папку из основного проекта, чтобы вы избавились от количества кодов из фреймворков
Ответ 2
Откройте Terminal.app, cd
в корневой каталог проекта и выполните следующую команду:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.c -o -iname \*.cc -o -iname \*.h \) -exec wc -l '{}' \+
Если вы также хотите добавить другие типы файлов в свой счет, добавьте дополнительные предложения -o \*.ext
.
Ответ 3
Для этого вы можете использовать sloccount или cloc, оба они совместимы с кодом Objective-C.
Я рекомендую использовать sloccount, вы можете получить хороший отчет HTML, если вы также используете Jenkins. Отчет в формате HTML позволит вам перейти к разным каталогам и файлам.
Это командная строка для обзора вашего кода, если вы находитесь в корневом каталоге вашего проекта Xcode:
sloccount --duplicates --wide YOUR-TARGET-NAME
И если вы хотите создать отчет для использования в Jenkins, просто добавьте флаг --details
:
sloccount --duplicates --wide --details YOUR-TARGET-NAME > build/sloccount.sc
и установите плагин Jenkins для sloccount через пользовательский интерфейс Jenkins.
Вы сможете увидеть примеры таких отчетов в Jenkins в этой статье блога (отказ от ответственности: я являюсь автором): http://blog.octo.com/en/jenkins-quality-dashboard-ios-development/#step1-1.
Ответ 4
Один из способов - загрузить копию в Xcode и использовать "Project Analyzer для Xcode 4". Найдите "Xcode" в магазине Apple Mac App Store. Я не использовал эту программу, но вчера мне это показалось, когда я искал приложения, связанные с Xcode, в Mac App Store.
Надеюсь, что это поможет.
Ответ 5
A bash script, который находит количество строк в файлах WITHOUT COMMENTS AND EMPTY LINES
. script не учитывает комментарии, начинающиеся с //
. Скопируйте script в папку проекта и запустите sh scriptname.sh
.
Для быстрого изменения \( -iname \*.m -o -iname \*.mm -o -iname \*.h \)
до \( -iname \*.swift \)
# $excluded is a regex for paths to exclude from line counting
excluded="some_dir_name\|some_dir_name2\|lib\|thisfile"
countLines(){
# $total is the total lines of code counted
total=0
# -mindepth exclues the current directory (".")
for file in `find . -mindepth 1 \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) | grep -v "$excluded"`; do
# First sed: only count lines of code that are not commented with //
# Second sed: don't count blank lines
# $numLines is the lines of code
numLines=`cat $file | sed '/\/\//d' | sed '/^\s*$/d' | wc -l`
# To exclude only blank lines and count comment lines, uncomment this:
#numLines=`cat $file | sed '/^\s*$/d' | wc -l`
total=$(($total + $numLines))
echo " " $numLines $file
done
echo " " $total in total
}
countLines
Ответ 6
Я не уверен в каких-либо инструментах, которые напрямую подключаются к Xcode (почему вы все еще используете Xcode 3, когда 4.1 свободно доступен на Lion?), но я нахожу, что в командной строке cloc
хорошо работает с кодом Objective-C.
Ответ 7
Действительно хорошая команда unix - это xargs. Смотрите "pipe к xargs ниже". Например:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) | xargs wc -l
Как ни странно, мне придется выяснить, почему этот ответ выходит для меня чуть-чуть ниже, чем ответ @Esqarrouth