Bagaimana cara Github menghitung persentase bahasa dalam repo?

24

Saya punya repo dengan Ruby dan kode PHP di dalamnya.

Github mengatakan repo saya adalah 74,8% PHP dan 25,2% Ruby

Saya tidak mengerti bagaimana ini bisa terjadi. Ketika saya membandingkan 2 bahasa di proyek saya:

# 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

Sepertinya Ruby selalu memiliki lebih banyak.

Apakah saya melewatkan sesuatu?

JD Isaacks
sumber
Ini benar-benar milik situs / forum bantuan Github.
DeadMG
9
Lihat Linguist , perpustakaan GitHub untuk mendeteksi bahasa dan membuat grafik penguraian bahasa.
yannis
1
@DeadMG Jika itu ada di situs / forum bantuan Github, saya tidak akan melihatnya. Karena itu, saya suka fakta bahwa pertanyaan menarik ini ada di sini.
JW01

Jawaban:

21

github menggunakan Ahli Bahasa untuk mendeteksi bahasa dalam suatu proyek.

Ahli bahasa adalah open source. lihat ke file sumber dan Anda akan menemukan:

di /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

di /lib/linguist/file_blob.rb

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

jadi itu benar-benar menggunakan ukuran file untuk menentukan persentase bahasa.

juga perlu diingat bahwa data biner, file yang dibatalkan, file yang dihasilkan, dan file non-program dikecualikan.

Huang Tao
sumber