Stellen Sie zunächst fest, dass Sie die für Dateien in Ihrem Repository erkannte Sprache mithilfe von Linguist-Überschreibungen überschreiben können .
Nun, kurz gesagt,
- Jedes Repository ist mit der ersten Sprache aus der Sprachstatistik versehen .
- Sprachstatistiken zählen die Gesamtgröße der Dateien für jede erkannte Programmier- oder Auszeichnungssprache. Liefer-, Dokumentations- und generierte Dateien werden nicht gezählt.
- Die Sprache jeder Datei wird vom Open Source-Projekt Linguist erkannt .
Wie erkennt der Linguist Sprachen?
Der Linguist verlässt sich der Reihe nach auf die folgenden Strategien und gibt die Sprache zurück, sobald eine perfekte Übereinstimmung gefunden wurde (Strategie mit einer einzigen zurückgegebenen Sprache).
- Suchen Sie nach Emacs- und Vim-Modellen .
- Bekannter Dateiname. Einige Dateinamen sind bestimmten Sprachen zugeordnet (denken Sie daran
Makefile
).
- Suchen Sie nach einem Schebang. Eine Akte mit einem
#!/bin/bash
Schebang wird als Shell klassifiziert.
- Bekannte Dateierweiterung. Sprachen sind eine Reihe von Erweiterungen zugeordnet. Es gibt jedoch viele Konflikte mit dieser Strategie. Die widersprüchlichen Ergebnisse (denken Sie an C ++, C und Objective-C für
.h
) werden durch die nachfolgenden Strategien verfeinert.
- Eine Reihe heuristischer Regeln . Sie verlassen sich normalerweise auf reguläre Ausdrücke über den Inhalt von Dateien, um die Sprache zu identifizieren (z. B.
^[^#]+:-
für Prolog ).
- Ein naiver Bayes'scher Klassifikator, der auf Beispieldateien trainiert wurde . Letzte Strategie, niedrigste Genauigkeit. Der Bayes'sche Klassifikator verwendet immer eine Teilmenge von Sprachen als Eingabe. Es ist nicht dazu gedacht, unter allen Sprachen zu klassifizieren. Die beste vom Klassifizierer gefundene Übereinstimmung wird zurückgegeben.
Was sind nicht verkaufte und Dokumentationsdateien?
Der Linguist betrachtet einige Dateien als verkauft , was bedeutet , dass sie nicht in der Sprachstatistik enthalten sind. Dazu gehören Bibliotheken von Drittanbietern wie jQuery, die in der vendor.yml
Konfigurationsdatei definiert sind . Sie können auch Lieferanten- oder Lieferantendateien in Ihrem Repository mithilfe von Linguist-Überschreibungen erstellen .
Ebenso werden Dokumentationsdateien in definiert documentation.yml
und können mithilfe von Linguist-Überschreibungen geändert werden .
Wie werden generierte Dateien erkannt?
Linguist verwendet einfache Regeln , um generierte Dateien zu erkennen, wobei sowohl die Pfade als auch der Inhalt der Dateien verwendet werden. Generierte Dateien werden in der Sprachstatistik nicht gezählt und nicht in diffs auf github.com angezeigt.
Was ist mit Programmier- und Auszeichnungssprachen?
In Linguist erhält jede Sprache einen Typ. Diese Typen finden Sie in der Hauptkonfigurationsdatei languages.yml
. In der Statistik werden nur die Programmier- und Auszeichnungssprachen gezählt.