คุณสามารถรับจำนวนบรรทัดของรหัสจากที่เก็บ GitHub ได้หรือไม่?


417

ในพื้นที่เก็บข้อมูล GitHub คุณสามารถดู“ สถิติภาษา” ซึ่งแสดงเปอร์เซ็นต์ของโครงการที่เขียนด้วยภาษา อย่างไรก็ตามไม่แสดงจำนวนบรรทัดของโค้ดที่โครงการประกอบด้วย บ่อยครั้งที่ฉันต้องการได้รับความประทับใจในระดับและความซับซ้อนของโครงการอย่างรวดเร็วและการนับจำนวนบรรทัดสามารถสร้างความประทับใจครั้งแรกได้ โค้ด 500 บรรทัดแสดงถึงโครงการที่ค่อนข้างง่ายโค้ด 100,000 บรรทัดแสดงถึงโครงการขนาดใหญ่ / ซับซ้อน

ดังนั้นเป็นไปได้ที่จะได้รับบรรทัดของรหัสที่เขียนในภาษาต่าง ๆ จากพื้นที่เก็บข้อมูล GitHub โดยเฉพาะอย่างยิ่งโดยไม่ต้องโคลนหรือไม่


คำถาม“ นับจำนวนบรรทัดในที่เก็บ git ” ถามถึงวิธีการนับบรรทัดของรหัสในที่เก็บ Git ภายในเครื่อง แต่:

  1. คุณต้องโคลนโครงการซึ่งอาจมีขนาดใหญ่มาก ยกตัวอย่างเช่นการโคลนโครงการเช่นไวน์ใช้เวลานาน
  2. คุณจะนับจำนวนบรรทัดในไฟล์ที่ไม่จำเป็นต้องเป็นรหัสเช่นไฟล์ i13n
  3. ถ้าคุณนับเพียง (ตัวอย่าง) ไฟล์ทับทิมคุณควรที่จะพลาดที่อาจเกิดขึ้นจำนวนมหาศาลของรหัสในภาษาอื่น ๆ เช่น JavaScript คุณต้องรู้ล่วงหน้าว่าจะใช้ภาษาใดในโครงการ คุณต้องนับซ้ำสำหรับทุกภาษาที่โครงการใช้

ทั้งหมดนี้อาจใช้เวลานานเกินไปสำหรับ "ตรวจสอบขนาดของโครงการ" อย่างรวดเร็ว


4
@Schwern: ไม่ได้คิดอย่างนั้นจริงๆ ฉันคิดว่าการกระทำล่าสุดของสาขาหลัก
Hubro

8
@Abizern: นั่นเป็นเหตุผลที่ถูกต้องสำหรับการปิดคำถาม? ฉันพยายามที่จะพบว่าในแนวทาง แผนของฉันคือถาม SO ก่อน หากสิ่งนั้นได้รับการพิสูจน์แล้วว่าไร้ประโยชน์ฉันจะขอการสนับสนุนลูกค้าจาก Github และโพสต์ข้อมูลของพวกเขาเป็นคำตอบที่นี่
Hubro

7
@Abizern: ดูในหัวข้อ มันบอกว่าคุณสามารถถามคำถามเกี่ยวกับ "เครื่องมือซอฟต์แวร์ที่ใช้กันทั่วไปโดยโปรแกรมเมอร์"
Hubro

1
@Hubro 1 git clone --depth 1ผมเคยแก้ไขได้ด้วย สำหรับ 2 และ 3 ฉันสงสัยว่ามีซอฟต์แวร์ออกมาที่สามารถทำการวิเคราะห์ให้คุณได้และคุณสามารถคาดเดาได้มากมายจากนามสกุลไฟล์ แต่ฉันรู้สึกแย่มากที่ได้ค้นหาสิ่งดีๆ คำค้นหาซอฟต์แวร์ดังกล่าว บางทีคุณอาจต้องถามคำถามอื่น
Schwern

1
มีเครื่องมือออนไลน์ที่codetabs.com/count-loc/count-loc-online.htmlยังไม่ได้ลองถ้ามันดี
Tgr

