Як 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
Ознайомтеся з мовознавцем , бібліотекою GitHub для виявлення мов та генерування графіків розбивки мови.
янніс

1
@DeadMG Якби це було на довідковому сайті / форумі Github, я б його не бачив. Отже, мені подобається те, що це цікаве питання тут.
JW01

Відповіді:


21

github використовує лінгвіст для виявлення мов у проекті.

Мовознавець є відкритим кодом. загляньте у вихідні файли, і ви знайдете:

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

тому він фактично використовує розміри файлів, щоб визначити відсоток мови.

також пам’ятайте, що двійкові дані, вендоровані файли, згенеровані файли та непрограмні файли виключаються.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.