Во-первых, знайте, что вы можете переопределить язык, обнаруженный для файлов в вашем репозитории, используя переопределения Linguist .
Итак, в двух словах,
- Каждый репозиторий помечен первым языком из языковой статистики .
- Статистика языков подсчитывает общий размер файлов для каждого обнаруженного языка программирования или разметки. Продаваемые, документация и созданные файлы не учитываются.
- Язык каждого файла определяется Linguist проекта с открытым исходным кодом .
Как лингвист определяет языки?
Linguist полагается на следующие стратегии по порядку и возвращает язык, как только он находит идеальное соответствие (стратегия с возвращением одного языка).
- Ищите модели Emacs и Vim .
- Известное имя файла. Некоторые имена файлов связаны с определенными языками (подумайте
Makefile
).
- Ищите шебанга. Файл с
#!/bin/bash
шебангом будет классифицирован как Shell.
- Известное расширение файла. У языков есть набор связанных с ними расширений. Однако у этой стратегии есть много конфликтов. Противоречивые результаты (например, C ++, C и Objective-C
.h
) улучшаются с помощью последующих стратегий.
- Набор эвристических правил . Обычно они полагаются на регулярные выражения над содержимым файлов, чтобы попытаться определить язык (например,
^[^#]+:-
для Пролога ).
- Наивный байесовский классификатор, обученный на примерах файлов . Последняя стратегия, самая низкая точность. Байесовский классификатор всегда принимает на вход подмножество языков; он не предназначен для классификации по всем языкам. Возвращается лучшее совпадение, найденное классификатором.
Что такое файлы без маркировки и файлы документации?
Linguist считает некоторые файлы предоставленными , то есть они не включаются в языковую статистику. К ним относятся сторонние библиотеки, такие как jQuery, и они определены в vendor.yml
файле конфигурации. Вы также можете продавать или анонсировать файлы в своем репозитории, используя переопределения Linguist .
Точно так же файлы документации определены documentation.yml
и могут быть изменены с помощью переопределений Linguist. .
Как обнаруживаются сгенерированные файлы?
Лингвист полагается на простые правила для обнаружения сгенерированных файлов, используя как пути, так и содержимое файлов. Созданные файлы не учитываются в языковой статистике и не отображаются в различиях на github.com.
А как насчет языков программирования и разметки?
В Linguist каждому языку дается тип. Эти типы могут быть найдены в главном файле конфигурации languages.yml
. В статистике учитываются только языки программирования и разметки.