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