คำตอบ:


298

เชลล์สคริปต์ cloc-git

คุณสามารถใช้เชลล์สคริปต์นี้เพื่อนับจำนวนบรรทัดในที่เก็บ Git ระยะไกลด้วยคำสั่งเดียว:

#!/usr/bin/env bash
git clone --depth 1 "$1" temp-linecount-repo &&
  printf "('temp-linecount-repo' will be deleted automatically)\n\n\n" &&
  cloc temp-linecount-repo &&
  rm -rf temp-linecount-repo

การติดตั้ง

สคริปต์นี้ต้องติดตั้งCLOC (“ Count Lines of Code”) clocอาจจะสามารถติดตั้งได้กับผู้จัดการแพคเกจของคุณ - ตัวอย่างเช่นbrew install clocกับHomebrew นอกจากนี้ยังมีภาพนักเทียบท่าที่เผยแพร่ภายใต้mribeiro/clocภาพนักเทียบท่าที่ตีพิมพ์ภายใต้

คุณสามารถติดตั้งสคริปต์โดยบันทึกรหัสลงในไฟล์cloc-gitเรียกใช้chmod +x cloc-gitแล้วย้ายไฟล์ไปยังโฟลเดอร์ในโฟลเดอร์ของคุณ$PATHเช่น/usr/local/binเช่น

การใช้

สคริปต์รับหนึ่งอาร์กิวเมนต์ซึ่งเป็น URL ใด ๆ ที่git cloneจะยอมรับ ตัวอย่างคือhttps://github.com/evalEmpire/perl5i.git(HTTPS) หรือgit@github.com:evalEmpire/perl5i.git (SSH) คุณสามารถรับ URL นี้จากหน้าโครงการ GitHub ใด ๆ โดยคลิก "โคลนหรือดาวน์โหลด"

ตัวอย่างผลลัพธ์:

$ cloc-git https://github.com/evalEmpire/perl5i.git
Cloning into 'temp-linecount-repo'...
remote: Counting objects: 200, done.
remote: Compressing objects: 100% (182/182), done.
remote: Total 200 (delta 13), reused 158 (delta 9), pack-reused 0
Receiving objects: 100% (200/200), 296.52 KiB | 110.00 KiB/s, done.
Resolving deltas: 100% (13/13), done.
Checking connectivity... done.
('temp-linecount-repo' will be deleted automatically)


     171 text files.
     166 unique files.                                          
      17 files ignored.

http://cloc.sourceforge.net v 1.62  T=1.13 s (134.1 files/s, 9764.6 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Perl                           149           2795           1425           6382
JSON                             1              0              0            270
YAML                             2              0              0            198
-------------------------------------------------------------------------------
SUM:                           152           2795           1425           6850
-------------------------------------------------------------------------------

ทางเลือก

เรียกใช้คำสั่งด้วยตนเอง

หากคุณไม่ต้องการรบกวนการบันทึกและติดตั้งเชลล์สคริปต์คุณสามารถเรียกใช้คำสั่งด้วยตนเอง ตัวอย่าง:

$ git clone --depth 1 https://github.com/evalEmpire/perl5i.git
$ cloc perl5i
$ rm -rf perl5i

นักภาษาศาสตร์

หากคุณต้องการผลเพื่อให้ตรงกับ GitHub ของเปอร์เซ็นต์ภาษาว่าคุณสามารถลองติดตั้งภาษาศาสตร์แทนcloc ตามที่README ของคุณจะต้องและดำเนินการแล้วgem install linguist linguistฉันไม่สามารถทำงานได้ ( ปัญหา # 2223 )


6
คำถามเดิมที่ระบุโดยไม่ต้องคัดลอก repo
linuxdan

12
@linuxdan สคริปต์ของฉันไม่ได้ลอกแบบ repo ทั้งหมด; มันผ่าน--depth 1ไปเพียงดาวน์โหลดการกระทำล่าสุด สำหรับ repos ส่วนใหญ่สิ่งนี้จะช่วยหลีกเลี่ยงความกังวลของคำถามเดิมเกี่ยวกับการโคลนโดยใช้เวลานาน
Rory O'Kane

2
ชายคนนี้ทำงานได้อย่างน่าอัศจรรย์! สงสัยอยู่เสมอว่าฉันเขียนโค้ดไว้กี่บรรทัด)
Anatoly Yakimchuk

