Hitung metrik kode [tertutup]

87

Apakah ada alat yang tersedia yang akan menghitung metrik kode (misalnya jumlah baris kode, kompleksitas siklomatik, penggandengan, kohesi) untuk proyek Anda dan dari waktu ke waktu menghasilkan grafik yang menunjukkan tren?

Bjorn Reppen
sumber
1
Tergantung bahasanya, bahasa apa yang kamu gunakan?
Valentin Rocher

Jawaban:

67

Pada proyek terbaru saya, saya menggunakan SourceMonitor . Ini adalah alat gratis yang bagus untuk analisis metrik kode.
Berikut ini kutipan dari situs resmi SourceMonitor:

  • Mengumpulkan metrik dalam satu file sumber yang cepat lewat.
  • Mengukur metrik untuk kode sumber yang ditulis dalam C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6), atau HTML.
  • Termasuk metrik tingkat metode dan fungsi untuk C ++, C, C #, VB.NET, Java, dan Delphi.
  • Menyimpan metrik di pos pemeriksaan untuk perbandingan selama proyek pengembangan perangkat lunak.
  • Menampilkan dan mencetak metrik dalam tabel dan bagan.
  • Beroperasi dalam GUI Windows standar atau di dalam skrip Anda menggunakan file perintah XML.
  • Mengekspor metrik ke file XML atau CSV (nilai dipisahkan koma) untuk diproses lebih lanjut dengan alat lain.

Untuk .NET selain NDepend yang merupakan alat terbaik, saya dapat merekomendasikan vil .

Alat berikut dapat melakukan analisis tren:

aku
sumber
SourceMonitor tampaknya menjadi alat khusus Windows. Ada sesuatu yang mirip untuk Sistem Operasi lain (Linux, BSD, Mac)?
Mnementh
Mnementh, saya windows dev, saya tidak tahu tool semacam itu untuk FOSS guys. Mungkin Anda dapat mencoba menjalankan SourceMonitor di bawah emulator Wine?
aku
2
Sekarang ada alat tipe NDepend untuk C ++, CppDepend
Goosey
SourceMonitor hanya untuk penggunaan non komersial.
Scott 混合 理论
2
@Kevin 混合 理论 baca lisensinya dengan hati-hati - Anda dapat menggunakannya di lingkungan mana pun yang tidak dapat Anda jual. "Artinya, Anda dapat menggunakan file yang dapat dieksekusi ini sebagai bagian dari upaya pengembangan perangkat lunak Anda sendiri (komersial atau lainnya) tetapi Anda tidak boleh menjualnya ..."
Natalie Adams
12

Sonar jelas merupakan alat yang harus Anda pertimbangkan, terutama untuk proyek Java. Namun itu juga akan menangani kode PHP atau C / C ++, Flex dan Cobol.

Berikut adalah tangkapan layar yang menunjukkan beberapa metrik pada sebuah proyek:

teks alt http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Perhatikan bahwa Anda dapat mencoba alat tersebut dengan menggunakan situs demo mereka di http://nemo.sonarsource.org

Romain Linsolas
sumber
Rupanya SO tidak mengizinkan saya memperbaiki tautan - tautannya harus: nemo.sonarsource.org
Natalie Adams
8

Saya juga mencari alat / plugin metrik kode untuk IDE saya tetapi sejauh yang saya tahu tidak ada (untuk gerhana) yang juga menunjukkan grafik kompleksitas selama jangka waktu tertentu. Namun, saya menemukan plugin metrik gerhana , yang dapat menangani:

  • Kompleksitas Siklomatik McCabe
  • Kopling Eferen
  • Kurangnya Kohesi dalam Metode
  • Baris Kode dalam Metode
  • Jumlah Bidang
  • Jumlah Level
  • Jumlah Penduduk Dalam Lingkup
  • Jumlah Parameter
  • Jumlah Pernyataan
  • Metode Tertimbang Per Kelas

Dan saat menggunakannya, saya juga tidak melewatkan opsi grafik yang Anda cari.
Saya rasa, jika Anda tidak menemukan plugin / alat yang dapat menangani grafik dari waktu ke waktu, Anda harus melihat alat yang paling cocok untuk Anda dan menawarkan semua informasi yang Anda butuhkan; bahkan jika informasi yang diberikan hanya untuk pembangunan proyek Anda saat ini.

Sebagai catatan tambahan, plugin metrik gerhana memungkinkan Anda mengekspor data ke file eksternal (tautan menuju ke contoh), jadi jika Anda menggunakan alat kontrol sumber, dan Anda harus !, Anda selalu dapat mengekspor data untuk yang spesifik membangun dan menyimpan file bersama dengan kode sumbernya, dengan begitu Anda masih memiliki cara (dasar) untuk kembali ke masa lalu dan memeriksa perbedaannya.

sven
sumber
4

perlu diingat, Apa yang Anda ukur adalah apa yang Anda dapatkan. loc tidak mengatakan apa-apa tentang produktivitas atau efisiensi.

menilai programmer dengan baris kode dan Anda akan mendapatkan .. baris kode. argumen yang sama berlaku untuk metrik lainnya.

otoh .. http://www.crap4j.org/ adalah metrik yang sangat konservatif dan berguna. ia menetapkan kompleksitas dalam kaitannya dengan cakupan.

Andreas Petersson
sumber
2
Beri peringkat programmer dengan baris komentar dan Anda akan mendapatkan ... baris komentar.
EML
3

