Cuchara
Spoon es una biblioteca de código abierto para analizar, reescribir, transformar y transpilar código fuente Java. Analiza archivos fuente para crear un AST bien diseñado con una potente API de análisis y transformación. Admite versiones modernas de Java hasta Java 20. Spoon es un proyecto oficial de código abierto de Inria y miembro del consorcio de código abierto OW2.
Documentación
La documentación oficial más reciente está disponible en https://spoon.gforge.inria.fr/.
Uso académico
Si utiliza Spoon con fines académicos, cite: Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier. "Spoon: una biblioteca para implementar análisis y transformaciones del código fuente Java". En Software: práctica y experiencia, 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},
}
Soporte profesional
Si necesita soporte profesional en Spoon (desarrollo, capacitación, extensión), puede publicar un comentario en el n.° 3251.
Empezando en 2 segundos
Versión de Java: la versión 10 y posteriores de Spoon requiere Java 11 o posterior. Spoon 9.1.0 es la versión final de Spoon compatible con Java 8, y no planeamos incluir ninguna corrección de errores o características en Spoon 9. Tenga en cuenta que Spoon, por supuesto, aún puede consumir código fuente para versiones anteriores de Java, pero necesita JDK. 11+ para correr.
Obtenga la última versión estable con Maven, consulte https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core
Y empieza a usarlo:
CtClass l = Launcher . parseClass ( "class A { void m() { System.out.println( " yeah " );} }" );
Documentación:
- Documentación de referencia: https://spoon.gforge.inria.fr/ (contiene el contenido de la carpeta doc)
- Ejemplos de código: https://github.com/SpoonLabs/spoon-examples
- Vídeos: Spoon: Primeros pasos - Simon Urli @ OW2Con'18 (París), Generar una afirmación de prueba con Spoon - Benjamin Danglot @ OW2Con'17 (París)
Contribuyendo en 2 segundos
Cree su primera solicitud de extracción para mejorar la documentación, ¡consulte el documento! ¡Continúe con su primera corrección de errores! La comunidad es de mente abierta, respetuosa y paciente. Todas las contribuciones externas son bienvenidas.
Filosofía del diseño
R1) El metamodelo Spoon se acerca lo más posible a los conceptos del lenguaje.
R2) El modelo Spoon de un programa es completo y sólido.
R3) La versión de texto de un modelo Spoon está bien formada y semánticamente equivalente al programa original.
R4) La API de análisis y transformación es intuitiva y regular.
R5) Los operadores de transformación están diseñados para advertir lo más rápido posible sobre programas no válidos. Esto se hace con verificación de tipo estática o con comprobaciones dinámicas cuando se utilizan los operadores.
R6) Cuando sea posible, la versión de texto de un modelo de Spoon se aproxima a la original.
Compilando
Para compilar Spoon, necesita un kit de desarrollo de Java (JDK) y Maven:
git clone https://github.com/INRIA/spoon
cd spoon
mvn compile
Para ejecutar las pruebas:
Descargar
Última versión: https://search.maven.org/remote_content?g=fr.inria.gforge.spoon&a=spoon-core&v=LATEST&c=jar-with-dependencies - Javadoc
experto:
< 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 >
Lanzamientos
- 31 de agosto de 2023, Spoon 10.4.1 (registro de cambios)
- 6 de julio de 2023, Spoon 10.4.0 (registro de cambios)
- 13 de marzo de 2023, Spoon 10.3.0 (registro de cambios)
- Octubre de 2022, Spoon 10.2.0 (registro de cambios)
- Abril de 2022, Spoon 10.1.0 (registro de cambios)
- Octubre de 2021, Spoon 10.0.0 (registro de cambios)
- Agosto de 2021: Spoon 9.1.0 (registro de cambios)
- Marzo de 2021: Spoon 9.0.0 (registro de cambios)
- Octubre de 2020: Spoon 8.3.0 (registro de cambios)
- Julio de 2020: Spoon 8.2.0 (registro de cambios)
- Marzo de 2020: Spoon 8.1.0 (registro de cambios)
- Noviembre de 2019, Spoon 8.0.0 (registro de cambios)
- Julio de 2019: se lanza Spoon 7.5.0 (registro de cambios)
- Mayo de 2019: se lanza Spoon 7.4.0 (registro de cambios)
- 10 de febrero de 2019: se lanza Spoon 7.3.0 (registro de cambios)
- 4 de diciembre de 2018: se lanza Spoon 7.2.0 (registro de cambios)
- 10 de octubre de 2018: se lanza Spoon 7.1.0 (registro de cambios)
- 4 de julio de 2018: se lanza Spoon 7.0.0 (registro de cambios)
- 8 de marzo de 2018: se lanza Spoon 6.2.0 (registro de cambios)
- 20 de diciembre de 2017: Se lanza Spoon 6.1.0, ¡feliz navidad! ? (registro de cambios)
- 17 de noviembre de 2017: ¡Se lanza Spoon 6.0.0! Consulte el (registro de cambios), ya que hay pocos cambios no compatibles con versiones anteriores. ️
- 6 de septiembre de 2017: Lanzamiento de Spoon 5.9.0 (registro de cambios) ¡lanzamiento de regreso al trabajo !
- 11 de julio de 2017: Se lanza Spoon 5.8.0 (registro de cambios) ¿Lanzamiento de verano? Es preferible al anterior: corregir muchos errores.
- 01 de junio de 2017: se lanza Spoon 5.7.0 (registro de cambios)
- 16 de marzo de 2017: Se lanza Spoon 5.6.0 (registro de cambios) Lanzamiento de primavera :-)
- 11 de enero de 2017: se lanza Spoon 5.5.0 (registro de cambios). ¡Feliz año nuevo!
- 27 de octubre de 2016: se lanza Spoon 5.4.0 (registro de cambios).
- 19 de septiembre de 2016: se lanza Spoon 5.3.0 (registro de cambios).
- 30 de junio de 2016: se lanza Spoon 5.2.0 (registro de cambios).
- 22 de junio de 2016: se lanza Spoon 5.1.1 (registro de cambios).
- 21 de marzo de 2016: se lanza Spoon 5.1.0 (registro de cambios).
- 12 de febrero de 2016: se lanza Spoon 5.0.2 (registro de cambios).
- 3 de febrero de 2016: se lanza Spoon 5.0.1 (registro de cambios).
- 25 de enero de 2016: se lanza Spoon 5.0.0 (registro de cambios).
- 18 de noviembre de 2015: se lanza Spoon 4.4.1 (registro de cambios).
- 16 de noviembre de 2015: se lanza Spoon 4.4.0 (registro de cambios).
- 22 de septiembre de 2015: se lanza Spoon 4.3.0 (registro de cambios).
- 15 de junio de 2015: se lanza Spoon 4.2.0 (registro de cambios).
- 7 de mayo de 2015: se lanza Spoon 4.1.0 (registro de cambios).
- 8 de abril de 2015: se lanza Spoon 4.0.0 (registro de cambios).
- 11 de febrero de 2015: se lanza Spoon 3.1 (registro de cambios).
- 9 de diciembre de 2014: se lanza Spoon 3.0 (registro de cambios).
- 12 de noviembre de 2014: se lanza Spoon 2.4 (registro de cambios).
- 9 de octubre de 2014: se lanza Spoon 2.3.1 (registro de cambios).
- 12 de septiembre de 2014: se lanza Spoon 2.1 (registro de cambios).
- 2 de abril de 2014: se lanza Spoon 2.0 (registro de cambios).
- 30 de septiembre de 2013: se lanza Spoon 1.6.
- 12 de abril de 2012: Se lanza Spoon 1.5.
Licencia
Spoon es gratuito y de código abierto, con doble licencia (licencia CeCILL-C - equivalente francés a LGPL) y licencia MIT.
JProfiler
Spoon se desarrolla con la ayuda de JProfiler, un generador de perfiles Java de ej-technologies GmbH. JProfiler apoya el desarrollo de Spoon proporcionando su Java Profiler con todas las funciones de forma gratuita. Agradecemos a ej-technologies GmbH por este apoyo.
Colaboradores de Github
Esta lista es generada por chore/generate-contributor-list.py
. Si no aparece en la lista o desea obtener su nombre completo, publíquelo en el número 3909.
- adamjryan
- Alcides Fonseca
- Alexander Shopov
- Aman Sharma
- andrewbwogi
- andré cruz
- André Silva
- Antonio Motier
- Antón Lyxell
- Argio
- Arnaud Blouin
- arsenio
- Artam
- Arturo Bosch
- Arvid Siberov
- ario
- Ashutosh Kumar Verma
- aveuiller
- Axel Howind
- Benjamín DANGLOT
- Benoit Cornu
- Carlos Noguera
- Ceki Gülcü
- campeón
- Encanto
- ChrisCuadrado
- Christophe Dufour
- Christopher Stokes
- Clemens Bartz
- Clément Fournier
- César Soto Valero
- Daniel Bobbert
- Darius Sas
- David Bernardo
- Didier Donsez
- Yann Diorcet
- Dorota Kopczyk
- dufaux
- dwayneb
- dya-tel
- Eddie T.
- Egor Bredikhin
- Fabien DUMINY
- Abanico largo
- fangzhen
- favorito
- Favio De Marco
- Fernanda Madeiral
- Filip Krakowski
- Gabriel Chaperon Burgos
- gibahjoe
- Bot de acciones de GitHub
- GluckZhang
- Gregorio Zeitlinger
- gtoison
- Guillaume Toison
- Gerard Paligot
- Hannes Greule
- Haris Adzemović
- HéctorSM
- Henry Chu
- Hervé Boutemy
- Horia Constantin
- I-Al-Istannen
- intrigus-lgtm
- jakobbraun
- Jan Galinski
- jon
- Kai Luo
- Lakshya A Agrawal
- leventov
- Lionel Seinturier
- lodar
- lucas
- Lukas Krejci
- Lucas Merrick
- Marcel Manseer
- marcel steinbeck
- Martín Monperrus
- Martín Wittlinger
- martinwitt
- Matías Martínez
- Maxim Stefanov
- Maxime CLEMENTE
- Mehdi Kaytoue
- Michael Täge
- Michael Istria
- Miguel Sozinho Ramalho
- Michael Forsberg
- señor pino
- Muhammet Ali AKBAY
- Nicolás Harrand
- Nicolas Pessemier
- Nicolas Petitprez
- Noah Santschi-Cooney
- Olivier Barais
- Ondřej Šebek
- Patricio Schmitt
- Pavel Vojtechovsky
- peroksid90
- Philippe Ombredanne
- Philip 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
- patineta
- Scott Dickerson
- Scott Pinwell
- Sebastián Lamelas Marcote
- Serguéi Fedorov
- shatanu
- Simón Larsen
- Simón Urli
- Spencer Williams
- srlm
- ST0NEWALL
- Stefan Lobo
- Bot de seguridad paso a paso
- Sébastien Bertrand
- El robot cuchara
- Thimo Seitz
- Thomas Durieux
- tiagodrcarvalho
- Tomasz Zieliński
- Urs Keller
- Víctor
- Vincenzo Musco
- Wolfgang Schmiesing
- Wouter Smeenk
- Wreulicke
- Yann Diorcet
- Juego de tulipanes de Yogya
- Zhang Xin Dong
- Дмитрий