JPeek adalah kolektor statis metrik kode Java.
Motivasi : Kohesi kelas, misalnya, dianggap sebagai salah satu atribut perangkat lunak berorientasi objek yang paling penting. Ada lebih dari 30 metrik kohesi yang berbeda yang ditemukan sejauh ini, tetapi hampir tidak ada yang memiliki kalkulator yang tersedia. Situasi dengan metrik lain sangat mirip. Kami ingin membuat alat seperti itu yang akan memungkinkan untuk menganalisis kualitas kode lebih atau kurang secara formal (dengan ratusan metrik). Kemudian, kami akan menerapkan analisis ini ke berbagai perpustakaan Java dengan maksud untuk membuktikan bahwa ide -ide dari seri buku objek elegan masuk akal.
Muat file jar-with-dependencies.jar terbaru dari sini dan kemudian:
java -jar jpeek-jar-with-dependencies.jar --sources . --target ./jpeek JPeek akan menganalisis file Java di direktori saat ini. Laporan XML akan dihasilkan di direktori ./jpeek . Menikmati.
| Pilihan | Keterangan |
|---|---|
-s, --sources <path> | Diperlukan. Jalur ke direktori dengan file kelas |
-t, --target <path> | Diperlukan. Jalur ke direktori di mana laporan akan dihasilkan |
--include-ctors | Sertakan konstruktor ke dalam semua formula |
--include-static-methods | Sertakan metode statis ke dalam semua formula |
--include-private-methods | Sertakan metode pribadi ke dalam semua rumus |
--metrics <metrics> | Daftar metrik yang dipisahkan koma untuk dimasukkan (default: "LCOM5,NHD,MMAC,SCOM,CAMC" ) |
--overwrite | Timpa direktori target, jika ada, atau keluar dengan kesalahan |
--quiet | Matikan logging |
--help | Menampilkan pesan bantuan |
Anda juga dapat menggunakannya sebagai layanan web ke platform Anda sendiri. Cukup kompilasi dengan mvn clean package --settings settings.xml dan kemudian jalankan, seperti yang disarankan Procfile . Anda perlu memiliki settings.xml dengan data berikut:
< settings >
< profiles >
< profile >
< id >jpeek-heroku</ id >
< activation >
< activeByDefault >true</ activeByDefault >
</ activation >
< properties >
< sentry .dsn>https://...</ sentry .dsn>
< dynamo .key>AKIAI..........LNN6A</ dynamo .key>
< dynamo .secret>6560KMv5+8Ti....................Qdwob63Z</ dynamo .secret>
</ properties >
</ profile >
</ profiles >
</ settings > Anda juga membutuhkan tabel ini di DynamoDB (semua indeks harus memberikan ALL atribut):
jpeek-mistakes:
metric (HASH/String)
version (RANGE/String)
indexes:
mistakes (GSI):
version (HASH/String),
avg (RANGE/Number)
jpeek-results:
artifact (HASH/String)
indexes:
ranks (GSI):
version (HASH/String)
rank (RANGE/Number)
scores (GSI):
version (HASH/String)
score (RANGE/Number)
recent (GSI):
good (HASH/String)
added (RANGE/Number)
Makalah ini memberikan ringkasan metrik kohesi yang cukup bagus:
[ izadkhah17 ] Habib Izadkhah et al.,
Metrik Kohesi Kelas untuk Rekayasa Perangkat Lunak: Tinjauan Kritis ,
Jurnal Ilmu Komputer Moldova, Vol.25, No.1 (73), 2017, PDF.
[ badri08 ] Linda Badri et al.,
Revisiting Class Cohesion: Investigasi empiris pada beberapa sistem ,
Jurnal Teknologi Objek, Vol.7, No.6, 2008, PDF.
[ chidamber94 ] Kurangnya kohesi dalam metode ( LCOM ).
Shyam Chidamber et al.,
Suite metrik untuk desain berorientasi objek ,
Transaksi IEEE pada Rekayasa Perangkat Lunak, Vol.20, No.6, 1994, PDF.
[ bieman95 ] Kohesi kelas ketat ( TCC ) dan longgar kohesi ( LCC ).
James M. Bieman et al.,
Kohesi dan penggunaan kembali dalam sistem yang berorientasi objek ,
Departemen Ilmu Komputer, Universitas Negeri Colorado, 1995, PDF.
[ hitz95 ] Kurangnya kohesi dalam Metode 4 ( LCOM4 ).
Martin Hitz et al.,
Mengukur kopling dan kohesi dalam sistem yang berorientasi objek ,
Institute of Applied Computer Science and Systems Analysis, University of Vienna, 1995, PDF.
[ sellers96 ] Kurangnya kohesi dalam metode 2-3 ( LCOM 2, 3 dan 5 ).
B. Henderson-Sellers et al.,
Kopling dan kohesi (menuju rangkaian metrik yang valid untuk analisis dan desain yang berorientasi objek) ,
Sistem Berorientasi Objek 3, 1996, PDF.
[ bansiya99 ] Kohesi di antara metode kelas ( CAMC ).
Jagdish Bansiya et al.,
Metrik kohesi kelas untuk desain yang berorientasi objek ,
Jurnal Pemrograman Berorientasi Objek, Vol. 11, no. 8, 1999, pdf.
[ etzkorn00 ] Keterkaitan logis metode ( Lorm ).
L. Etzkorn dan H. Delugach,
Menuju suite metrik semantik untuk desain yang berorientasi objek ,
Teknologi Bahasa dan Sistem Berorientasi Objek, 2000. Alat 34. Prosiding. Konferensi Internasional ke -34 tentang. IEEE, 2000, hlm. 71–80, PDF
[ wasiq01 ] Metrik Koneksi Kelas ( CCM ).
M. Wasiq
Mengukur kohesi kelas dalam sistem yang berorientasi objek ,
Tesis Master di King Fahd University of Petroleum & Minerals, 2001, PDF.
[ aman04 ] Kohesi Kelas Optimis ( OCC ) dan Pesimistic Class Cohesion ( PCC ).
Hirohisa Aman et al.,
Proposal metrik kohesi kelas menggunakan ukuran bagian kohesif ,
Proc. Konferensi Gabungan Kelima tentang Rekayasa Perangkat Lunak Berbasis Pengetahuan, 2002, PDF.
[ marcus05 ] Kohesi konseptual kelas ( C3 ).
A. Marcus dan D. Poshyvanyk,
Kohesi konseptual kelas ,
Konferensi Internasional IEEE 21 tentang Pemeliharaan Perangkat Lunak (ICSM'05), Budapest, Hongaria, 2005, hlm. 133-142, PDF
[ counsell06 ] Normalized Hamming Distance ( NHD ).
Steve Counsell et al.,
Interpretasi dan kegunaan tiga metrik kohesi untuk desain berorientasi objek ,
ACM Tosem, April 2006, PDF.
[ fernandez06 ] Metrik sensitif dari kohesi kelas ( SCOM ).
Luis Fernández et al.,
[A] metrik baru [...] menghasilkan nilai yang bermakna [...] lebih sensitif daripada yang dilaporkan sebelumnya ,
Jurnal Internasional "Teori & Aplikasi Informasi", Volume 13, 2006, PDF.
[ dallal07 ] Metode-metode melalui Atribut Kohesi ( MMAC ).
Jehad Al Dallal,
Metrik kohesi berbasis desain untuk kelas berorientasi objek ,
Akademi Sains Dunia, Teknik dan Teknologi Internasional Jurnal Komputer dan Teknik Informasi Vol: 1, No: 10, 2007, PDF.
[ liu09 ] Maksimal Weighted Entropy ( MWE ).
Y. Liu, D. Poshyvanyk, R. Ferenc, T. Gyim´othy, dan N. Chrisochoides,
Kohesi kelas pemodelan sebagai campuran topik laten ,
Pemeliharaan Perangkat Lunak, 2009. ICSM 2009. Konferensi Internasional IEEE tentang. IEEE, 2009, hlm. 233–242, PDF
[ dallal11 ] Kurangnya kohesi transitif dalam metode ( TLCOM ).
Jehad Al Dallal,
Metrik kurangnya kohesi yang berorientasi objek berbasis transitif ,
Departemen Ilmu Informasi, Universitas Kuwait, 2011, PDF.
Pertama, Skeleton Parses Java Bytecode Menggunakan Javaassit dan ASM, untuk menghasilkan skeleton.xml . Dokumen XML ini berisi informasi tentang setiap kelas, yang diperlukan untuk perhitungan metrik. Misalnya, kelas Java sederhana ini:
class Book {
private int id ;
int getId () {
return this . id ;
}
} Akan terlihat seperti ini di skeleton.xml :
< class id = ' Book ' >
< attributes >
< attribute public = ' false ' static = ' false ' type = ' I ' >id</ attribute >
</ attributes >
< methods >
< method abstract = ' false ' ctor = ' true ' desc = ' ()I ' name = ' getId ' public = ' true ' static = ' false ' >
< return >I</ return >
< args />
</ method >
</ methods >
</ class > Kemudian, kami memiliki koleksi stylesheet XSL, satu per setiap metrik. Misalnya, LCOM.xsl mengubah skeleton.xml menjadi LCOM.xml , yang mungkin terlihat seperti ini:
< metric >
< title >MMAC</ title >
< app >
< class id = ' InstantiatorProvider ' value = ' 1 ' />
< class id = ' InstantationException ' value = ' 0 ' />
< class id = ' AnswersValidator ' value = ' 0.0583 ' />
< class id = ' ClassNode ' value = ' 0.25 ' />
[... skipped ...]
</ app >
</ metric >Dengan demikian, semua perhitungan terjadi di dalam file XSLT. Kami memutuskan untuk mengimplementasikannya dengan cara ini setelah upaya yang kurang berhasil untuk melakukan semuanya di Java. Tampaknya XSL jauh lebih cocok untuk manipulasi dengan data daripada Java.
Kami sedang mengembangkan plugin JPeek untuk Maven, lihat proyek plugin JPEEK MAVEN.
final . Misalnya, semua metrik LCOM dan COM terpengaruh. Hanya garpu, buat perubahan, jalankan mvn clean install -Pqulice dan kirimkan permintaan tarik; Baca ini, jika hilang.
Jangan ragu untuk menambahkan nama Anda ke daftar ini dalam permintaan tarik Anda berikutnya.