@ RoryO'Kane เราสามารถใช้clocเพื่อรับบรรทัดของรหัสในที่เก็บ github โดยไม่ต้องโคลน repo ไปยังเครื่องของเรา (ผ่านทางออนไลน์) ข้างต้นให้cloc-gitโคลนนิ่งเป็นครั้งแรกในโครงการก่อนที่จะเริ่มนับจำนวนบรรทัด
Kasun Siyambalapitiya

@KasunSiyambalapitiya ขออภัยฉันไม่รู้จักเว็บไซต์ออนไลน์ใด ๆ ที่ทำงานclocให้คุณ ในclocการนับจำนวนบรรทัดในรหัสคอมพิวเตอร์ของคุณจะต้องดาวน์โหลดรหัสนั้นแม้จะเป็นการชั่วคราวเท่านั้น โปรดทราบว่าแม้แต่เว็บเบราว์เซอร์ก็สามารถดาวน์โหลดเว็บเพจได้เมื่อคุณเยี่ยมชม พวกเขาเพียงแค่บันทึกลงในหน่วยความจำแทนไปยังดิสก์
Rory O'Kane

226

คุณสามารถเรียกใช้บางสิ่งบางอย่างเช่น

git ls-files | xargs wc -l

ซึ่งจะทำให้คุณนับรวม→

บรรทัดของรหัส

หรือใช้เครื่องมือนี้→ http://line-count.herokuapp.com/


8
คำตอบสั้น ๆ สำหรับคำถาม (ค้นหาหมายเลขนี้โดยใช้ github) คือไม่วิธีการของคุณเป็นทางเลือกที่ดีที่สุดลำดับที่สองโดยเฉพาะอย่างยิ่งเนื่องจากเราสามารถกรองไฟล์ใดก็ตามที่เราจำเป็นต้องนับออก
เบอร์นาร์ด

32
git ls-files | grep '\.py' | xargs wc -lหากคุณต้องการกรองเช่นงูหลามรหัส:
Felipe SS Schneider

3
ผมทำxargsเพื่อwc -lไฟล์ทั้งหมดด้วยตนเองแล้วใช้awkที่จะสรุปคอลัมน์ OMG เป็นเช่นนี้ง่ายมาก
sdkks

1
วิธีการง่าย ๆ นี้รวมถึงความคิดเห็นในไฟล์ ความคิดเห็นและบรรทัดว่างไม่ถือเป็น "เส้นของรหัส" เสมอไป
Mark Stosberg

2
เอกสารเป็นส่วนใหญ่ของรหัส คุณจะวาดเส้นที่ไหนถ้าคุณแสดงความคิดเห็น สิ่งที่เกี่ยวกับความคิดเห็นที่มีข้อมูลรหัสเช่น params สิ่งที่เกี่ยวกับความคิดเห็นที่ปิดการใช้งาน ESLint สำหรับบรรทัดถัดไป - สิ่งที่เกี่ยวกับบรรทัดที่มีความคิดเห็น 80% หลังจากรหัสบางอย่าง ดูว่าฉันจะไปกับสิ่งนี้
Ahmad Awais

128

มีส่วนขยายสำหรับเบราว์เซอร์ Google Chrome คือ - GLOCซึ่งใช้งานได้กับสาธารณะและส่วนตัว

นับจำนวนบรรทัดของรหัสของโครงการจาก:

  • หน้ารายละเอียดโครงการ
  • ที่เก็บของผู้ใช้
  • หน้าองค์กร
  • หน้าผลการค้นหา
  • หน้าแนวโน้ม
  • สำรวจหน้า

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


