Gibt es eine Möglichkeit zu bestimmen, wie viele Codezeilen ein Xcode-Projekt enthält? Ich verspreche, solche Informationen nicht für Managementmessungen oder Mitarbeiter-Benchmarking-Zwecke zu verwenden. ;)
Gibt es eine Möglichkeit zu bestimmen, wie viele Codezeilen ein Xcode-Projekt enthält? Ich verspreche, solche Informationen nicht für Managementmessungen oder Mitarbeiter-Benchmarking-Zwecke zu verwenden. ;)
Antworten:
Schauen Sie sich CLOC an .
cloc zählt in vielen Programmiersprachen Leerzeilen, Kommentarzeilen und physische Zeilen des Quellcodes.
Ich sehe das herumschweben und benutze es selbst:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
Ich habe CLOC verwendet, wie von erwähntNathan Kinsinger
und es ist ziemlich einfach zu bedienen. Es ist ein PERL-Skript, das Sie hinzufügen und aus Ihrem Projektverzeichnis ausführen können.
PERL ist bereits Teil von Mac OS und Sie können das Skript auf diese Weise aufrufen, um herauszufinden, wie viele Zeilen Sie geschrieben haben:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Dies ist ein Beispiel für die Ausgabe, die ich von einem solchen Befehl erhalten habe:
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
-------------------------------------------------------------------------------
Öffnen Sie Terminal.app, wechseln Sie in das Stammverzeichnis Ihres Projekts und führen Sie den folgenden Befehl aus:
Nur für Swift:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
Nur für Obj-C:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
Für Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
Für 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 '{}' \+
Terminal schnelle Tipps:
ls: list Verzeichnisinhalt
cd: Verzeichnis wechseln
Drücken Registerkarte automatisch zu vervollständigen
Denken Sie daran zu setzen „\“ Backslash vor Leerzeichen
Ich schlage vor einem Ordner nach unten aus dem Hauptprojekt , so dass Sie Codezahl aus dem Frameworks loswerden
Wechseln Sie im Terminal in das Projektverzeichnis und führen Sie Folgendes aus:
find . -type f -print0 | xargs -0 cat | wc -l
Wenn Sie nur bestimmte Dateitypen möchten, versuchen Sie etwas wie
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Schauen Sie sich Xcode Statistician an, es macht genau das, was Sie wollen. Es bietet auch andere interessante Statistiken und ist daher ab und zu einen Lauf zum Spaß wert.
Beachten Sie, dass es nicht in echten Ordnern angezeigt wird, obwohl es in Gruppen angezeigt wird. Wahrscheinlich verwenden Sie keine echten Ordner, daher funktioniert es hervorragend. Wenn Sie Ordner verwenden, müssen Sie nur die Zählung in jedem Ordner durchführen und diese addieren.
Hinweis: Ab Juni 2012 scheint dies mit den neuesten Versionen von Xcode nicht richtig zu funktionieren.
Führen Sie den folgenden Befehl in Ihrem Projekt aus:
find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
Oder:
find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
(* Ohne die Anzahl der Pod-Dateien von der Gesamtzahl)
Wenn Sie im Terminal in das Verzeichnis Ihres Projekts gehen und Folgendes eingeben:
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
Dadurch erhalten Sie eine Projektaufschlüsselung sowie die Zeilensumme für jede Datei und das gesamte Projekt.
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
Nozzis Version funktioniert bei mir nicht, aber diese:
find . -type f -print0 | xargs -0 cat | wc -l
Ein schneller und einfacher Weg:
Verwenden Sie eine Regex-Suche (Find Navigator, wählen Sie Find> Regular Expression).
. \ n
Funktioniert bequem mit Xcode-Suchbereichen und kann problemlos an jeden Linientyp angepasst werden, den Sie zählen möchten;).
Sie können SLOCCount über MacPorts installieren . Oder, gröber, Sie können wc -l verwenden.
Ich bin mit xcode nicht vertraut, aber wenn Sie nur die Anzahl der Zeilen aus all diesen spezifischen Dateien in einem Verzeichnisbaum zählen müssen, können Sie den folgenden Befehl verwenden:
find .... match of all those files ... -exec wc -l {} +
Nach der Antwort von Joshua Nozzi würde in GNU der reguläre Ausdruck für solche Dateien wie folgt lauten:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
oder auch
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
Dies verwendet einen regulären Ausdruck, um alle Dateien abzugleichen, die entweder .m
mit .mm
, .cpp
oder enden .swift
. Weitere Informationen zu diesen Ausdrücken finden Sie unter Verwendung von Regex in der Dateisuche .
Wenn Sie mit Mac OS find arbeiten , benötigen Sie einen etwas anderen Ansatz, wie von Motti Shneor in den Kommentaren erläutert :
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
Beide liefern eine Ausgabe in Form von:
234 ./file1
456 ./file2
690 total
Sie können es also entweder so lassen oder einfach zu tail -1
(das heißt find ... | tail -1
) weiterleiten, sodass Sie nur die letzte Zeile als Summe erhalten.
\|
und andere in MacOS sprechen . --regex
ist sowohl in GNU find (dem von mir verwendeten) als auch in MacOS gültig.
Entschuldigung für die Wiederholung. Das ist meiner Meinung nach der einfachste Weg:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Dadurch werden alle Dateien aus dem Projektordner in kopiert newFolder
.
newFolder
line-counter
ist eine gute Alternative. Es ist leichter als CLOC und viel leistungsfähiger und einfacher zu bedienen als andere Befehle.
Ein kurzer Überblick
So erhalten Sie das Tool
$ pip install line-counter
Verwenden Sie den line
Befehl, um die Anzahl der Dateien und Zeilen im aktuellen Verzeichnis abzurufen (rekursiv).
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
Wenn Sie mehr Details wünschen, verwenden Sie einfach 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
Und das Beste an diesem Tool ist, dass Sie .gitignore wie configure file hinzufügen können. Sie können Regeln einrichten, um auszuwählen oder zu ignorieren, welche Art von Dateien gezählt werden sollen, genau wie in '.gitignore'. Ja, dieses Tool wurde nur erfunden, um zu wissen, wie viele Zeilen ich habe.
Weitere Beschreibung und Verwendung finden Sie hier: https://github.com/MorganZhang100/line-counter
Ich bin der Autor dieses einfachen Tools. Hoffe es kann jemandem helfen.