Como o Github calcula a porcentagem de idioma em um repositório?


24

Eu tenho um repositório com código Ruby e PHP nele.

O Github diz que meu repo é 74,8% PHP e 25,2% Ruby

Eu não entendo como isso pode ser. Quando eu comparo os 2 idiomas no meu projeto:

# 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 sempre parece ter mais.

Estou esquecendo de algo?


Isso realmente pertence a um site / fórum de ajuda do Github.
DeadMG

9
Confira o Linguist , a biblioteca do GitHub para detectar idiomas e gerar gráficos de detalhamento de idiomas.
yannis 8/07/12

11
@DeadMG Se estivesse no site / fórum de ajuda do Github, eu não o teria visto. Por isso, gosto do fato de que esta questão interessante está aqui.
JW01

Respostas:


21

O github usa o Linguist para detectar idiomas em um projeto.

Linguista é open source. procure nos arquivos de origem e você encontrará:

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

em /lib/linguist/file_blob.rb

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

então ele realmente usa tamanhos de arquivo para determinar a porcentagem do idioma.

lembre-se também de que dados binários, arquivos vendidos, arquivos gerados e arquivos que não são de programas são excluídos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.