3
upvoted แม้ว่ามันจะไม่ทำงานกับที่เก็บส่วนตัว
Michail Michailidis

4
@MichailMichailidis ขอบคุณสำหรับคำแนะนำของคุณ ฉันจะแก้ไข
Artem Solovev

4
@ ราศีพฤษภความคิดเห็นของฉันไม่ได้หมายความว่าเป็น CR - จากมุมมองการใช้งานการไล่ระดับสีทำงาน (ด้วยเหตุผลที่คุณพูดถึง) ฉันหมายความว่าฉันไม่ได้เป็นแฟนของสีที่เลือก แต่นั่นเป็นเพียงความเห็น (ส่วนตัว) ของฉัน ไชโย :)
tech4242

2
@hellyale แน่นอน ในไม่กี่สัปดาห์
Artem Solovev

2
@hellyale มันก็ใช้ได้กับ repos ส่วนตัวเช่นกัน อัปเดตส่วนขยาย มีคุณสมบัติใหม่เพิ่มเติมให้ใช้
Artem Solovev

70

หากคุณไปที่หน้ากราฟ / ผู้มีส่วนร่วมคุณสามารถดูรายการผู้สนับสนุนทั้งหมดที่ซื้อคืนและจำนวนบรรทัดที่เพิ่มและลบออก

นอกจากว่าฉันขาดอะไรไปการลบจำนวนบรรทัดโดยรวมที่ลบออกจากจำนวนรวมของบรรทัดที่เพิ่มในหมู่ผู้สนับสนุนทั้งหมดควรให้ผลรวมจำนวนบรรทัดของโค้ดใน repo (แก้ไข: กลายเป็นว่าฉันพลาดอะไรบางอย่างไปลองดูที่ความคิดเห็นของ orbitbotเพื่อดูรายละเอียด)

UPDATE:

ข้อมูลเหล่านี้ยังมีอยู่ใน GitHub ของAPI ดังนั้นฉันจึงเขียนสคริปต์อย่างรวดเร็วเพื่อดึงข้อมูลและทำการคำนวณ:

'use strict';

function countGithub(repo) {
fetch('https://api.github.com/repos/'+repo+'/stats/contributors')
    .then(response => response.json())
    .then(contributors => contributors
        .map(contributor => contributor.weeks
            .reduce((lineCount, week) => lineCount + week.a - week.d, 0)))
    .then(lineCounts => lineCounts.reduce((lineTotal, lineCount) => lineTotal + lineCount))
    .then(lines => window.alert(lines));
}

countGithub('jquery/jquery'); // or count anything you like

เพียงวางไว้ในตัวอย่าง Chrome DevTools เปลี่ยน repo และคลิกเรียกใช้

ข้อจำกัดความรับผิดชอบ (ขอบคุณlovasoa ):

นำผลลัพธ์ของวิธีนี้ไปด้วยเม็ดเกลือเพราะสำหรับ repos บางตัว (sorich87 / bootstrap-tour) จะให้ผลลัพธ์เป็นค่าลบซึ่งอาจบ่งบอกว่ามีบางอย่างผิดปกติกับข้อมูลที่ส่งคืนจาก API ของ GitHub

UPDATE:

ดูเหมือนว่าวิธีนี้ในการคำนวณหมายเลขบรรทัดทั้งหมดไม่น่าเชื่อถืออย่างสิ้นเชิง ดูความคิดเห็นของ orbitbotเพื่อดูรายละเอียด


ขวา. แต่ในบางกรณีที่โครงการเป็นโครงการชุมชนโอเพ่นซอร์สขนาดใหญ่การนับแบบนี้ไม่สามารถทำได้
แฟรงคลิน

@franklin แน่นอน อย่างไรก็ตามข้อมูลนี้ยังมีอยู่ในAPIของ GitHub ดังนั้นคุณสามารถเขียนสคริปต์เพื่อคำนวณจำนวนบรรทัดทั้งหมดได้อย่างง่ายดาย ฉันปรับปรุงคำตอบของฉันด้วยสคริปต์ด่วนที่ฉันเพิ่งเขียนขึ้น
ลูอิส

