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