Подтвердить что ты не робот

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

У меня довольно большой проект, и в конце концов я закончил его. Мне просто интересно узнать, сколько строк кода есть в моем проекте. Я использую Xcode 3. Итак, можете ли вы узнать, сколько строк кода было скомпилировано?

4b9b3361

Ответ 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