Jak Github oblicza procent języka w repozytorium?

24

Mam repozytorium z kodem Ruby i PHP.

Github mówi, że moje repo to 74,8% PHP i 25,2% Ruby

Nie rozumiem, jak to może być. Kiedy porównuję 2 języki w moim projekcie:

# 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 zawsze wydaje się mieć więcej.

Czy coś brakuje?

JD Isaacks
źródło
To naprawdę należy do strony pomocy / forum Github.
DeadMG,
9
Sprawdź Linguist , bibliotekę GitHub do wykrywania języków i generowania wykresów podziału języków.
yannis
1
@DeadMG Gdyby był na stronie pomocy / forum Github, nie widziałbym tego. Dlatego podoba mi się fakt, że to interesujące pytanie jest tutaj.
JW01

Odpowiedzi:

21

github używa Linguist do wykrywania języków w projekcie.

Lingwista jest oprogramowaniem typu open source. zajrzyj do plików źródłowych, a znajdziesz:

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

w /lib/linguist/file_blob.rb

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

więc faktycznie używa rozmiarów plików, aby określić procent języka.

należy również pamiętać, że dane binarne, pliki sprzedawane, pliki generowane i pliki nieprogramowe są wykluczone.

Huang Tao
źródło