web-dev-qa-db-fra.com

Comment savoir combien de lignes de code il y a dans un projet Xcode?

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. ;)

138
Dave Gallagher

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.

( Les versions existantes sont archivées sur SourceForge .)

118
Nathan Kinsinger

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
219
Joshua Nozzi

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
-------------------------------------------------------------------------------
73
tiguero

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
43
Andrew McGregor

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.

42
Esqarrouth

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.

34
Matthew Frederick
  1. terminal ouvert
  2. accédez à votre projet
  3. 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)

27
Shan Shafiq

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.

15
RileyE

La version de Nozzi ne fonctionne pas pour moi, mais celle-ci:

find . -type f -print0 | xargs -0 cat | wc -l
9
Pascalius

Vous pouvez installer SLOCCount via MacPorts. Ou, plus grossièrement, vous pouvez utiliser wc -l.

6
anthony

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;).

5
Patrick Pijnappel

Désolé de répéter. C'est le moyen le plus simple IMHO:

  1. Dans le type de terminal

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.

  1. Téléchargez Xcode Statistician et utilisez-le avec newFolderenter image description here
2
Nik Kov

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.

2
fedorqui

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

1
Morgan Zhang