Github คำนวณเปอร์เซ็นต์ภาษาใน repo ได้อย่างไร


24

ฉันมี repo ที่มีรหัส Ruby และ PHP อยู่

Github กล่าวว่า repo ของฉันคือ 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 เพื่อค้นหาภาษาและสร้างกราฟแยกภาษา
yannis

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

ดังนั้นจึงใช้ขนาดไฟล์เพื่อกำหนดเปอร์เซ็นต์ภาษา

โปรดทราบว่าข้อมูลไบนารีไฟล์ที่เก็บไว้ไฟล์ที่สร้างและไฟล์ที่ไม่ใช่โปรแกรมจะถูกยกเว้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.