Wie berechnet Github den Sprachprozentsatz in einem Repo?

24

Ich habe ein Repo mit Ruby und PHP-Code.

Github sagt, mein Repo sei 74,8% PHP und 25,2% Ruby

Ich verstehe nicht, wie das sein kann. Wenn ich die 2 Sprachen in meinem Projekt vergleiche:

# 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 scheint immer mehr zu haben.

Vermisse ich etwas?

JD Isaacks
quelle
Das gehört wirklich auf eine Github-Hilfeseite / Forum.
DeadMG
9
Schauen Sie sich Linguist an , die GitHub-Bibliothek zum Erkennen von Sprachen und zum Generieren von Diagrammen zur Sprachaufteilung.
Yannis
1
@DeadMG Wenn es auf Githubs Hilfeseite / Forum wäre, hätte ich es nicht gesehen. Daher mag ich die Tatsache, dass diese interessante Frage hier ist.
JW01

Antworten:

21

github verwendet Linguist , um Sprachen in einem Projekt zu erkennen.

Der Linguist ist Open Source. Schauen Sie in die Quelldateien und finden Sie:

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

im /lib/linguist/file_blob.rb

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

Daher werden Dateigrößen verwendet, um den Sprachprozentsatz zu bestimmen.

Beachten Sie auch, dass Binärdaten, Vendoredateien, generierte Dateien und Nicht-Programmdateien ausgeschlossen sind.

Huang Tao
quelle