En un repositorio de GitHub puede ver "estadísticas de idioma", que muestra el porcentaje del proyecto que está escrito en un idioma. Sin embargo, no muestra cuántas líneas de código consta el proyecto. A menudo, quiero obtener rápidamente una impresión de la escala y la complejidad de un proyecto, y el recuento de líneas de código puede dar una buena primera impresión. 500 líneas de código implican un proyecto relativamente simple, 100,000 líneas de código implican un proyecto muy grande / complicado.
Entonces, ¿es posible obtener las líneas de código escritas en varios idiomas desde un repositorio de GitHub, preferiblemente sin clonarlo?
La pregunta " Contar el número de líneas en un repositorio de git " pregunta cómo contar las líneas de código en un repositorio de Git local, pero:
- Tienes que clonar el proyecto, que podría ser masivo. Clonar un proyecto como Wine, por ejemplo, lleva años.
- Contaría líneas en archivos que no serían necesariamente código, como los archivos i13n.
- Si cuenta solo (por ejemplo) archivos Ruby, podría perder una gran cantidad de código en otros idiomas, como JavaScript. Tendría que saber de antemano qué idiomas usa el proyecto. También tendría que repetir el recuento para cada idioma que usa el proyecto.
Con todo, esto es potencialmente demasiado tiempo para "comprobar rápidamente la escala de un proyecto".
fuente
git clone --depth 1
. En cuanto a 2 y 3, sospecho que existe un software que puede hacer el análisis por usted, y puede hacer muchas suposiciones basadas en extensiones de archivo, pero me está costando mucho encontrar una buena búsqueda plazo para encontrar dicho software. Quizás necesites hacer otra pregunta.Respuestas:
Un script de shell
cloc-git
Puede usar este script de shell para contar el número de líneas en un repositorio Git remoto con un comando:
Instalación
Este script requiere que se instale CLOC ("Contar líneas de código").
cloc
probablemente se pueda instalar con su administrador de paquetes, por ejemplo,brew install cloc
con Homebrew . También hay una imagen acoplada publicada enmribeiro/cloc
.Puede instalar el script guardando su código en un archivo
cloc-git
, ejecutándolochmod +x cloc-git
y luego moviendo el archivo a una carpeta en su archivo$PATH
como/usr/local/bin
.Uso
El script toma un argumento, que es cualquier URL que
git clone
acepte. Ejemplos sonhttps://github.com/evalEmpire/perl5i.git
(HTTPS) o[email protected]:evalEmpire/perl5i.git
(SSH). Puede obtener esta URL desde cualquier página de proyecto de GitHub haciendo clic en "Clonar o descargar".Salida de ejemplo:
Alternativas
Ejecute los comandos manualmente
Si no desea molestarse en guardar e instalar el script de shell, puede ejecutar los comandos manualmente. Un ejemplo:
Lingüista
Si desea que los resultados coincidan exactamente con los porcentajes de idioma de GitHub, puede intentar instalar Linguist en lugar de CLOC . De acuerdo con su archivo README , debe
gem install linguist
ejecutarlo y luego ejecutarlolinguist
. No pude hacerlo funcionar ( número 2223 ).fuente
--depth 1
para descargar la confirmación más reciente. Para la mayoría de los repositorios, esto evita la preocupación de la pregunta original acerca de que la clonación demore demasiado.cloc
para obtener las líneas de código en un repositorio de Github sin clonar el repositorio en nuestra máquina (a través de Internet). loscloc-git
primeros clones de aslo dados anteriormente para proyectar antes de comenzar a contar el número de líneascloc
para usted. Paracloc
poder contar líneas en el código, su computadora tiene que descargar ese código, aunque solo temporalmente. Tenga en cuenta que incluso los navegadores web técnicamente están descargando páginas web cuando las visita; simplemente los guardan en la memoria en lugar de en el disco.que te dará el recuento total →
O use esta herramienta → http://line-count.herokuapp.com/
fuente
git ls-files | grep '\.py' | xargs wc -l
.xargs
awc -l
todos los archivos manualmente a continuación, utilizarawk
para sumar la columna, OMG esto es mucho más fácil.Hay una extensión para el navegador Google Chrome : GLOC que funciona para repositorios públicos y privados.
Cuenta el número de líneas de código de un proyecto desde:
fuente
Si va a la página de gráficos / contribuyentes, puede ver una lista de todos los contribuyentes al repositorio y cuántas líneas han agregado y eliminado.
A menos que me falte algo, restar el número agregado de líneas eliminadas del número agregado de líneas agregadas entre todos los contribuyentes debería producir el número total de líneas de código en el repositorio. (EDITAR: resulta que me faltaba algo después de todo. Echa un vistazo al comentario de orbitbot para más detalles).
ACTUALIZAR:
Estos datos también están disponibles en la API de GitHub . Entonces escribí un script rápido para obtener los datos y hacer el cálculo:
Simplemente péguelo en un fragmento de Chrome DevTools, cambie el repositorio y haga clic en Ejecutar.
Descargo de responsabilidad (gracias a lovasoa ):
Tome los resultados de este método con un grano de sal, porque para algunos repositorios (sorich87 / bootstrap-tour) da como resultado valores negativos, lo que podría indicar que hay algo mal con los datos devueltos por la API de GitHub.
ACTUALIZAR:
Parece que este método para calcular el número total de líneas no es del todo confiable. Echa un vistazo al comentario de orbitbot para más detalles.
fuente
fetch("https://api.github.com/repos/jquery/jquery/stats/code_frequency").then(x=>x.json()).then(x=>alert(x.reduce((total,changes)=>total+changes[1]+changes[2],0)))
Puede clonar solo el último commit usando
git clone --depth 1 <url>
y luego realizar su propio análisis usando Linguist , el mismo software que usa Github. Esa es la única forma en que sé que vas a obtener líneas de código.Otra opción es usar la API para enumerar los idiomas que usa el proyecto . No los da en líneas sino en bytes. Por ejemplo...
Aunque tome eso con un grano de sal, ese proyecto incluye YAML y JSON que el sitio web reconoce pero la API no.
Finalmente, puede usar la búsqueda de código para preguntar qué archivos coinciden con un idioma determinado. Este ejemplo pregunta qué archivos en perl5i son Perl.
https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i
. No le dará líneas, y debe solicitar el tamaño del archivo por separado utilizando el devueltourl
para cada archivo.fuente
Actualmente no es posible en Github.com o sus API-s
He hablado con el servicio de atención al cliente y confirmó que esto no se puede hacer en github.com. Sin embargo, han pasado la sugerencia al equipo de Github, así que espero que sea posible en el futuro. Si es así, me aseguraré de editar esta respuesta.
Mientras tanto, la respuesta de Rory O'Kane es una alternativa brillante basada en
cloc
un clon de reposo superficial.fuente
Puede usar la API de GitHub para obtener el sloc como la siguiente función
Personalmente, hice una extensión de Chrome que muestra el número de SLOC tanto en la lista de proyectos de github como en la página de detalles del proyecto. También puede configurar su token de acceso personal para acceder a repositorios privados y omitir el límite de la tasa de API.
Puede descargar desde aquí https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn
El código fuente está disponible aquí https://github.com/martianyi/github-sloc
fuente
Complemento de Firefox Github SLOC
Escribí un pequeño complemento de Firefox que imprime el número de líneas de código en las páginas del proyecto github: Github SLOC
fuente
Si la pregunta es "¿puede obtener rápidamente NÚMERO DE LÍNEAS de un repositorio de github", la respuesta es no como se indica en las otras respuestas.
Sin embargo, si la pregunta es "¿puede verificar rápidamente la ESCALA de un proyecto", generalmente calculo un proyecto mirando su tamaño. Por supuesto, el tamaño incluirá deltas de todas las confirmaciones activas, pero es una buena métrica ya que el orden de magnitud es bastante cercano.
P.ej
¿Qué tan grande es el proyecto "docker"?
En su navegador, ingrese api.github.com/repos/ORG_NAME/PROJECT_NAME, es decir, api.github.com/repos/docker/docker
En el hash de respuesta, puede encontrar el atributo de tamaño:
Esto debería darle una idea de la escala relativa del proyecto. El número parece estar en KB, pero cuando lo revisé en mi computadora es en realidad más pequeño, a pesar de que el orden de magnitud es consistente. (161432KB = 161MB, du -s -h docker = 65MB)
fuente
Instrucciones y explicación
sloc admite formatear la salida como a
cli-table
, comojson
ocsv
. Las expresiones regulares se pueden usar para excluir archivos y carpetas ( Más información sobre npm ).Powershell:
rm -r -force ".\react\"
o en Mac / Unix:rm -rf ".\react\"
Capturas de pantalla de los pasos ejecutados (cli-table):
salida sloc (sin argumentos):
fuente
Canalice la salida del número de líneas en cada archivo
sort
para organizar los archivos por recuento de líneas.git ls-files | xargs wc -l |sort -n
fuente
Del comentario de @ Tgr, hay una herramienta en línea: https://codetabs.com/count-loc/count-loc-online.html
fuente
Abra la terminal y ejecute lo siguiente:
fuente