¿Hay alguna manera de determinar cuántas líneas de código contiene un proyecto Xcode? Prometo no utilizar dicha información para fines de medición gerencial o de evaluación comparativa de empleados. ;)
¿Hay alguna manera de determinar cuántas líneas de código contiene un proyecto Xcode? Prometo no utilizar dicha información para fines de medición gerencial o de evaluación comparativa de empleados. ;)
Respuestas:
Echa un vistazo a CLOC .
cloc cuenta líneas en blanco, líneas de comentarios y líneas físicas de código fuente en muchos lenguajes de programación.
Veo esto flotando y lo uso yo mismo:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
He estado usando CLOC como lo mencionéNathan Kinsinger
y es bastante fácil de usar. Es un script PERL que puede agregar y ejecutar desde el directorio de su proyecto.
PERL ya forma parte de Mac OS y puede invocar el script de esta manera para averiguar la cantidad de líneas que ha escrito:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Este es un ejemplo de salida que obtuve de dicho comando:
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
-------------------------------------------------------------------------------
Abra Terminal.app, vaya al directorio raíz de su proyecto y ejecute este comando:
Solo para Swift:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
Solo para Obj-C:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
Para Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
Para 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 '{}' \+
Sugerencias rápidas para la terminal:
ls: enumerar el contenido del directorio
cd: cambiar directorio
Presione tab para autocompletar
Recuerde colocar la barra invertida "\" antes de los espacios
. Sugiero ir una carpeta hacia abajo desde el proyecto principal para deshacerse del recuento de códigos de los marcos
En la terminal, cambie al directorio del proyecto y ejecute:
find . -type f -print0 | xargs -0 cat | wc -l
Si solo desea ciertos tipos de archivos, intente algo como
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Echa un vistazo a Xcode Statistician, hace exactamente lo que quieres. También proporciona otras estadísticas interesantes, por lo que vale la pena correr por diversión de vez en cuando.
Tenga en cuenta que no se verá dentro de carpetas reales, aunque se verá en grupos. Lo más probable es que no estés usando carpetas reales, por lo que funcionará muy bien. Si está utilizando carpetas, solo tiene que hacer el recuento en cada carpeta y agregarlas juntas.
Nota: A partir de junio de 2012, parece que esto no funciona correctamente con las últimas versiones de Xcode.
ejecute el siguiente comando dentro de su proyecto:
find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
O:
find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
(* Excluido el recuento de archivos de pod del recuento total)
Si va al directorio de su proyecto en la terminal e ingresa:
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
Eso le dará un desglose del proyecto, así como el total de la línea para cada archivo y el proyecto en su conjunto.
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
La versión de Nozzi no funciona para mí, pero esta:
find . -type f -print0 | xargs -0 cat | wc -l
Una manera rápida y fácil:
Utilice una búsqueda de expresiones regulares (Buscar navegador, elija Buscar> Expresión regular).
.\norte
Funciona convenientemente con los ámbitos de búsqueda de Xcode y puede personalizarlo fácilmente para cualquier tipo de línea que desee contar;).
Puede instalar SLOCCount a través de MacPorts. O, más groseramente, puede usar wc -l.
No estoy familiarizado con xcode, pero si todo lo que necesita es contar el número de líneas de todos esos archivos específicos dentro de un árbol de directorios, puede usar el siguiente comando:
find .... match of all those files ... -exec wc -l {} +
Siguiendo la respuesta de Joshua Nozzi , en GNU encontrar la expresión regular para tales archivos sería:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
o incluso
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
Este utiliza una expresión regular para que coincida con todos los archivos que terminan en cualquiera de los dos .m
, .mm
, .cpp
o .swift
. Puede ver más información sobre esas expresiones en Cómo usar expresiones regulares en la búsqueda de archivos .
Si está trabajando con Mac OS find , entonces necesita un enfoque ligeramente diferente, como lo explica Motti Shneor en los comentarios:
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
Ambos proporcionarán una salida en forma de:
234 ./file1
456 ./file2
690 total
Por lo tanto, puede mantenerlo así o simplemente canalizar tail -1
(es decir find ... | tail -1
) para que solo obtenga la última línea como el total.
\|
y otros en MacOS. --regex
es válido tanto en GNU find (el que uso) como en MacOS.
Perdón por repetir. Esa es la forma más fácil en mi humilde opinión:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
Esto copiará todos los archivos de la carpeta del proyecto a newFolder
.
newFolder
line-counter
Es una buena alternativa. Es más ligero que CLOC y mucho más potente y fácil de usar que otros comandos.
Un resumen rápido
Así es como obtienes la herramienta
$ pip install line-counter
Use el line
comando para obtener el recuento de archivos y el recuento de líneas en el directorio actual (recursivamente)
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
Si quieres más detalles, solo úsalo 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
Y la mejor parte de esta herramienta es que puede agregarle .gitignore como configurar el archivo. Puede configurar reglas para seleccionar o ignorar qué tipo de archivos contar al igual que lo que hace en '.gitignore'. Sí, esta herramienta se acaba de inventar para que sea más fácil saber cuántas líneas tengo.
Más descripción y uso está aquí: https://github.com/MorganZhang100/line-counter
Soy el autor de esta sencilla herramienta. Espero que pueda ayudar a alguien.