Czy istnieje sposób na określenie, ile wierszy kodu zawiera projekt Xcode? Obiecuję, że nie będę wykorzystywać takich informacji do pomiarów menedżerskich lub do celów benchmarkingu pracowników. ;)
Czy istnieje sposób na określenie, ile wierszy kodu zawiera projekt Xcode? Obiecuję, że nie będę wykorzystywać takich informacji do pomiarów menedżerskich lub do celów benchmarkingu pracowników. ;)
Odpowiedzi:
Sprawdź CLOC .
cloc liczy puste wiersze, wiersze komentarzy i fizyczne wiersze kodu źródłowego w wielu językach programowania.
Widzę to unoszące się wokół i używam go sam:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
Używam CLOC, jak wspomniano,Nathan Kinsinger
i jest dość łatwy w użyciu. Jest to skrypt PERL, który możesz dodać i uruchomić z katalogu projektu.
PERL jest już częścią systemu Mac OS i możesz wywołać skrypt w ten sposób, aby sprawdzić liczbę napisanych linii:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Oto przykład danych wyjściowych, które otrzymałem z takiego polecenia:
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
-------------------------------------------------------------------------------
Otwórz Terminal.app, przejdź do katalogu głównego projektu i uruchom to polecenie:
Tylko dla Swift:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
Tylko dla Obj-C:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
Dla Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
Dla 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 '{}' \+
Szybkie porady dotyczące terminala:
ls: lista zawartości katalogu
cd: zmień katalog
Naciśnij klawisz tabulatora, aby autouzupełnianie
Pamiętaj, aby wstawić ukośnik odwrotny „\” przed spacjami
Sugeruję przejście o jeden folder w dół od głównego projektu, aby pozbyć się liczby kodów z frameworków
W terminalu przejdź do katalogu projektu i uruchom:
find . -type f -print0 | xargs -0 cat | wc -l
Jeśli chcesz tylko niektóre typy plików, spróbuj czegoś takiego jak
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Sprawdź Xcode Statistician, robi dokładnie to, czego chcesz. Zawiera również inne interesujące statystyki, więc od czasu do czasu warto pobiegać dla zabawy.
Zauważ, że nie będzie wyglądał wewnątrz prawdziwych folderów, chociaż będzie wyglądał w grupach. Możliwe, że nie używasz prawdziwych folderów, więc będzie działać świetnie. Jeśli używasz folderów, musisz po prostu policzyć w każdym folderze i dodać je razem.
Uwaga: od czerwca 2012 wydaje się, że nie działa to poprawnie z najnowszymi wersjami Xcode.
wykonaj następujące polecenie w swoim projekcie:
find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
Lub:
find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
(* Z wyłączeniem plików pod z łącznej liczby)
Jeśli przejdziesz do katalogu swojego projektu w terminalu i wpisz:
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
To da ci podział projektu, a także sumę wierszy dla każdego pliku i projektu jako całości.
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
Wersja Nozzi nie działa dla mnie, ale ta:
find . -type f -print0 | xargs -0 cat | wc -l
Szybki i łatwy sposób:
Użyj wyszukiwania regularnego (Znajdź nawigator, wybierz Znajdź> Wyrażenie regularne).
. \ n
Działa wygodnie z zakresami wyszukiwania Xcode i możesz łatwo dostosować go do dowolnego typu linii, którą chcesz policzyć;).
Możesz zainstalować SLOCCount przez MacPorts. Lub, prościej, możesz użyć wc -l.
Nie jestem zaznajomiony z xcode, ale jeśli wszystko, czego potrzebujesz, to policzyć liczbę wierszy ze wszystkich tych konkretnych plików w drzewie katalogów, możesz użyć następującego polecenia:
find .... match of all those files ... -exec wc -l {} +
Podążając za odpowiedzią Joshuy Nozziego , w GNU znajdź wyrażenie regularne dla takich plików:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
lub nawet
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
to używa wyrażenia regularnego, aby dopasować wszystkie pliki kończące się albo .m
, .mm
, .cpp
lub .swift
. Więcej informacji na temat tych wyrażeń można znaleźć w artykule Jak używać wyrażeń regularnych w wyszukiwaniu plików .
Jeśli pracujesz z systemem Mac OS find , potrzebujesz nieco innego podejścia, jak wyjaśnił Motti Shneor w komentarzach:
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
Oba dadzą wynik w postaci:
234 ./file1
456 ./file2
690 total
Możesz więc zachować to w ten sposób lub po prostu potokować do tail -1
(to znaczy find ... | tail -1
), aby ostatnia linia była sumą.
\|
i innych w MacOS. --regex
działa zarówno w GNU find (tym, którego używam), jak i MacOS.
Przepraszam, że powtarzam. To najłatwiejszy sposób IMHO:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Spowoduje to skopiowanie wszystkich plików z folderu projektu do newFolder
.
newFolder
line-counter
to dobra alternatywa. Jest lżejszy niż CLOC i znacznie mocniejszy i łatwiejszy w użyciu niż inne polecenia.
Szybki przegląd
W ten sposób otrzymujesz narzędzie
$ pip install line-counter
Użyj line
polecenia, aby uzyskać liczbę plików i liczbę linii w bieżącym katalogu (rekurencyjnie)
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
Jeśli chcesz uzyskać więcej szczegółów, po prostu użyj 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
A najlepszą częścią tego narzędzia jest to, że możesz dodać do niego plik .gitignore podobny do pliku konfiguracyjnego. Możesz skonfigurować reguły, aby wybierać lub ignorować rodzaje plików do zliczenia, tak jak w przypadku „.gitignore”. Tak, to narzędzie zostało wymyślone po to, aby łatwiej było wiedzieć, ile mam linii.
Więcej opisu i użytkowania można znaleźć tutaj: https://github.com/MorganZhang100/line-counter
Jestem autorem tego prostego narzędzia. Mam nadzieję, że to może komuś pomóc.