Чи є спосіб визначити, скільки рядків коду містить проект 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, вона робить саме те, що ви хочете. Він також надає інші цікаві статистичні дані, тому варто побігати для розваги час від часу.
Зауважте, що він не загляне всередину реальних папок, хоча буде виглядати групами. Швидше за все, ви не використовуєте справжні папки, тому це буде чудово. Якщо ви використовуєте папки, то вам просто потрібно зробити підрахунок у кожній папці і скласти їх разом.
Примітка: станом на червень 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
(* Виключаючи кількість файлів струків із загальної кількості)
Якщо ви переходите до каталогу свого проекту в терміналі і вводите:
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
Версія Nozzi для мене не працює, але ця:
find . -type f -print0 | xargs -0 cat | wc -l
Швидкий і простий спосіб:
Використовуйте пошук по регулярному вираженню (Find Navigator, виберіть Find> Regular Expression).
. \ n
Працює зручно з областями пошуку 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
. Додаткову інформацію про ці вирази ви можете побачити в розділі Як використовувати регулярний вираз у пошуку файлів .
Якщо ви працюєте з 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
), щоб ви отримали останній рядок загальним.
\|
інших та інших в MacOS. --regex
дійсний як у знаходженні GNU (той, який я використовую), так і в MacOS.
Вибачте за повторення. Це найпростіший спосіб IMHO:
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
Я автор цього простого інструменту. Сподіваюся, це може комусь допомогти.