Mengenai alat, NDepend dilengkapi dengan 82 metrik kode yang berbeda, dari Jumlah Baris Kode, hingga Peringkat Metode (popularitas), Kompleksitas Siklomatik, Kurangnya Kohesi Metode, Cakupan Persentase (diekstrak dari NCover atau VSTS), Kedalaman Warisan .. .

Dengan sistem aturannya, NDepend juga dapat menemukan masalah dan memperkirakan utang teknis yang merupakan metrik kode yang menarik (jumlah usaha keras untuk memperbaiki masalah vs. jumlah waktu pengembang yang rusak per tahun untuk membiarkan masalah tidak diperbaiki).

Semua metrik ini dijelaskan di sini .

Patrick dari tim NDepend
sumber
2

Jika Anda berada di ruang .NET, Developer Express ' CodeRush menyediakan LOC, Cyclomatic Complexity, dan analisis Kompleksitas Pemeliharaan (cukup baik, IMHO) kode secara real-time.

(Maaf tentang tautan Kompleksitas Pemeliharaan; ini akan masuk ke cache Google. Yang asli tampaknya ATM offline).

moobaa
sumber
2

Atlassian FishEye adalah alat luar biasa lainnya untuk pekerjaan itu. Ini terintegrasi dengan sistem kontrol sumber Anda (saat ini mendukung CVS, SVN, dan Perforce), dan menganalisis semua file Anda dengan cara itu. Analisisnya agak mendasar, dan produk itu sendiri bersifat komersial (tetapi harganya sangat terjangkau, IMO).

Anda juga bisa mendapatkan add-on yang disebut Crucible yang memfasilitasi tinjauan kode rekan.

Jack Leow
sumber
2

Untuk Visual Studio .NET (setidaknya C # dan VB.NET) Saya menemukan StudioTools gratis sangat berguna untuk metrik. Itu juga menambahkan sejumlah fitur yang ditemukan di alat komersial seperti ReSharper .

Perintahkan ke bawah
sumber
2

Code Analyzer adalah alat sederhana yang menghasilkan metrik semacam ini.

teks alt
(sumber: teel.ws )

prakash
sumber
3
Meskipun GUI tampak bagus, metrik yang dihasilkan tampaknya tidak berguna - mis. "Baris spasi per file"?
kizzx2
1

Untuk Python, pylint dapat memberikan beberapa metrik kualitas kode.

Hanya baca
sumber
1

Saya akan merekomendasikan Code Metrics Viewer Exention untuk visual studio.

Sangat mudah untuk menganalisis solusi sekaligus, juga melakukan perbandingan jika Anda membuat kemajuan ;-)

Baca lebih lanjut di sini tentang fitur - fiturnya

Baljeetsingh
sumber
0

Di depan PHP, saya percaya misalnya phpUnderControl menyertakan metrik melalui phpUnit (jika saya tidak salah).

Perlu diingat bahwa metrik sering kali memiliki kelemahan. Misalnya, pembuat kode yang mengerjakan masalah sepele akan menghasilkan lebih banyak kode dan di sana terlihat lebih baik pada grafik Anda, daripada pembuat kode yang memecahkan masalah yang kompleks.

Sampai
sumber
0

Jika Anda mencari beberapa analisis tren, apakah itu benar-benar berarti untuk mengukur di luar SLOC?

Bahkan jika Anda hanya melakukan grep untuk menelusuri titik koma dan menghitung jumlah garis yang dikembalikan, yang Anda cari adalah konsistensi dalam teknik pengukuran SLOC. Dengan cara ini pengukuran hari ini dapat dibandingkan dengan pengukuran bulan lalu secara bermakna.

Saya tidak bisa benar-benar melihat apa yang akan diberikan oleh tren Kompleksitas Siklometrik McCabe? Saya pikir CC harus digunakan lebih banyak untuk snapshot kualitas untuk memberikan umpan balik kepada pengembang.

Edit: Ooh. Pikirkan saja beberapa pengukuran lain yang mungkin berguna. Komentar sebagai persentase SLOC dan cakupan tes. Tak satu pun dari Anda ingin membiarkannya tergelincir. Kembali ke retrofit salah satu dari ini tidak pernah seperti tuhan seperti melakukannya "di saat panas!"

HTH.

Bersulang,

rampok

Rob Wells
sumber
0

Scitools 'Understand memang memiliki kemampuan untuk menghasilkan banyak metrik kode untuk Anda. Saya tidak memiliki banyak pengalaman dengan fitur metrik kode, tetapi fitur analisis statis secara umum bagus dan harganya sangat wajar. Dukungannya luar biasa.

andreas buykx
sumber
0

Project Code Meter memberikan laporan riwayat pengembangan diferensial (dalam format Excel) yang menunjukkan metrik kemajuan pengkodean Anda dalam SLOC, persentase waktu dan produktivitas (perkiraan waktunya didasarkan pada kompleksitas siklus dan metrik lainnya). Kemudian di Excel Anda dapat dengan mudah menghasilkan grafik yang Anda inginkan.

lihat artikel ini yang menjelaskan langkah demi langkah: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

Benji
sumber
0

Untuk Java, Anda dapat mencoba alat kami, QualityGate yang menghitung lebih dari 60 metrik kode sumber, melacak semua perubahan sepanjang waktu dan juga memberikan peringkat keseluruhan untuk pemeliharaan kode sumber.

Tibor Bakota - FrontEndART
sumber