Primero, sepa que puede anular el idioma detectado para los archivos en su repositorio utilizando anulaciones de Linguist .
Ahora, en pocas palabras,
- Cada repositorio está etiquetado con el primer idioma de las estadísticas de idiomas .
- Las estadísticas de idiomas cuentan el tamaño total de los archivos para cada lenguaje de programación o marcado detectado. Los archivos vendidos, de documentación y generados no se cuentan.
- El idioma de cada archivo es detectado por el proyecto de código abierto Linguist .
¿Cómo detecta Linguist los idiomas?
Linguist se basa en las siguientes estrategias , en orden, y devuelve el idioma tan pronto como encuentra una combinación perfecta (estrategia con un solo idioma devuelto).
- Busque modelos de Emacs y Vim .
- Nombre de archivo conocido. Algunos nombres de archivo están asociados a idiomas específicos (piense
Makefile
).
- Busque un shebang. Un archivo con un
#!/bin/bash
shebang se clasificará como Shell.
- Extensión de archivo conocida. Los idiomas tienen un conjunto de extensiones asociadas. Sin embargo, existen muchos conflictos con esta estrategia. Los resultados contradictorios (piense en C ++, C y Objective-C para
.h
) son refinados por las estrategias posteriores.
- Un conjunto de reglas heurísticas . Por lo general, se basan en expresiones regulares sobre el contenido de los archivos para intentar identificar el idioma (por ejemplo,
^[^#]+:-
para Prolog ).
- Un clasificador bayesiano ingenuo entrenado en archivos de muestra . Última estrategia, menor precisión. El clasificador bayesiano siempre toma un subconjunto de idiomas como entrada; no está destinado a clasificar entre todos los idiomas. Se devuelve la mejor coincidencia encontrada por el clasificador.
¿Qué son los archivos no revelados y de documentación?
Linguist considera algunos archivos como vendidos , lo que significa que no se incluyen en las estadísticas del idioma. Estos incluyen bibliotecas de terceros como jQuery y se definen en el vendor.yml
archivo de configuración. También puede vender o desvelar archivos en su repositorio usando anulaciones de Linguist .
De manera similar, los archivos de documentación se definen en documentation.yml
y se pueden cambiar usando anulaciones de Linguist .
¿Cómo se detectan los archivos generados?
Linguist se basa en reglas simples para detectar archivos generados, utilizando tanto las rutas como el contenido de los archivos. Los archivos generados no se cuentan en las estadísticas de idioma y no se muestran en diffs en github.com.
¿Qué pasa con los lenguajes de programación y de marcado?
En lingüista, a cada idioma se le asigna un tipo. Estos tipos se pueden encontrar en el archivo de configuración, languages.yml
. Solo los lenguajes de programación y de marcado se cuentan en las estadísticas.