Github은 리포지토리에서 언어 비율을 어떻게 계산합니까? Ruby ls | grep “.*\.rb” |

Ruby 및 PHP 코드가있는 저장소가 있습니다.

Github에 따르면 내 리포는 PHP 74.8 %, 루비 25.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은 언어학 자를 사용 하여 프로젝트에서 언어 를 감지합니다.

언어학자는 오픈 소스입니다. 소스 파일을 살펴보면 다음을 찾을 수 있습니다.

…에서 /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

실제로 파일 크기를 사용하여 언어 백분율을 결정합니다.

이진 데이터, 공급 업체 파일, 생성 된 파일 및 비 프로그램 파일은 제외됩니다.