Ich habe kürzlich an einem Github-Projekt in JavaScript und C ++ gearbeitet und festgestellt, dass Github das Projekt als C ++ markiert hat. Wenn Sie eine einzelne Sprache auswählen müssen, ist dies wahrscheinlich die richtige Bezeichnung, da der C ++ - Code als JavaScript-Bibliothek kompiliert ist. Ich habe mich jedoch gefragt, wie Github herausfindet, in welcher Sprache jedes Projekt markiert werden soll.
github
github-linguist
Justin Ethier
quelle
quelle
Antworten:
Update April 2013 von nuclearsandwich (GitHub-Supportteam oder "supportocat"):
die Hilfeseite „ ist mein Repository als die falsche Sprache markiert nun die erwähnt mit“ Linguist - Bibliothek , um Datei Sprache für Syntax zu bestimmen markieren und Repo - Statistiken. Linguist schließt bestimmte Dateinamen und Pfade von der Statistik aus, ausgenommen bestimmte Herstellerdateien und -verzeichnisse .
Die Hilfeseite " Warum wird meine Lieblingssprache nicht erkannt? " fügt hinzu:
(Ursprüngliche Antwort, Oktober 2012)
Dieser Thread zur GitHub-Unterstützung erklärt es:
Da dies nicht 100% genau ist, hatte dies einige dazu veranlasst, Folgendes hinzuzufügen:
Hinweis: Wie Mark Rushakoff in seiner Antwort erwähnt (positiv bewertet), wurde die Vermutung seitdem mit dem Linguist-Projekt (Open-Source ab Juni 2011) besser .
Sie können jedoch sehen, dass es immer noch Probleme gibt: Probleme mit GitHub Linguist .
Sehen Sie hier für weitere Details :
Außerdem können Sie einer .gitattributes-Datei Sprachanweisungen hinzufügen .
quelle
Derzeit Github des Linguist Projekt ist , was verwendet wird Sprache Statistiken , um zu bestimmen, wie beschrieben in dieser Github Blog - Post (die kam ein paar Monate, nachdem diese Frage ursprünglich gefragt wurde).
quelle
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,
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).
Makefile
).#!/bin/bash
Schebang wird als Shell klassifiziert..h
) werden durch die nachfolgenden Strategien verfeinert.^[^#]+:-
für Prolog ).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.quelle
Nach einigem Basteln mit dem Linguisten habe ich das bemerkt.
Bei Dateien mit einem Shebang wird der Shebang bei der Bestimmung der Sprache berücksichtigt, scheint jedoch gegenüber anderen Token gleichmäßig gewichtet zu sein . Dies scheint ein großer Fehler zu sein, da der Shebang die Sprache der Datei definitiv definieren sollte.
Dies kann Probleme beim Hervorheben verursachen.
quelle
Dateierweiterungen sind das erste, was mir in den Sinn kommt.
quelle
.js
als auch.cc
Dateien.