มันจะง่ายกว่าการใช้ code_frequecy API การให้: fetch("https://api.github.com/repos/jquery/jquery/stats/code_frequency").then(x=>x.json()).then(x=>alert(x.reduce((total,changes)=>total+changes[1]+changes[2],0)))
lovasoa

อืม ... น่าสนใจ: ทดสอบโค้ดของคุณใน sorich87 / bootstrap-tour ผลลัพธ์เป็นค่าลบ
lovasoa

3
@Lewis ฉันคิดว่าคุณไม่สนใจว่าการเพิ่ม / ลบบรรทัดในการคอมมิชชันสามารถเหมือนกับคอมมิชชันอื่น fe เมื่อรวมสาขา ฯลฯ ซึ่งยังคงนับรวมอยู่ นอกจากนี้เฟ Github ผลงานสถิติสำหรับโปรไฟล์ผู้ใช้จะนับเฉพาะจากสาขาเริ่มต้นหรือ GH-หน้าดังนั้นอาจจะมีบางสิ่งบางอย่างที่คล้ายกันเกิดขึ้นสำหรับการกระทำบรรทัดสถิติ /: help.github.com/articles/... โปรดทราบว่าสถิติโปรไฟล์ผู้ใช้จะนับเฉพาะปีที่แล้ว แต่ฉันคิดว่าสถิติการส่งข้อมูลในหน้ากราฟนั้นเป็นแบบถาวร
orbitbot

38

คุณสามารถโคลนการคอมมิชชันล่าสุดที่ใช้git clone --depth 1 <url>แล้วทำการวิเคราะห์ของคุณเองโดยใช้Linguistซึ่งเป็นซอฟต์แวร์เดียวกับที่ Github ใช้ นั่นเป็นวิธีเดียวที่ฉันรู้ว่าคุณจะได้รับสายของรหัส

อีกตัวเลือกหนึ่งคือการใช้ API เพื่อแสดงรายการภาษาที่ใช้ในโครงการ มันไม่ได้ให้พวกมันเป็นเส้น แต่เป็นไบต์ ตัวอย่างเช่น...

$ curl https://api.github.com/repos/evalEmpire/perl5i/languages
{
  "Perl": 274835
}

แม้ว่าจะใช้เกลือเม็ดเดียวโครงการดังกล่าวรวมถึง YAML และ JSON ซึ่งเว็บไซต์รับทราบแต่ API ไม่

สุดท้ายคุณสามารถใช้การค้นหารหัสเพื่อถามไฟล์ที่ตรงกับภาษาที่กำหนด ตัวอย่างนี้ถามว่าไฟล์ใดใน perl5i คือ Perl https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i. มันจะไม่ให้บรรทัดกับคุณและคุณต้องขอขนาดไฟล์แยกต่างหากโดยใช้การคืนค่าurlสำหรับแต่ละไฟล์


เท่ไม่รู้เรื่องนั้น คุณช่วยยืนยันได้ไหมว่ามันไม่สามารถทำได้บนเว็บไซต์ Github ใช่ไหม?
Hubro

ฉันไม่สามารถยืนยันได้ แต่ฉันไม่เห็นอะไรเลยใน API หรือบนเว็บไซต์ Github ที่จะให้สายคุณ เป็นจำนวนไบต์หรือเปอร์เซ็นต์ เหตุผลในการทำผ่าน API แทนที่จะทำโคลนคืออะไร?
Schwern

ตกลงขอบคุณสำหรับข้อมูลว่า ฉันจะขอการสนับสนุน Github
Hubro

นักภาษาศาสตร์ดูดี แต่คุณจะให้มันแสดงบรรทัดของรหัสได้อย่างไร ดูเหมือนว่าจะแสดงเป็นไบต์ตามค่าเริ่มต้นเช่นเดียวกับ API
Hubro

@Hubro Dunno คุณอาจต้องแก้ไขมัน
Schwern

