¿Cómo calcula Github el porcentaje de idioma en un repositorio?

24

Tengo un repositorio con código Ruby y PHP.

Github dice que mi repositorio es 74.8% PHP y 25.2% Ruby

No entiendo cómo puede ser esto. Cuando comparo los 2 idiomas en mi proyecto:

# 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 siempre parece tener más.

¿Me estoy perdiendo de algo?

JD Isaacks
fuente
Esto realmente pertenece a un sitio / foro de ayuda de Github.
DeadMG
99
Consulte Linguist , la biblioteca de GitHub para detectar idiomas y generar gráficos de desglose de idiomas.
yannis
1
@DeadMG Si estuviera en el sitio / foro de ayuda de Github, no lo habría visto. Por lo tanto, me gusta el hecho de que esta pregunta interesante está aquí.
JW01

Respuestas:

21

github usa Linguist para detectar idiomas en un proyecto.

Linguist es de código abierto. mira en los archivos de origen y encontrarás:

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

en /lib/linguist/file_blob.rb

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

por lo que en realidad usa tamaños de archivo para determinar el porcentaje de idioma.

También tenga en cuenta que se excluyen los datos binarios, los archivos vedados, los archivos generados y los archivos que no son de programa.

Huang Tao
fuente