Как Github рассчитывает процент языка в репо?

24

У меня есть репозиторий с Ruby и PHP-кодом.

Github говорит, что мой репозиторий - 74,8% PHP и 25,2% Ruby

Я не понимаю, как это может быть. Когда я сравниваю 2 языка в моем проекте:

# 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

Кажется, у Руби всегда больше.

Я что-то пропустил?

Джей Ди Айзекс
источник
Это действительно относится к справочному сайту / форуму Github.
DeadMG
9
Проверьте Linguist , библиотеку GitHub для обнаружения языков и генерации языковых диаграмм разбивки.
Яннис
1
@DeadMG Если бы он был на справочном сайте / форуме Github, я бы его не увидел. Следовательно, мне нравится тот факт, что этот интересный вопрос здесь.
JW01

Ответы:

21

Github использует Linguist для обнаружения языков в проекте.

Лингвист с открытым исходным кодом. посмотрите в исходные файлы, и вы найдете:

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

в /lib/linguist/file_blob.rb

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

поэтому он фактически использует размеры файлов для определения процента языка.

Также имейте в виду, что двоичные данные, вендорные файлы, сгенерированные файлы и непрограммные файлы исключаются.

Хуан Тао
источник