Dalam repositori GitHub Anda dapat melihat "statistik bahasa", yang menampilkan persentase proyek yang ditulis dalam bahasa. Namun, itu tidak menampilkan berapa banyak baris kode proyek terdiri dari. Seringkali, saya ingin dengan cepat mendapatkan kesan tentang skala dan kompleksitas suatu proyek, dan jumlah baris kode dapat memberikan kesan pertama yang baik. 500 baris kode menyiratkan proyek yang relatif sederhana, 100.000 baris kode menyiratkan proyek yang sangat besar / rumit.
Jadi, apakah mungkin untuk mendapatkan baris kode yang ditulis dalam berbagai bahasa dari repositori GitHub, lebih disukai tanpa mengkloningnya?
Pertanyaan “ Hitung jumlah baris dalam repositori git ” menanyakan bagaimana cara menghitung baris kode dalam repositori Git lokal, tetapi:
- Anda harus mengkloning proyek, yang bisa sangat besar. Mengkloning proyek seperti Wine, misalnya, membutuhkan waktu lama.
- Anda akan menghitung baris dalam file yang tidak harus berupa kode, seperti file i13n.
- Jika Anda menghitung hanya (misalnya) file Ruby, Anda berpotensi kehilangan sejumlah besar kode dalam bahasa lain, seperti JavaScript. Anda harus tahu sebelumnya bahasa yang digunakan proyek. Anda juga harus mengulangi penghitungan untuk setiap bahasa yang digunakan proyek.
Secara keseluruhan, ini berpotensi terlalu banyak waktu untuk “memeriksa skala proyek” dengan cepat.
sumber
git clone --depth 1
. Adapun 2 dan 3, saya curiga ada perangkat lunak di luar sana yang dapat melakukan analisis untuk Anda, dan Anda dapat melakukan banyak tebakan berdasarkan ekstensi file, tapi saya punya banyak waktu dengan pencarian yang bagus istilah untuk menemukan perangkat lunak tersebut. Mungkin Anda perlu bertanya pertanyaan lain.Jawaban:
Skrip shell,
cloc-git
Anda dapat menggunakan skrip shell ini untuk menghitung jumlah baris dalam repositori Git jarak jauh dengan satu perintah:
Instalasi
Script ini membutuhkan CLOC ("Count Lines of Code") untuk diinstal.
cloc
mungkin dapat diinstal dengan manajer paket Anda - misalnya,brew install cloc
dengan Homebrew . Ada juga gambar buruh pelabuhan yang diterbitkan di bawahmribeiro/cloc
.Anda dapat menginstal skrip dengan menyimpan kodenya ke file
cloc-git
, menjalankanchmod +x cloc-git
, dan kemudian memindahkan file ke folder$PATH
seperti Anda/usr/local/bin
.Pemakaian
Script mengambil satu argumen, yaitu URL apa saja yang
git clone
akan menerima. Contohnya adalahhttps://github.com/evalEmpire/perl5i.git
(HTTPS) atau[email protected]:evalEmpire/perl5i.git
(SSH). Anda bisa mendapatkan URL ini dari halaman proyek GitHub dengan mengklik "Kloning atau unduh".Contoh output:
Alternatif
Jalankan perintah secara manual
Jika Anda tidak ingin repot menyimpan dan menginstal skrip shell, Anda dapat menjalankan perintah secara manual. Sebuah contoh:
Ahli bahasa
Jika Anda ingin hasilnya sesuai dengan persentase bahasa GitHub dengan tepat, Anda dapat mencoba menginstal Linguist alih-alih CLOC . Menurut README-nya , Anda harus
gem install linguist
menjalankannyalinguist
. Saya tidak bisa menjalankannya ( edisi # 2223 ).sumber
--depth 1
hanya berlaku untuk mengunduh komit terbaru. Untuk sebagian besar repo, ini menghindari kekhawatiran pertanyaan awal tentang kloning terlalu lama.cloc
untuk mendapatkan baris kode di repositori github tanpa mengkloning repo ke mesin kita (melalui online). di atas diberikancloc-git
juga klon pertama untuk memproyeksikan sebelum mulai menghitung no of linescloc
untuk Anda. Agarcloc
dapat menghitung baris dalam kode, komputer Anda harus mengunduh kode itu, meskipun hanya sementara. Perhatikan bahwa bahkan browser web secara teknis mengunduh halaman web ketika Anda mengunjunginya; mereka hanya menyimpannya ke memori, bukan ke disk.yang akan memberi Anda jumlah total →
Atau gunakan alat ini → http://line-count.herokuapp.com/
sumber
git ls-files | grep '\.py' | xargs wc -l
.xargs
untukwc -l
semua file secara manual kemudian gunakanawk
untuk menjumlahkan kolom, OMG ini jauh lebih mudah.Ada ekstensi untuk browser Google Chrome - GLOC yang berfungsi untuk repo publik dan pribadi.
Menghitung jumlah baris kode proyek dari:
sumber
Jika Anda pergi ke halaman grafik / kontributor, Anda dapat melihat daftar semua kontributor pada repo dan berapa banyak baris yang telah ditambahkan dan dihapus.
Kecuali jika saya melewatkan sesuatu, mengurangi jumlah garis agregat yang dihapus dari jumlah garis agregat yang ditambahkan di antara semua kontributor harus menghasilkan jumlah total baris kode dalam repo. (EDIT: ternyata aku kehilangan sesuatu. Lihat komentar orbitbot untuk lebih jelasnya.)
MEMPERBARUI:
Data ini juga tersedia di API GitHub . Jadi saya menulis skrip cepat untuk mengambil data dan melakukan perhitungan:
Cukup tempel di cuplikan Chrome DevTools, ubah repo dan klik jalankan.
Penafian (terima kasih kepada lovasoa ):
Ambil hasil dari metode ini dengan sebutir garam, karena untuk beberapa repo (sorich87 / bootstrap-tour) menghasilkan nilai negatif, yang mungkin mengindikasikan ada yang salah dengan data yang dikembalikan dari API GitHub.
MEMPERBARUI:
Sepertinya metode ini untuk menghitung jumlah garis total tidak sepenuhnya dapat diandalkan. Lihatlah komentar orbitbot untuk detailnya.
sumber
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)))
Anda dapat mengkloning hanya komit terbaru menggunakan
git clone --depth 1 <url>
dan kemudian melakukan analisis Anda sendiri menggunakan Linguist , perangkat lunak yang sama yang digunakan Github. Itulah satu-satunya cara saya tahu Anda akan mendapatkan garis kode.Pilihan lain adalah menggunakan API untuk membuat daftar bahasa yang digunakan proyek . Itu tidak memberi mereka dalam garis tetapi dalam byte. Sebagai contoh...
Meskipun mengambil itu dengan sebutir garam, proyek itu termasuk YAML dan JSON yang diakui situs web tetapi API tidak.
Terakhir, Anda dapat menggunakan pencarian kode untuk menanyakan file mana yang cocok dengan bahasa yang diberikan. Contoh ini menanyakan file mana di perl5i yang Perl.
https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i
. Itu tidak akan memberi Anda baris, dan Anda harus meminta ukuran file secara terpisah menggunakan yang dikembalikanurl
untuk setiap file.sumber
Saat ini tidak memungkinkan di Github.com atau API-nya
Saya telah berbicara dengan dukungan pelanggan dan mengonfirmasi bahwa ini tidak dapat dilakukan di github.com. Mereka telah menyampaikan saran tersebut kepada tim Github, jadi mudah-mudahan itu akan mungkin terjadi di masa depan. Jika demikian, saya pasti akan mengedit jawaban ini.
Sementara itu, jawaban Rory O'Kane adalah alternatif brilian berdasarkan
cloc
dan klon repo dangkal.sumber
Anda dapat menggunakan GitHub API untuk mendapatkan sloc seperti fungsi berikut
Secara pribadi saya membuat ekstensi chrome yang menunjukkan jumlah SLOC pada daftar proyek github dan halaman detail proyek. Anda juga dapat mengatur token akses pribadi Anda untuk mengakses repositori pribadi dan melewati batas laju api.
Anda dapat mengunduh dari sini https://chrome.google.com/webstore/detail/github-sloc/fkjjjjamhihnjmihibcmdnianbcbccpnn
Kode sumber tersedia di sini https://github.com/martianyi/github-sloc
sumber
Pengaya Firefox Github SLOC
Saya menulis addon firefox kecil yang mencetak jumlah baris kode pada halaman proyek github: Github SLOC
sumber
Jika pertanyaannya adalah "dapatkah Anda dengan cepat mendapatkan JUMLAH LINI dari repo github", jawabannya tidak seperti yang dinyatakan oleh jawaban lain.
Namun, jika pertanyaannya "bisakah Anda cepat memeriksa SKALA proyek", saya biasanya mengukur proyek dengan melihat ukurannya. Tentu saja ukurannya akan mencakup delta dari semua commit aktif, tetapi ini adalah metrik yang baik karena urutan besarnya cukup dekat.
Misalnya
Seberapa besar proyek "buruh pelabuhan"?
Di browser Anda, masukkan api.github.com/repos/ORG_NAME/PROJECT_NAME yaitu api.github.com/repos/docker/docker
Di hash respons, Anda dapat menemukan atribut ukuran:
Ini akan memberi Anda gambaran tentang skala relatif proyek. Jumlahnya tampaknya dalam KB, tetapi ketika saya memeriksanya di komputer saya itu sebenarnya lebih kecil, meskipun urutan besarnya konsisten. (161432KB = 161MB, du-s -h buruh pelabuhan = 65MB)
sumber
Instruksi dan Penjelasan
sloc mendukung pemformatan output sebagai
cli-table
,,json
ataucsv
. Ekspresi reguler dapat digunakan untuk mengecualikan file dan folder ( Informasi lebih lanjut tentang npm ).Powershell:
rm -r -force ".\react\"
atau di Mac / Unix:rm -rf ".\react\"
Cuplikan layar dari langkah-langkah yang dieksekusi (cli-table):
output sloc (tidak ada argumen):
sumber
Pipa keluaran dari jumlah baris di setiap file ke
sort
untuk mengatur file dengan jumlah baris.git ls-files | xargs wc -l |sort -n
sumber
Dari komentar @ Tgr, ada alat online: https://codetabs.com/count-loc/count-loc-online.html
sumber
Buka terminal dan jalankan yang berikut:
sumber