Baris kode gerhana menghitung

107

Saya sudah mencoba plugin Metrics dan meskipun bagus dan sebagainya, itu bukan yang dicari bos saya. Ini menghitung garis dengan hanya satu }sebagai garis dan dia tidak ingin itu dihitung sebagai "itu bukan garis, ini adalah pilihan gaya". Saya juga perlu membuat beberapa bentuk laporan tentang metrik yang diberikan. Apakah ada alat yang bagus untuk ini?

bingung
sumber
1
Pertanyaan sampingan: apakah ini akan digunakan sebagai metrik untuk menunjukkan seberapa baik pengembang perangkat lunak Anda bekerja? Jika demikian jumlah karakter / non-spasi mungkin lebih baik. Meski masih tampak seperti metrik yang sewenang-wenang ... Seperti yang dikatakan seorang teman: "secara umum lebih banyak baris kode untuk menyelesaikan masalah tidak lebih baik (atau lebih buruk) daripada lebih sedikit baris kode untuk menyelesaikan masalah yang sama"
Sancarn

Jawaban:

93

Instal Plugin Metrik Eclipse . Untuk membuat laporan HTML (dengan XML dan CSV opsional) right-click a project -> Export -> Other -> Metrics.

Anda dapat menyesuaikan metrik Garis Kode dengan mengabaikan baris kosong dan hanya komentar atau mengecualikan Javadoc jika Anda mau. Untuk melakukan ini, periksa tab di Preferences -> Metrics -> LoC.

Itu dia. Tidak ada opsi khusus untuk mengecualikan tanda kurung kurawal {}.

Plugin ini menawarkan metrik alternatif untuk LoC yang disebut Number of Statements . Inilah yang penulis katakan tentang itu:

Metrik ini mewakili jumlah pernyataan dalam suatu metode. Saya menganggapnya sebagai ukuran yang lebih kuat daripada Lines of Code karena yang terakhir rapuh sehubungan dengan konvensi pemformatan yang berbeda.

Edit:

Setelah Anda mengklarifikasi pertanyaan Anda, saya memahami bahwa Anda memerlukan tampilan untuk pelanggaran metrik real-time, seperti peringatan atau error compiler. Anda juga membutuhkan fungsi pelaporan untuk membuat laporan untuk atasan Anda. Plugin yang saya jelaskan di atas adalah untuk pelaporan karena Anda harus mengekspor metrik ketika Anda ingin melihatnya.

aliopi
sumber
Persis apa yang saya cari dan fitur ekspor yang bagus.
george_h
1
Versi terbaru dari plugin ini (3.14.1) tampaknya tidak berfungsi dengan Eclipse Luna (4.4). Anehnya, plugin Metrik kuno dari Sourceforge masih berfungsi ...
ejain
Banyak orang melaporkan bahwa itu tidak berfungsi lagi, tetapi tidak ada yang melaporkan bug di SourceForge ...
Thomas Weller
6
Ya. Saya tidak dapat melihat opsi apa pun di bawah right click a project -> Export, saya telah menginstal plug-in langsung dari eclipse marketplace - versinya - Eclipse Metrics 3.12.0, ada yang bisa membantu saya. Terima kasih!
OverrockSTAR
263

Selalu ada "kekerasan":

  1. Cari-> File

  2. Ketik berikut ini di "Mengandung teks" -> ^.*$. Kemudian centang kotak "Ekspresi Reguler"

  3. Ketik berikut ini di "Pola nama file" -> *.java

  4. Klik "Cari"

  5. Periksa jumlah kecocokan di Tab "Pencarian".

Kristen
sumber
11
Ini persis seperti yang saya cari. Itu tidak mengecualikan tanda kurung atau apa pun yang mewah, tetapi memberikan jawaban yang saya cari, DALAM gerhana, TANPA plugin. Terima kasih!
Lukas
24
Anda juga dapat menggunakan \n[\s]*dan itu akan mengabaikan baris kosong juga
Ascalonian
3
Solusi yang sangat bagus tanpa perlu plugin lain! +1
Stephan
2
Ini berfungsi dengan gerhana (neon) terbaru tetapi plugin metrik tidak
Anatoly Yakimchuk
2
Komentar @omerio juga harus diketik dan merupakan bagian penting dari kode sumber apa pun. Tidak menghitung induksi tersebut, mereka tidak akan penting atau hanya teks buta - yang merupakan kesalahan serius.
Axel Amthor
23

Jika menggunakan OSX atau * NIX

Dapatkan semua baris kode java sebenarnya dari file * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Dapatkan semua baris dari file * .java, yang menyertakan baris kosong dan komentar

find . -name "*.java" -exec cat | wc -l

Dapatkan informasi per File, ini akan memberi Anda [jalur ke file + "," + jumlah baris]

find . -name "*.java" -exec wc -l {} \;
ZOXIS
sumber
Menjalankan perintah pertama di OSX saya mendapatkan: grep: rentang karakter tidak valid 0
omerio
Ini telah berhasil untuk saya temukan. -nama "* .java" | xargs kucing | grep '[alnum]' | wc -l
omerio
2
harusfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107
8

