Comment Github calcule-t-il le pourcentage de langue dans un dépôt?

24

J'ai un dépôt avec du code Ruby et PHP dedans.

Github dit que mon repo est de 74,8% PHP et 25,2% Ruby

Je ne comprends pas comment cela peut être. Lorsque je compare les 2 langues de mon projet:

# 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 semble toujours en avoir plus.

Suis-je en train de manquer quelque chose?

JD Isaacks
la source
Cela appartient vraiment sur un site / forum d'aide Github.
DeadMG
9
Consultez Linguist , la bibliothèque de GitHub pour détecter les langues et générer des graphiques de répartition des langues.
yannis
1
@DeadMG Si c'était sur le site / forum d'aide de Github, je ne l'aurais pas vu. Par conséquent, j'aime le fait que cette question intéressante soit ici.
JW01

Réponses:

21

github utilise Linguist pour détecter les langues dans un projet.

Linguist est open source. regardez dans les fichiers source et vous trouverez:

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

dans /lib/linguist/file_blob.rb

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

il utilise donc la taille des fichiers pour déterminer le pourcentage de langue.

gardez également à l'esprit que les données binaires, les fichiers vendus, les fichiers générés et les fichiers non-programme sont exclus.

Huang Tao
la source