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?
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 .
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:
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.
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).
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).
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.
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 .
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.
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!"
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.
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.
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.
Jawaban:
Pada proyek terbaru saya, saya menggunakan SourceMonitor . Ini adalah alat gratis yang bagus untuk analisis metrik kode.
Berikut ini kutipan dari situs resmi SourceMonitor:
Untuk .NET selain NDepend yang merupakan alat terbaik, saya dapat merekomendasikan vil .
Alat berikut dapat melakukan analisis tren:
sumber
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
sumber
NDtergantung untuk .net
sumber
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:
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.
sumber
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.
sumber
Tergantung, saya menggunakannya dan yang terbaik untuk tujuan ini. Periksa ini: http://www.codeproject.com/KB/dotnet/NDepend.aspx
sumber
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 .
sumber
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).
sumber
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.
sumber
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 .
sumber
Code Analyzer adalah alat sederhana yang menghasilkan metrik semacam ini.
(sumber: teel.ws )
sumber
Untuk Python, pylint dapat memberikan beberapa metrik kualitas kode.
sumber
Ada juga plugin metrik kode untuk reflektor , jika Anda menggunakan .NET.
sumber
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
sumber
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.
sumber
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
sumber
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.
sumber
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
sumber
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.
sumber