Trước tiên, hãy biết rằng bạn có thể ghi đè ngôn ngữ được phát hiện cho các tệp trong kho lưu trữ của mình bằng cách sử dụng ghi đè Linguist .
Tóm lại, bây giờ,
- Mỗi kho được gắn thẻ với ngôn ngữ đầu tiên từ thống kê ngôn ngữ .
- Thống kê ngôn ngữ đếm tổng kích thước tệp cho mỗi ngôn ngữ lập trình hoặc đánh dấu được phát hiện. Các tệp được cung cấp, tài liệu và được tạo không được tính.
- Ngôn ngữ của mỗi tệp được phát hiện bởi dự án nguồn mở Linguist .
Nhà ngôn ngữ học phát hiện ngôn ngữ như thế nào?
Nhà ngôn ngữ học dựa vào các chiến lược sau , theo thứ tự và trả về ngôn ngữ ngay sau khi nó tìm thấy một kết hợp hoàn hảo (chiến lược trả về một ngôn ngữ duy nhất).
- Tìm kiếm các mô hình Emacs và Vim .
- Tên tệp đã biết. Một số tên tệp được liên kết với các ngôn ngữ cụ thể (nghĩ
Makefile
).
- Tìm kiếm một shebang. Một tệp có
#!/bin/bash
shebang sẽ được phân loại là Shell.
- Phần mở rộng tệp đã biết. Các ngôn ngữ có một tập hợp các phần mở rộng được liên kết với chúng. Tuy nhiên, có rất nhiều mâu thuẫn với chiến lược này. Các kết quả mâu thuẫn (nghĩ rằng C ++, C và Objective-C cho
.h
) được tinh chỉnh bởi các chiến lược tiếp theo.
- Một tập hợp các quy tắc heuristic . Họ thường dựa vào các cụm từ thông dụng đối với nội dung của tệp để thử và xác định ngôn ngữ (ví dụ:
^[^#]+:-
đối với Prolog ).
- Một bộ phân loại Bayes ngây thơ được đào tạo trên các tệp mẫu . Chiến lược cuối cùng, độ chính xác thấp nhất. Bộ phân loại Bayes luôn lấy một tập con các ngôn ngữ làm đầu vào; nó không có nghĩa là để phân loại giữa tất cả các ngôn ngữ. Kết quả phù hợp nhất được bộ phân loại tìm thấy sẽ được trả về.
Các tệp tài liệu và chưa được kiểm duyệt là gì?
Nhà ngôn ngữ học coi một số tệp là được cung cấp , nghĩa là chúng không được đưa vào thống kê ngôn ngữ. Chúng bao gồm các thư viện của bên thứ ba như jQuery và được định nghĩa trong vendor.yml
tệp cấu hình. Bạn cũng có thể cung cấp hoặc hủy công bố các tệp trong kho lưu trữ của mình bằng cách sử dụng ghi đè Linguist .
Tương tự, các tệp tài liệu được xác định trong documentation.yml
và có thể được thay đổi bằng cách sử dụng ghi đè Linguist .
Các tệp đã tạo được phát hiện như thế nào?
Nhà ngôn ngữ học dựa vào các quy tắc đơn giản để phát hiện các tệp được tạo, sử dụng cả đường dẫn và nội dung của tệp. Các tệp đã tạo không được tính trong thống kê ngôn ngữ và không được hiển thị ở dạng khác trên github.com.
Còn về ngôn ngữ lập trình và đánh dấu?
Trong Linguist, mỗi ngôn ngữ được cho một kiểu. Các loại này có thể được tìm thấy trong tệp cấu hình chính , languages.yml
. Chỉ các ngôn ngữ lập trình và đánh dấu mới được tính trong thống kê.