Cara lain adalah dengan menggunakan utilitas loc lain, seperti LocMetrics misalnya.
Ini juga mencantumkan banyak alat loc lainnya . Integrasi dengan Eclipse tidak akan selalu ada (seperti halnya dengan Metrics2 , yang dapat Anda periksa karena ini adalah versi yang lebih baru daripada Metrik ), tetapi setidaknya alat tersebut dapat bernalar dalam istilah garis logis (dihitung dengan menjumlahkan titik koma terminal dan kurung kurawal terminal).
Anda juga dapat memeriksa dengan eclipse-metrics yang lebih disesuaikan dengan apa yang Anda harapkan.

VonC
sumber
7

Alat lainnya adalah Google Analytix , yang juga memungkinkan Anda menjalankan metrik meskipun Anda tidak dapat membuat proyek jika terjadi kesalahan

ılǝ
sumber
Meskipun situs tersebut mengatakan itu hanya untuk versi gerhana yang lebih lama, itu berfungsi dengan baik di Luna bagi saya. Terima kasih untuk ini.
CamHart
7

Salah satu cara yang mungkin untuk menghitung baris kode di Eclipse:

menggunakan menu Search / File ..., pilih tab File Search, tentukan \ n [\ s] * untuk Mengandung teks (ini tidak akan menghitung baris kosong), dan centang Regular expression.

Tip topi: www.monblocnotes.com/node/2030

ccleve.dll
sumber
wow, itu sangat jenius. senang memilikinya tidak menghitung baris kosong, selama Anda tidak dibayar dengan nomor ...
JohnnyB
1

Saya membuat plugin Eclipse, yang dapat menghitung baris kode sumber. Ini mendukung Kotlin, Java, Java Script, JSP, XML, C / C ++, C #, dan banyak jenis file lainnya.

Tolong lihat itu. Setiap umpan balik akan sangat dihargai!

repositori git-hub ada di sini

Li Ying
sumber
0

ProjectCodeMeter menghitung LLOC (baris kode logis) persis seperti yang Anda jelaskan (hanya baris efektif). itu terintegrasi ke dalam eclipse sebagai alat metrik kode eksternal , itu bukan waktu nyata, itu menghasilkan laporan. sebenarnya itu menghitung banyak metrik kode sumber seperti kompleksitas, kerumitan aritmatika, string kode keras, konstanta numerik .. bahkan memperkirakan waktu pengembangan dalam hitungan jam .

Benjamin
sumber
0

Untuk analisis statis, saya telah menggunakan dan merekomendasikan SonarQube yang menjalankan hampir semua metrik yang mungkin Anda inginkan pada berbagai bahasa , dan gratis dalam versi dasar (Anda harus membayar untuk menganalisis jenis bahasa yang saya inginkan. hanya kode dengan pistol di kepalaku).

Anda harus menginstalnya sebagai aplikasi web yang menjalankan analisis dari repositori kode sumber Anda, tetapi juga memiliki plugin Eclipse .

Ini berlebihan jika Anda hanya ingin tahu, sebagai satu kali, berapa banyak baris kode yang ada dalam proyek Anda. Jika Anda ingin melacak metrik sepanjang waktu, membandingkan seluruh proyek, peringatan kebakaran saat ambang batas terlampaui, dll., Itu luar biasa.

Pengungkapan: Saya tidak memiliki hubungan keuangan dengan SonarSource.

Andrew Spencer
sumber
0

Hal pertama yang harus dilakukan adalah menentukan definisi Anda tentang "baris kode" (LOC). Dalam kedua pertanyaan Anda

Ini menghitung garis dengan hanya satu} sebagai garis dan dia tidak ingin itu dihitung sebagai "ini bukan garis, ini adalah pilihan gaya"

dan dalam jawaban, misalnya,

Anda dapat menyesuaikan metrik Garis Kode dengan mengabaikan baris kosong dan hanya komentar atau mengecualikan Javadoc jika Anda mau

Anda dapat mengetahui bahwa orang-orang memiliki pendapat berbeda tentang apa yang dimaksud dengan sebaris kode. Secara khusus, orang sering kali tidak tepat tentang apakah mereka benar-benar menginginkan jumlah baris kode atau jumlah pernyataan. Misalnya, jika Anda memiliki baris yang sangat panjang berikut ini yang berisi pernyataan, apa yang ingin Anda laporkan, 1 LOC atau ratusan pernyataan?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

Dan ketika seseorang bertanya kepada Anda apa yang Anda sebut sebagai LOC, pastikan Anda dapat menjawab, meskipun itu hanya "definisi saya tentang LOC adalah definisi Metrics2". Secara umum, untuk kode yang paling sering diformat (tidak seperti contoh saya), alat populer akan memberikan angka yang cukup mirip, jadi Metrics2, SonarQube, dll. Semuanya akan baik-baik saja, selama Anda menggunakannya secara konsisten. Dengan kata lain, jangan menghitung LOC beberapa kode menggunakan satu alat dan membandingkan nilai tersebut dengan versi yang lebih baru dari kode tersebut yang diukur dengan alat yang berbeda.

kc2001
sumber