Existe-t-il un moyen de déterminer combien de lignes de code un projet Xcode contient? Je m'engage à ne pas utiliser ces informations à des fins de mesure de gestion ou d'analyse comparative des employés. ;)
Existe-t-il un moyen de déterminer combien de lignes de code un projet Xcode contient? Je m'engage à ne pas utiliser ces informations à des fins de mesure de gestion ou d'analyse comparative des employés. ;)
Réponses:
Découvrez CLOC .
cloc compte les lignes vierges, les lignes de commentaires et les lignes physiques du code source dans de nombreux langages de programmation.
Je vois cela flotter et je l'utilise moi-même:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
J'utilise CLOC comme mentionné parNathan Kinsinger
et il est assez facile à utiliser. C'est un script PERL que vous pouvez ajouter et exécuter à partir du répertoire de votre projet.
PERL fait déjà partie de Mac OS et vous pouvez appeler le script de cette façon pour connaître le nombre de lignes que vous avez écrites:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Ceci est un exemple de sortie que j'ai obtenu d'une telle commande:
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
-------------------------------------------------------------------------------
Ouvrez Terminal.app, accédez au répertoire racine de votre projet et exécutez cette commande:
Pour Swift uniquement:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
Pour Obj-C uniquement:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
Pour Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
Pour 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 '{}' \+
Quelques conseils Terminal:
ls: Contenu répertoire liste
cd: changer le répertoire
onglet Appuyez sur pour saisie semi - automatique
Rappelez - vous de mettre « \ » barre oblique inverse avant espaces que
je suggère d' aller un dossier vers le bas du projet principal afin que vous vous débarrasser de comptage de code à partir des cadres
Dans le terminal, accédez au répertoire du projet et exécutez:
find . -type f -print0 | xargs -0 cat | wc -l
Si vous ne voulez que certains types de fichiers, essayez quelque chose comme
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Consultez Xcode Statistician, il fait exactement ce que vous voulez. Il fournit également d'autres statistiques intéressantes, il vaut donc la peine de courir pour le plaisir de temps en temps.
Notez qu'il ne cherchera pas à l'intérieur de vrais dossiers, bien qu'il cherchera dans des groupes. Il y a de fortes chances que vous n'utilisiez pas de vrais dossiers, donc cela fonctionnera très bien. Si vous utilisez des dossiers, il vous suffit de faire le décompte dans chaque dossier et de les ajouter ensemble.
Remarque: depuis juin 2012, il semble que cela ne fonctionne pas correctement avec les dernières versions de Xcode.
exécutez la commande suivante dans votre projet:
find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
Ou:
find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
(* À l'exclusion du nombre de fichiers pod du nombre total)
Si vous allez dans le répertoire de votre projet dans le terminal et entrez:
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
Cela vous donnera une ventilation du projet, ainsi que le total des lignes pour chaque fichier et le projet dans son ensemble.
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
La version de Nozzi ne fonctionne pas pour moi, mais celle-ci:
find . -type f -print0 | xargs -0 cat | wc -l
Un moyen simple et rapide:
Utilisez une recherche regex (Find Navigator, choisissez Find> Regular Expression).
. \ n
Fonctionne facilement avec les étendues de recherche Xcode et vous pouvez facilement le personnaliser en fonction du type de ligne que vous souhaitez compter;).
Vous pouvez installer SLOCCount via MacPorts. Ou, plus grossièrement, vous pouvez utiliser wc -l.
Je ne suis pas familier avec xcode, mais si tout ce dont vous avez besoin est de compter le nombre de lignes de tous ces fichiers spécifiques dans une arborescence de répertoires, vous pouvez utiliser la commande suivante:
find .... match of all those files ... -exec wc -l {} +
Suite à la réponse de Joshua Nozzi , dans GNU, trouver l'expression régulière pour de tels fichiers serait comme:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
ou même
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
celui - ci utilise une expression régulière pour correspondre à tous les fichiers se terminant soit .m
, .mm
, .cpp
ou .swift
. Vous pouvez voir plus d'informations sur ces expressions dans Comment utiliser regex dans la recherche de fichiers .
Si vous travaillez avec Mac OS find , vous avez besoin d'une approche légèrement différente, comme l'explique Motti Shneor dans les commentaires:
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
Les deux fourniront une sortie sous la forme de:
234 ./file1
456 ./file2
690 total
Ainsi, vous pouvez soit le garder comme ça, soit simplement le diriger vers tail -1
(c'est-à-dire find ... | tail -1
) pour que vous obteniez simplement la dernière ligne étant le total.
\|
et d'autres sous MacOS. --regex
est valide à la fois dans GNU find (celui que j'utilise) et MacOS.
Désolé de répéter. C'est le moyen le plus simple à mon humble avis:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Cela copiera tous les fichiers du dossier du projet vers newFolder
.
newFolder
line-counter
est une bonne alternative. Il est plus léger que CLOC et beaucoup plus puissant et plus facile à utiliser que les autres commandes.
Un aperçu rapide
Voici comment vous obtenez l'outil
$ pip install line-counter
Utilisez la line
commande pour obtenir le nombre de fichiers et le nombre de lignes dans le répertoire actuel (récursivement)
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
Si vous voulez plus de détails, utilisez simplement 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
Et la meilleure partie de cet outil est que vous pouvez y ajouter .gitignore comme un fichier de configuration. Vous pouvez définir des règles pour sélectionner ou ignorer le type de fichiers à compter, comme ce que vous faites dans «.gitignore». Oui, cet outil est juste inventé pour savoir combien de lignes j'ai plus facilement.
Plus de description et d'utilisation sont ici: https://github.com/MorganZhang100/line-counter
Je suis l'auteur de cet outil simple. J'espère que cela peut aider quelqu'un.