Làm thế nào để Github tính toán tỷ lệ phần trăm ngôn ngữ trong một repo?


24

Tôi có một repo với mã Ruby và PHP trong đó.

Github nói rằng repo của tôi là 74,8% PHP và 25,2% Ruby

Tôi không hiểu làm thế nào điều này có thể được. Khi tôi so sánh 2 ngôn ngữ trong dự án của mình:

# Count how many files:

# Ruby
ls | grep ".*\.rb" | wc -l
# returns 10

#PHP
ls | grep ".*\.php" | wc -l
# returns 1


# Count how many lines, words, chars:

# Ruby
cat *.rb | wc
# returns 229, 812, 5303

# PHP
cat *.php | wc
# returns 102, 473, 2760

Ruby dường như luôn có nhiều hơn.

Tui bỏ lỡ điều gì vậy?


Điều này thực sự thuộc về một trang web / diễn đàn trợ giúp của Github.
DeadMG

9
Kiểm tra Linguist , thư viện của GitHub để phát hiện ngôn ngữ và tạo biểu đồ phân tích ngôn ngữ.
yannis

1
@DeadMG Nếu trên trang web / diễn đàn trợ giúp của Github, tôi sẽ không thấy nó. Do đó, tôi thích thực tế rằng câu hỏi thú vị này ở đây.
JW01

Câu trả lời:


21

github sử dụng Linguist để phát hiện các ngôn ngữ trong một dự án.

Ngôn ngữ học là nguồn mở. nhìn vào các tập tin nguồn và bạn sẽ tìm thấy:

trong /bin/linguist

repo.languages.sort_by { |_, size| size }.reverse.each do |language, size|
  percentage = ((size / repo.size.to_f) * 100).round
  puts "%-4s %s" % ["#{percentage}%", language]
end

trong /lib/linguist/file_blob.rb

 # Public: Get byte size
 #
 # Returns an Integer.
 def size
   File.size(@path)
 end

Vì vậy, nó thực sự sử dụng kích thước tập tin để xác định tỷ lệ phần trăm ngôn ngữ.

cũng lưu ý rằng dữ liệu nhị phân, tệp được trả lại, tệp được tạo và tệp không phải là chương trình được loại trừ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.