Sendok
Spoon adalah perpustakaan sumber terbuka untuk menganalisis, menulis ulang, mengubah, mentranspile kode sumber Java. Ini mem-parsing file sumber untuk membangun AST yang dirancang dengan baik dengan API analisis dan transformasi yang kuat. Ini mendukung versi Java modern hingga Java 20. Spoon adalah proyek sumber terbuka resmi Inria, dan anggota konsorsium sumber terbuka OW2.
Dokumentasi
Dokumentasi resmi terbaru tersedia di https://spoon.gforge.inria.fr/.
Penggunaan akademis
Jika Anda menggunakan Spoon untuk tujuan akademis, harap kutip: Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier. “Spoon: Perpustakaan untuk Menerapkan Analisis dan Transformasi Kode Sumber Java”. Dalam Perangkat Lunak: Praktek dan Pengalaman, Wiley-Blackwell, 2015. Doi: 10.1002/spe.2346.
@article{pawlak:hal-01169705,
TITLE = "{Spoon: A Library for Implementing Analyses and Transformations of Java Source Code}",
AUTHOR = {Pawlak, Renaud and Monperrus, Martin and Petitprez, Nicolas and Noguera, Carlos and Seinturier, Lionel},
JOURNAL = "{Software: Practice and Experience}",
PUBLISHER = "{Wiley-Blackwell}",
PAGES = {1155-1179},
VOLUME = {46},
URL = {https://hal.archives-ouvertes.fr/hal-01078532/document},
YEAR = {2015},
doi = {10.1002/spe.2346},
}
Dukungan profesional
Jika Anda memerlukan dukungan profesional pada Spoon (pengembangan, pelatihan, ekstensi), silakan kirim komentar di #3251
Memulai dalam 2 detik
Versi Java: Spoon versi 10 dan lebih tinggi memerlukan Java 11 atau lebih baru. Spoon 9.1.0 adalah rilis terakhir Spoon yang kompatibel dengan Java 8, dan kami tidak berencana untuk mem-backport perbaikan bug atau fitur apa pun ke Spoon 9. Perhatikan bahwa Spoon tentu saja masih dapat menggunakan kode sumber untuk versi Java yang lebih lama, tetapi memerlukan JDK 11+ untuk berlari.
Dapatkan versi stabil terbaru dengan Maven, lihat https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core
Dan mulai menggunakannya:
CtClass l = Launcher . parseClass ( "class A { void m() { System.out.println( " yeah " );} }" );
Dokumentasi:
- Dokumentasi referensi: https://spoon.gforge.inria.fr/ (berisi konten folder doc)
- Contoh kode: https://github.com/SpoonLabs/spoon-examples
- Video: Sendok: Memulai - Simon Urli @ OW2Con'18 (Paris), Hasilkan Pernyataan Uji dengan Sendok - Benjamin Danglot @ OW2Con'17 (Paris)
Berkontribusi dalam 2 detik
Buat pull request pertama Anda untuk menyempurnakan dokumentasi, lihat doc! Lanjutkan dengan perbaikan bug pertama Anda! Komunitasnya berpikiran terbuka, penuh hormat, dan sabar. Semua kontribusi eksternal dipersilakan.
Filsafat Desain
R1) Metamodel Spoon sedekat mungkin dengan konsep bahasa.
R2) Model program Spoon lengkap dan bagus.
R3) Versi teks model Spoon memiliki format yang baik dan setara secara semantik dengan program aslinya.
R4) API analisis dan transformasi bersifat intuitif dan teratur.
R5) Operator transformasi dirancang untuk memperingatkan secepat mungkin tentang program yang tidak valid. Hal ini dilakukan dengan pemeriksaan tipe statis atau dengan pemeriksaan dinamis ketika operator digunakan.
R6) Jika memungkinkan, versi teks model Spoon mendekati versi aslinya.
Kompilasi
Untuk mengkompilasi Spoon, Anda memerlukan Java Development Kit (JDK) dan Maven:
git clone https://github.com/INRIA/spoon
cd spoon
mvn compile
Untuk menjalankan tes:
Unduh
Versi terbaru: https://search.maven.org/remote_content?g=fr.inria.gforge.spoon&a=spoon-core&v=LATEST&c=jar-with-dependencies - Javadoc
Pakar:
< dependency >
< groupId >fr.inria.gforge.spoon</ groupId >
< artifactId >spoon-core</ artifactId >
<!-- See rendered release value at https://spoon.gforge.inria.fr/ -->
< version >{{site.spoon_release}}</ version >
</ dependency >
Rilis
- 31 Agustus 2023, Sendok 10.4.1 (log perubahan)
- 6 Juli 2023, Sendok 10.4.0 (log perubahan)
- 13 Maret 2023, Sendok 10.3.0 (log perubahan)
- Okt 2022, Sendok 10.2.0 (log perubahan)
- April 2022, Sendok 10.1.0 (log perubahan)
- Oktober 2021, Sendok 10.0.0 (log perubahan)
- Agustus 2021: Sendok 9.1.0 (log perubahan)
- Maret 2021: Sendok 9.0.0 (log perubahan)
- Oktober 2020: Sendok 8.3.0 (log perubahan)
- Juli 2020: Sendok 8.2.0 (log perubahan)
- Maret 2020: Sendok 8.1.0 (log perubahan)
- November 2019, Sendok 8.0.0 (log perubahan)
- Juli 2019: Spoon 7.5.0 dirilis (changelog)
- Mei 2019: Spoon 7.4.0 dirilis (changelog)
- 10 Februari 2019: Spoon 7.3.0 dirilis (changelog)
- 4 Desember 2018: Spoon 7.2.0 dirilis (changelog)
- 10 Oktober 2018: Spoon 7.1.0 dirilis (changelog)
- 4 Juli 2018: Spoon 7.0.0 dirilis (changelog)
- 8 Maret 2018: Spoon 6.2.0 dirilis (changelog)
- 20 Desember 2017: Spoon 6.1.0 dirilis, selamat Natal! ? (log perubahan)
- 17 November 2017: Spoon 6.0.0 dirilis! Periksa (log perubahan) karena ada beberapa perubahan yang tidak kompatibel dengan versi sebelumnya ️
- 6 September 2017: Spoon 5.9.0 dirilis (changelog) rilis kembali bekerja !
- 11 Juli 2017: Spoon 5.8.0 dirilis (changelog) Rilis musim panas? Lebih disukai daripada yang sebelumnya: memperbaiki banyak bug.
- 01 Juni 2017: Spoon 5.7.0 dirilis (changelog)
- 16 Maret 2017: Spoon 5.6.0 dirilis (changelog) Rilis musim semi :-)
- 11 Januari 2017: Spoon 5.5.0 dirilis (changelog). Selamat tahun baru!
- 27 Oktober 2016: Spoon 5.4.0 dirilis (changelog).
- 19 September 2016: Spoon 5.3.0 dirilis (changelog).
- 30 Juni 2016: Spoon 5.2.0 dirilis (changelog).
- 22 Juni 2016: Spoon 5.1.1 dirilis (changelog).
- 21 Maret 2016: Spoon 5.1.0 dirilis (changelog).
- 12 Februari 2016: Spoon 5.0.2 dirilis (changelog).
- 3 Februari 2016: Spoon 5.0.1 dirilis (changelog).
- 25 Januari 2016: Spoon 5.0.0 dirilis (changelog).
- 18 November 2015: Spoon 4.4.1 dirilis (changelog).
- 16 November 2015: Spoon 4.4.0 dirilis (changelog).
- 22 September 2015: Spoon 4.3.0 dirilis (changelog).
- 15 Juni 2015: Spoon 4.2.0 dirilis (changelog).
- 7 Mei 2015: Spoon 4.1.0 dirilis (changelog).
- 8 April 2015: Spoon 4.0.0 dirilis (changelog).
- 11 Februari 2015: Spoon 3.1 dirilis (changelog).
- 9 Desember 2014: Spoon 3.0 dirilis (changelog).
- 12 November 2014: Spoon 2.4 dirilis (changelog).
- 9 Oktober 2014: Spoon 2.3.1 dirilis (changelog).
- 12 September 2014: Spoon 2.1 dirilis (changelog).
- 2 April 2014: Spoon 2.0 dirilis (changelog).
- 30 September 2013: Spoon 1.6 dirilis.
- 12 April 2012: Spoon 1.5 dirilis.
Lisensi
Spoon Gratis dan Open Source, berlisensi ganda di bawah (lisensi CeCILL-C - setara dengan LGPL dalam bahasa Prancis) dan lisensi MIT.
JProfiler
Spoon dikembangkan dengan bantuan JProfiler, profiler Java oleh ej-technologies GmbH. JProfiler mendukung pengembangan Spoon dengan menyediakan Java Profiler berfitur lengkap secara gratis. Kami berterima kasih kepada ej-technologies GmbH atas dukungan ini.
Kontributor Github
Daftar ini dibuat oleh chore/generate-contributor-list.py
. Jika Anda tidak terdaftar atau ingin mengetahui nama lengkap Anda, silakan kirim ke #3909.
- adamjryan
- Alcides Fonseca
- Alexander Shopov
- Aman Sharma
- andrewbwogi
- Andre Cruz
- Andre Silva
- Antoine Motier
- Anton Lyxell
- argius
- Arnaud Blouin
- Arsenkhy
- Artamm
- Artur Bosch
- Arvid Siberian
- Arya
- Ashutosh Kumar Verma
- aveuiller
- Axel Howard
- Benyamin DANGLOT
- Benoit Cornu
- Carlos Noguera
- Ceki Gulcu
- juara
- Pesona
- ChrisSquare
- Christophe Dufour
- Christopher Stokes
- Clemens Bartz
- Clement Fournier
- Cesar Soto Valero
- Daniel Bobbert
- Darius Sas
- David Bernard
- Didier Donsez
- Diorcet Yann
- Dorota Kopczyk
- dufaux
- dwayneb
- dya-tel
- Eddie T
- Egor Bredikhin
- Fabien DUMINY
- Kipas Panjang
- fangzhen
- favorit
- Favio DeMarco
- Fernanda Madeiral
- Filip Krakowski
- Gabriel Pendamping Burgos
- gibahjoe
- Bot Tindakan GitHub
- GluckZhang
- Gregor Zeitlinger
- gtoison
- Guillaume Toison
- Gérard Paligot
- Hannes Greule
- Haris Adzemovic
- HectorSM
- Henry Chu
- Herve Boutemy
- Horia Konstantin
- I-Al-Istannen
- intrigus-lgtm
- jakobbraun
- Jan Galinski
- Jon
- Kai Luo
- Lakshya A Agrawal
- leventov
- Lionel Seinturier
- lodart
- Lukas
- Lukas Krejci
- Lukas Merrick
- Marcel Manseer
- Marcel Steinbeck
- Martin Monperrus
- Martin Wittlinger
- MartinWitt
- Matias Martinez
- Maxim Stefanov
- Maxime CLEMENT
- Mehdi Kaytoue
- Michael Tage
- Mickael Istria
- Miguel Sozinho Ramalho
- Michael Forsberg
- Tuan Pinus
- Muhammet Ali AKBAY
- Nicolas Harrand
- Nicolas Pessemier
- Nicolas Petitprez
- Noah Santschi-Cooney
- Olivier Barais
- Ondřej Šebek
- Patrick Schmitt
- Pavel Vojtechovsky
- peroksid90
- Philippe Ombredanne
- Phillip Schichtel
- priyanka-28
- Quentin LE DILAVREC
- raymogg
- Renaud Pawlak
- Reza Gharibi
- Rhys Compton
- Rick Kellogg
- Rijnard van Tonder
- Rohitesh Kumar Jain
- Roman Leventov
- Ryota Hiyoshi
- Sander Ploegsma
- santos-samuel
- skuter
- Scott Dickerson
- Scott Pinwell
- Sebastian Lamelas Marcote
- Sergei Fedorov
- Shantanu
- Simon Larsen
- Simon Urli
- Spencer Williams
- slm
- ST0NEWALL
- Stefan Serigala
- Bot Keamanan Langkah
- Sébastien Bertrand
- Bot Sendok
- Thimo Seitz
- Thomas Durieux
- tiagodrcarvalho
- Tomasz Zieliński
- Anda Keller
- Viktor
- Vincenzo Musco
- Wolfgang Schmiesing
- Wouter Smeenk
- Wreulicke
- Yann Diorcet
- Yogya Tulip Gamage
- Zhang Xindong
- Dimitri