Innanzitutto, sappi che puoi sovrascrivere la lingua rilevata per i file nel tuo repository utilizzando le sostituzioni di Linguist .
Ora, in poche parole,
- Ogni repository è contrassegnato con la prima lingua dalle statistiche della lingua .
- Le statistiche del linguaggio contano la dimensione totale dei file per ogni linguaggio di programmazione o markup rilevato. Venduti, documentazione e file generati non vengono conteggiati.
- La lingua di ogni file viene rilevata dal progetto open source Linguist .
In che modo Linguist rileva le lingue?
Linguist fa affidamento sulle seguenti strategie , in ordine, e restituisce la lingua non appena ha trovato una corrispondenza perfetta (viene restituita la strategia con una sola lingua).
- Cerca le modeline Emacs e Vim .
- Nome file noto. Alcuni nomi di file sono associati a lingue specifiche (pensa
Makefile
).
- Cerca uno shebang. Un file con uno
#!/bin/bash
shebang sarà classificato come Shell.
- Estensione file nota. Le lingue hanno una serie di estensioni associate ad esse. Tuttavia, ci sono molti conflitti con questa strategia. I risultati contrastanti (si pensi a C ++, C e Objective-C per
.h
) vengono perfezionati dalle strategie successive.
- Un insieme di regole euristiche . Di solito si basano su espressioni regolari sul contenuto dei file per cercare di identificare la lingua (ad esempio,
^[^#]+:-
per Prolog ).
- Un classificatore bayesiano ingenuo addestrato su file di esempio . Ultima strategia, minima precisione. Il classificatore bayesiano accetta sempre un sottoinsieme di lingue come input; non ha lo scopo di classificare tra tutte le lingue. Viene restituita la migliore corrispondenza trovata dal classificatore.
Cosa sono i file non venduti e i file di documentazione?
Linguist considera alcuni file come venduti , nel senso che non sono inclusi nelle statistiche linguistiche. Questi includono librerie di terze parti come jQuery e sono definiti nel vendor.yml
file di configurazione. Puoi anche vendere o vendere file nel tuo repository utilizzando le sostituzioni di Linguist .
Allo stesso modo, i file di documentazione sono definiti documentation.yml
e possono essere modificati utilizzando le sostituzioni di Linguist .
Come vengono rilevati i file generati?
Linguist si basa su semplici regole per rilevare i file generati, utilizzando sia i percorsi che il contenuto dei file. I file generati non vengono conteggiati nelle statistiche della lingua e non vengono visualizzati nelle differenze su github.com.
E i linguaggi di programmazione e markup?
In Linguist, a ogni lingua viene assegnato un tipo. Questi tipi possono essere trovati nel file di configurazione principale, languages.yml
. Nelle statistiche vengono conteggiati solo i linguaggi di programmazione e markup.