Löffel
Spoon ist eine Open-Source-Bibliothek zum Analysieren, Umschreiben, Transformieren und Transpilieren von Java-Quellcode. Es analysiert Quelldateien, um ein gut gestaltetes AST mit leistungsstarker Analyse- und Transformations-API zu erstellen. Es unterstützt moderne Java-Versionen bis Java 20. Spoon ist ein offizielles Inria-Open-Source-Projekt und Mitglied des OW2-Open-Source-Konsortiums.
Dokumentation
Die neueste offizielle Dokumentation ist unter https://spoon.gforge.inria.fr/ verfügbar.
Akademischer Gebrauch
Wenn Sie Spoon für akademische Zwecke nutzen, zitieren Sie bitte: Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier. „Spoon: Eine Bibliothek zur Implementierung von Analysen und Transformationen von Java-Quellcode“. In Software: Praxis und Erfahrung, 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},
}
Professionelle Unterstützung
Wenn Sie professionelle Unterstützung zu Spoon benötigen (Entwicklung, Schulung, Erweiterung), können Sie gerne einen Kommentar auf #3251 hinterlassen
In 2 Sekunden loslegen
Java-Version: Spoon Version 10 und höher erfordert Java 11 oder höher. Spoon 9.1.0 ist die letzte mit Java 8 kompatible Spoon-Version, und wir planen nicht, Fehlerkorrekturen oder Funktionen auf Spoon 9 zurückzuportieren. Beachten Sie, dass Spoon natürlich weiterhin Quellcode für ältere Java-Versionen nutzen kann, dafür aber JDK benötigt 11+ zum Laufen.
Holen Sie sich die neueste stabile Version mit Maven, siehe https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core
Und fangen Sie an, es zu verwenden:
CtClass l = Launcher . parseClass ( "class A { void m() { System.out.println( " yeah " );} }" );
Dokumentation:
- Referenzdokumentation: https://spoon.gforge.inria.fr/ (enthält den Inhalt des Dokumentordners)
- Codebeispiele: https://github.com/SpoonLabs/spoon-examples
- Videos: Spoon: Erste Schritte – Simon Urli @ OW2Con'18 (Paris), Test Assertion mit Spoon generieren – Benjamin Danglot @ OW2Con'17 (Paris)
Beitrag in 2 Sekunden
Erstellen Sie Ihren ersten Pull-Request, um die Dokumentation zu verbessern, siehe Dokument! Fahren Sie mit der ersten Fehlerbehebung fort! Die Gemeinschaft ist aufgeschlossen, respektvoll und geduldig. Alle externen Beiträge sind willkommen.
Designphilosophie
R1) Das Spoon-Metamodell kommt den Sprachkonzepten so nahe wie möglich.
R2) Das Spoon-Modell eines Programms ist vollständig und solide.
R3) Die Textversion eines Spoon-Modells ist wohlgeformt und semantisch äquivalent zum Originalprogramm.
R4) Die Analyse- und Transformations-API ist intuitiv und regelmäßig.
R5) Transformationsoperatoren sollen so schnell wie möglich vor ungültigen Programmen warnen. Dies geschieht entweder mit statischer Typprüfung oder mit dynamischen Prüfungen bei Verwendung der Operatoren.
R6) Wenn möglich, ist die Textversion eines Spoon-Modells nah am Original.
Kompilieren
Zum Kompilieren von Spoon benötigen Sie ein Java Development Kit (JDK) und Maven:
git clone https://github.com/INRIA/spoon
cd spoon
mvn compile
So führen Sie die Tests aus:
Herunterladen
Neueste Version: https://search.maven.org/remote_content?g=fr.inria.gforge.spoon&a=spoon-core&v=LATEST&c=jar-with-dependencies – Javadoc
Maven:
< 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 >
Veröffentlichungen
- 31. August 2023, Spoon 10.4.1 (Änderungsprotokoll)
- 6. Juli 2023, Spoon 10.4.0 (Änderungsprotokoll)
- 13. März 2023, Spoon 10.3.0 (Änderungsprotokoll)
- Okt. 2022, Spoon 10.2.0 (Änderungsprotokoll)
- April 2022, Spoon 10.1.0 (Änderungsprotokoll)
- Oktober 2021, Spoon 10.0.0 (Änderungsprotokoll)
- August 2021: Spoon 9.1.0 (Änderungsprotokoll)
- März 2021: Spoon 9.0.0 (Änderungsprotokoll)
- Oktober 2020: Spoon 8.3.0 (Änderungsprotokoll)
- Juli 2020: Spoon 8.2.0 (Änderungsprotokoll)
- März 2020: Spoon 8.1.0 (Änderungsprotokoll)
- November 2019, Spoon 8.0.0 (Änderungsprotokoll)
- Juli 2019: Spoon 7.5.0 wird veröffentlicht (Changelog)
- Mai 2019: Spoon 7.4.0 wird veröffentlicht (Changelog)
- 10. Februar 2019: Spoon 7.3.0 wird veröffentlicht (Changelog)
- 4. Dezember 2018: Spoon 7.2.0 wird veröffentlicht (Changelog)
- 10. Oktober 2018: Spoon 7.1.0 wird veröffentlicht (Changelog)
- 4. Juli 2018: Spoon 7.0.0 wird veröffentlicht (Changelog)
- 8. März 2018: Spoon 6.2.0 wird veröffentlicht (Changelog)
- 20. Dezember 2017: Spoon 6.1.0 wird veröffentlicht, frohe Weihnachten! ? (Änderungsprotokoll)
- 17. November 2017: Spoon 6.0.0 ist veröffentlicht! Überprüfen Sie das (Änderungsprotokoll), da es nur wenige nicht abwärtskompatible Änderungen gibt ️
- 6. September 2017: Spoon 5.9.0 wird veröffentlicht (Changelog) Back-to-Work- Release!
- 11. Juli 2017: Spoon 5.8.0 wird veröffentlicht (Changelog) Sommerveröffentlichung? Was dem vorherigen vorzuziehen ist: Viele Fehler beheben.
- 01. Juni 2017: Spoon 5.7.0 wird veröffentlicht (Changelog)
- 16. März 2017: Spoon 5.6.0 wird veröffentlicht (Changelog) Frühjahrsveröffentlichung :-)
- 11. Januar 2017: Spoon 5.5.0 wird veröffentlicht (Änderungsprotokoll). Frohes Neues Jahr!
- 27. Oktober 2016: Spoon 5.4.0 wird veröffentlicht (Änderungsprotokoll).
- 19. September 2016: Spoon 5.3.0 wird veröffentlicht (Änderungsprotokoll).
- 30. Juni 2016: Spoon 5.2.0 wird veröffentlicht (Änderungsprotokoll).
- 22. Juni 2016: Spoon 5.1.1 wird veröffentlicht (Änderungsprotokoll).
- 21. März 2016: Spoon 5.1.0 wird veröffentlicht (Änderungsprotokoll).
- 12. Februar 2016: Spoon 5.0.2 wird veröffentlicht (Changelog).
- 3. Februar 2016: Spoon 5.0.1 wird veröffentlicht (Änderungsprotokoll).
- 25. Januar 2016: Spoon 5.0.0 wird veröffentlicht (Änderungsprotokoll).
- 18. November 2015: Spoon 4.4.1 wird veröffentlicht (Änderungsprotokoll).
- 16. November 2015: Spoon 4.4.0 wird veröffentlicht (Änderungsprotokoll).
- 22. September 2015: Spoon 4.3.0 wird veröffentlicht (Änderungsprotokoll).
- 15. Juni 2015: Spoon 4.2.0 wird veröffentlicht (Änderungsprotokoll).
- 7. Mai 2015: Spoon 4.1.0 wird veröffentlicht (Änderungsprotokoll).
- 8. April 2015: Spoon 4.0.0 wird veröffentlicht (Änderungsprotokoll).
- 11. Februar 2015: Spoon 3.1 wird veröffentlicht (Changelog).
- 9. Dezember 2014: Spoon 3.0 wird veröffentlicht (Changelog).
- 12. November 2014: Spoon 2.4 wird veröffentlicht (Changelog).
- 9. Oktober 2014: Spoon 2.3.1 wird veröffentlicht (Changelog).
- 12. September 2014: Spoon 2.1 wird veröffentlicht (Changelog).
- 2. April 2014: Spoon 2.0 wird veröffentlicht (Changelog).
- 30. September 2013: Spoon 1.6 wird veröffentlicht.
- 12. April 2012: Spoon 1.5 wird veröffentlicht.
Lizenz
Spoon ist kostenlos und Open Source, doppelt lizenziert unter der (CeCILL-C-Lizenz – französisches Äquivalent zu LGPL) und der MIT-Lizenz.
JProfiler
Spoon wird mit Hilfe von JProfiler entwickelt, einem Java-Profiler der ej-technologies GmbH. JProfiler unterstützt die Entwicklung von Spoon, indem es seinen voll ausgestatteten Java Profiler kostenlos zur Verfügung stellt. Wir danken der ej-technologies GmbH für diese Unterstützung.
Github-Mitwirkende
Diese Liste wird von chore/generate-contributor-list.py
generiert. Wenn Sie nicht aufgeführt sind oder Ihren vollständigen Namen haben möchten, posten Sie bitte unter #3909.
- adamjryan
- Alcides Fonseca
- Alexander Shopov
- Aman Sharma
- andrewbwogi
- André Cruz
- André Silva
- Antoine Mottier
- Anton Lyxell
- argius
- Arnaud Blouin
- Arsenkhy
- Artamm
- Artur Bosch
- Arvid Siberov
- arisch
- Ashutosh Kumar Verma
- Aveuiller
- Axel Howind
- Benjamin DANGLOT
- Benoit Cornu
- Carlos Noguera
- Ceki Gülcü
- Champp
- Charme
- ChrisSquare
- Christophe Dufour
- Christopher Stokes
- Clemens Bartz
- Clément Fournier
- César Soto Valero
- Daniel Bobbert
- Darius Sas
- David Bernard
- Didier Donsez
- Diorcet Yann
- Dorota Kopczyk
- dufaux
- dwayneb
- dya-tel
- Eddie T
- Jegor Bredichin
- Fabien DUMINY
- Fan Long
- fangzhen
- Favorit
- Favio DeMarco
- Fernanda Madeiral
- Filip Krakowski
- Gabriel Chaperon Burgos
- Gibahjoe
- GitHub Actions Bot
- GlückZhang
- Gregor Zeitlinger
- gtoison
- Guillaume Toison
- Gérard Paligot
- Hannes Greule
- Haris Adzemovic
- HectorSM
- Henry Chu
- Hervé Boutemy
- Horia Constantin
- I-Al-Istannen
- intrigus-lgtm
- jakobbraun
- Jan Galinski
- Jon
- Kai Luo
- Lakshya A Agrawal
- Leventow
- Lionel Seinturier
- Lodart
- Lucas
- Lukas Krejci
- Luke Merrick
- Marcel Manseer
- Marcel Steinbeck
- Martin Monperrus
- Martin Wittlinger
- MartinWitt
- Matias Martinez
- Maxim Stefanow
- Maxime CLEMENT
- Mehdi Kaytoue
- Michael Täge
- Mickael Istrien
- Miguel Sozinho Ramalho
- Mikael Forsberg
- Herr Pine
- 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 Leventow
- Ryota Hiyoshi
- Sander Ploegsma
- Santos-Samuel
- Scootafew
- Scott Dickerson
- Scott Pinwell
- Sebastian Lamelas Marcote
- Sergej Fjodorow
- Shantanu
- Simon Larsén
- Simon Urli
- Spencer Williams
- srlm
- ST0NEWALL
- Stefan Wolf
- StepSecurity Bot
- Sébastien Bertrand
- Der Löffelbot
- Thimo Seitz
- Thomas Durieux
- tiagodrcarvalho
- Tomasz Zieliński
- Urs Keller
- Viktor
- Vincenzo Musco
- Wolfgang Schmiesing
- Wouter Smeenk
- Wreulicke
- Yann Diorcet
- Yogya-Tulpenspiel
- Zhang Xindong
- Дмитрий