33

ไม่สามารถทำได้ใน Github.com หรือ API

ฉันได้พูดคุยกับฝ่ายบริการลูกค้าและยืนยันว่าไม่สามารถทำได้บน github.com พวกเขาได้ส่งข้อเสนอแนะไปยังทีม Github ดังนั้นหวังว่าจะเป็นไปได้ในอนาคต ถ้าเป็นเช่นนั้นฉันจะต้องแก้ไขคำตอบนี้

ในขณะเดียวกันคำตอบของ Rory O'Kaneก็เป็นทางเลือกที่ยอดเยี่ยมตามclocและโคลน repo ตื้น ๆ


2
ไม่ได้โดยตรง แต่API สถิติของพวกเขามีข้อมูลทั้งหมดที่คุณต้องการในการคำนวณด้วยตัวเอง ดูคำตอบของฉันด้านล่างสำหรับสคริปต์อย่างรวดเร็วที่ทำ
ลูอิส

12

คุณสามารถใช้ GitHub API เพื่อรับ sloc เหมือนกับฟังก์ชันต่อไปนี้

function getSloc(repo, tries) {

    //repo is the repo's path
    if (!repo) {
        return Promise.reject(new Error("No repo provided"));
    }

    //GitHub's API may return an empty object the first time it is accessed
    //We can try several times then stop
    if (tries === 0) {
        return Promise.reject(new Error("Too many tries"));
    }

    let url = "https://api.github.com/repos" + repo + "/stats/code_frequency";

    return fetch(url)
        .then(x => x.json())
        .then(x => x.reduce((total, changes) => total + changes[1] + changes[2], 0))
        .catch(err => getSloc(repo, tries - 1));
}

โดยส่วนตัวแล้วฉันสร้างส่วนขยายของโครเมี่ยมซึ่งแสดงจำนวน SLOC ทั้งในรายการโครงการ github และหน้ารายละเอียดโครงการ คุณยังสามารถตั้งค่าโทเค็นการเข้าถึงส่วนบุคคลของคุณเพื่อเข้าถึงที่เก็บส่วนตัวและหลีกเลี่ยงการ จำกัด อัตรา api

คุณสามารถดาวน์โหลดได้จากที่นี่https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn

ซอร์สโค้ดมีให้ที่นี่https://github.com/martianyi/github-sloc


สำหรับส่วนขยายของโครเมี่ยม SLOC ถูกกำหนดอย่างไร? ไฟล์ทุกประเภท? ยกเว้นไดเรกทอรีเฉพาะหรือไม่
Brett Reinhard

@BrettReinhard มันขึ้นอยู่กับจำนวนของการเพิ่มและการลบต่อสัปดาห์ฉันคิดว่ามันมีไฟล์ทั้งหมด
Yi Kai

ไม่เพียงแค่คืนจำนวนการเปลี่ยนแปลงในสัปดาห์ที่แล้วใช่ไหม
Ziemke 'ปลา' ของโยฮันเนส

@ Johannes'fish'Ziemke ไม่มันจะส่งคืนทุกสัปดาห์
Yi Kai

11

Firefox Add-on Github SLOC

ฉันเขียน addon firefox ขนาดเล็กที่พิมพ์จำนวนบรรทัดของโค้ดบนหน้าโปรเจ็กต์Github : Github SLOC


ปลั๊กอินที่ยอดเยี่ยมมีประโยชน์มาก! คุณรู้หรือไม่ว่ามันเป็นไปได้ที่จะทำให้มันทำงานร่วมกับ repos ส่วนตัว? ดูเหมือนว่าจะแสดงเฉพาะ LOC ใน repos สาธารณะ
โรโคโค

ลิงค์เสียชีวิตและหลังจากค้นหาด้วยตนเองดูเหมือนว่าน่าเสียดายที่ปลั๊กอินนี้ไม่มีอยู่อีกต่อไป
dCSeven

