Existe-t-il un moyen de déterminer le nombre de lignes de code qu'un projet Xcode contient? Je promets de ne pas utiliser ces informations à des fins de mesure de la gestion ou d'analyse comparative des employés. ;)
Départ CLOC .
cloc compte les lignes vides, les lignes de commentaire et les lignes physiques du code source dans de nombreux langages de programmation.
Je vois ceci flotter et l'utilise moi-même:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.Swift" ")" -print0 | xargs -0 wc -l
J'ai utilisé CLOC comme mentionné par Nathan 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 manière pour connaître le nombre de lignes que vous avez écrites:
Perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Voici un exemple de résultat obtenu à partir 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
-------------------------------------------------------------------------------
Dans terminal, accédez au répertoire du projet et exécutez:
find . -type f -print0 | xargs -0 cat | wc -l
Si vous voulez seulement certains types de fichiers, essayez quelque chose comme:
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Ouvrez Terminal.app, allez dans le répertoire racine de votre projet et lancez la commande suivante:
Pour Swift seulement:
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 '{}' \+
Conseils rapides sur les terminaux:
ls: liste le contenu du répertoire
cd: changer de répertoire
Appuyez sur l'onglet pour compléter automatiquement
N'oubliez pas de mettre la barre oblique inversée "\" avant les espaces
Je suggère de supprimer un dossier du projet principal afin de supprimer le nombre de codes des frameworks.
Découvrez Xcode Statistician, il fait exactement ce que vous voulez. Il fournit également d’autres statistiques intéressantes, il vaut donc la peine de s’amuser de temps en temps.
Notez qu'il ne regardera pas dans de vrais dossiers, mais dans des groupes. Les chances sont que vous n'utilisez pas de vrais dossiers, donc ça fonctionnera très bien. Si vous utilisez des dossiers, il vous suffit de faire le décompte dans chaque dossier et de les additionner.
Note: À compter de 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
(* Excluant le 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.
La version de Nozzi ne fonctionne pas pour moi, mais celle-ci:
find . -type f -print0 | xargs -0 cat | wc -l
Vous pouvez installer SLOCCount via MacPorts. Ou, plus grossièrement, vous pouvez utiliser wc -l.
n moyen rapide et facile:
Utilisez une recherche regex (Recherche du navigateur, choisissez Recherche> Expression régulière).
.\n
Fonctionne facilement avec les portées de recherche Xcode et vous pouvez facilement le personnaliser pour n’importe quel type de ligne que vous souhaitez compter;).
Désolé de répéter. C'est le moyen le plus simple IMHO:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Cela copiera tous les fichiers du dossier du projet dans newFolder
.
newFolder
Je ne connais pas bien 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 {} +
Après réponse de Joshua Nozzi , dans , GNU trouve l'expression régulière de tels fichiers ressemblerait à ceci:
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 {} +
ceci utilise une expression régulière pour faire correspondre tous les fichiers se terminant par .m
, .mm
, .cpp
ou .Swift
. Vous pouvez voir plus d'informations sur ces expressions dans Comment utiliser regex dans la recherche de fichier .
Si vous travaillez avec Mac OS find , vous avez besoin d'une approche légèrement différente, comme expliqué par 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
Vous pouvez donc le garder comme ceci ou simplement diriger vers tail -1
(C'est, find ... | tail -1
) afin que vous obteniez juste la dernière ligne représentant le total.
line-counter
est une bonne alternative. Il est plus léger que CLOC et beaucoup plus puissant et facile à utiliser que les autres commandes.
Un aperçu rapide
Voici comment vous obtenez l'outil
$ pip install line-counter
Utilisez la commande line
pour obtenir le nombre de fichiers et le nombre de lignes dans le répertoire en cours (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 configurer des règles pour sélectionner ou ignorer le type de fichiers à compter, exactement comme ce que vous faites dans '.gitignore'. Oui, cet outil est juste inventé pour faire savoir combien de lignes j'ai plus facile.
Plus de description et d’utilisation est ici: https://github.com/MorganZhang100/line-counter
Je suis l'auteur de cet outil simple. J'espère que ça peut aider quelqu'un.
Toute étoile ou fourchette est appréciée: P