มีการร้องขอให้ทำ GLOC สำหรับ Firefox ด้วยและดูเหมือนว่านักพัฒนาจะเปิดรับแนวคิด: github.com/artem-solovev/gloc/issues/23
miyalys

1
@miyalys เสร็จแล้ว: addons.mozilla.org/en-US/firefox/addon/gloc
Shachaf Zohar

7

หากคำถามคือ "คุณจะได้รับจำนวนบรรทัดของรายการซื้อ github อย่างรวดเร็ว " คำตอบคือไม่ตามที่ระบุไว้โดยคำตอบอื่น ๆ

อย่างไรก็ตามหากคำถามคือ "คุณสามารถ ตรวจสอบขนาดของโครงการได้อย่างรวดเร็ว " ฉันมักจะวัดโครงการโดยดูที่ขนาดของมัน แน่นอนขนาดจะรวมถึง deltas จากการกระทำที่ใช้งานอยู่ทั้งหมด แต่มันเป็นตัวชี้วัดที่ดีเนื่องจากลำดับของขนาดค่อนข้างใกล้เคียง

เช่น

โครงการ "นักเทียบท่า" มีขนาดใหญ่เพียงใด

ในเบราว์เซอร์ของคุณให้ป้อน api.github.com/repos/ORG_NAME/PROJECT_NAME เช่น api.github.com/repos/docker/docker

ในแฮชการตอบกลับคุณสามารถค้นหาคุณลักษณะขนาดได้:

{
    ...
    size: 161432,
    ...
}

สิ่งนี้จะช่วยให้คุณทราบถึงระดับความสัมพันธ์ของโครงการ จำนวนดูเหมือนจะเป็น KB แต่เมื่อฉันตรวจสอบในคอมพิวเตอร์ของฉันมันมีขนาดเล็กลงจริงถึงแม้ว่าลำดับความสำคัญมีความสอดคล้องกัน (161432KB = 161MB, du -s -h docker = 65MB)


1
npm install sloc -g
git clone --depth 1 https://github.com/vuejs/vue/
sloc ".\vue\src" --format cli-table
rm -rf ".\vue\"

คำแนะนำและคำอธิบาย

  1. ติดตั้ง sloc จาก npmซึ่งเป็นเครื่องมือบรรทัดคำสั่ง ( จำเป็นต้องติดตั้งNode.js )
npm install sloc -g
  1. พื้นที่เก็บข้อมูลแบบโคลน Clone (ดาวน์โหลดได้เร็วกว่าการโคลนแบบเต็ม)
git clone --depth 1 https://github.com/facebook/react/
  1. รัน slocและระบุพา ธ ที่ควรวิเคราะห์
sloc ".\react\src" --format cli-table

SLOC สนับสนุนการจัดรูปแบบการส่งออกเป็นcli-tableเป็นหรือjson csvนิพจน์ทั่วไปสามารถใช้เพื่อยกเว้นไฟล์และโฟลเดอร์ ( ข้อมูลเพิ่มเติมเกี่ยวกับ npm )

  1. ลบโฟลเดอร์ที่เก็บ (ไม่จำเป็น)

Powershell: rm -r -force ".\react\"หรือบน Mac / Unix:rm -rf ".\react\"

สกรีนช็อตของขั้นตอนดำเนินการ (cli-table):

เอาต์พุต sloc เป็น acli-table

เอาต์พุต sloc (ไม่มีอาร์กิวเมนต์):

เอาต์พุต sloc โดยไม่มีข้อโต้แย้ง


สิ่งนี้ดูเหมือนจะไม่ทำงานสำหรับไฟล์ R เช่น. R หรือ. RMm
jzadra

1

ไพพ์เอาต์พุตจากจำนวนบรรทัดในแต่ละไฟล์ไปsortยังเพื่อจัดระเบียบไฟล์ตามจำนวนบรรทัด git ls-files | xargs wc -l |sort -n



0

เปิดเทอร์มินัลแล้วเรียกใช้สิ่งต่อไปนี้:

curl https://api.codetabs.com/v1/loc?github=username/reponame
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.