Colher
Spoon é uma biblioteca de código aberto para analisar, reescrever, transformar e transpilar código-fonte Java. Ele analisa arquivos de origem para construir um AST bem projetado com análise poderosa e API de transformação. Ele suporta versões modernas de Java até Java 20. Spoon é um projeto oficial de código aberto da Inria e membro do consórcio de código aberto OW2.
Documentação
A documentação oficial mais recente está disponível em https://spoon.gforge.inria.fr/.
Uso acadêmico
Se você usa o Spoon para fins acadêmicos, cite: Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier. “Spoon: uma biblioteca para implementação de análises e transformações de código-fonte Java”. Em Software: Prática e Experiência, 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},
}
Suporte profissional
Se precisar de suporte profissional no Spoon (desenvolvimento, treinamento, extensão), fique à vontade para postar um comentário em #3251
Começando em 2 segundos
Versão Java: o Spoon versão 10 e superior requer Java 11 ou posterior. Spoon 9.1.0 é a versão final do Spoon compatível com Java 8, e não planejamos fazer backport de quaisquer correções de bugs ou recursos para o Spoon 9. Observe que o Spoon, é claro, ainda pode consumir código-fonte para versões mais antigas do Java, mas precisa do JDK 11+ para correr.
Obtenha a versão estável mais recente com Maven, consulte https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core
E comece a usá-lo:
CtClass l = Launcher . parseClass ( "class A { void m() { System.out.println( " yeah " );} }" );
Documentação:
- Documentação de referência: https://spoon.gforge.inria.fr/ (contém o conteúdo da pasta doc)
- Exemplos de código: https://github.com/SpoonLabs/spoon-examples
- Vídeos: Spoon: Primeiros passos - Simon Urli @ OW2Con'18 (Paris), Gerar declaração de teste com Spoon - Benjamin Danglot @ OW2Con'17 (Paris)
Contribuindo em 2 segundos
Crie sua primeira solicitação pull para melhorar a documentação, veja o documento! Prossiga com sua primeira correção de bug! A comunidade é de mente aberta, respeitosa e paciente. Todas as contribuições externas são bem-vindas.
Filosofia de Design
R1) O metamodelo Spoon é o mais próximo possível dos conceitos da linguagem.
R2) O modelo Spoon de um programa é completo e sólido.
R3) A versão em texto de um modelo Spoon é bem formada e semanticamente equivalente ao programa original.
R4) A API de análise e transformação é intuitiva e regular.
R5) Os operadores de transformação são projetados para avisar o mais rápido possível sobre programas inválidos. Isso é feito com verificação de tipo estático ou com verificações dinâmicas quando os operadores são usados.
R6) Quando viável, a versão em texto de um modelo Spoon é próxima do original.
Compilando
Para compilar o Spoon, você precisa de um Java Development Kit (JDK) e Maven:
git clone https://github.com/INRIA/spoon
cd spoon
mvn compile
Para executar os testes:
Download
Versão mais recente: 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 >
Lançamentos
- 31 de agosto de 2023, Spoon 10.4.1 (log de alterações)
- 6 de julho de 2023, Spoon 10.4.0 (log de alterações)
- 13 de março de 2023, Spoon 10.3.0 (log de alterações)
- Outubro de 2022, Spoon 10.2.0 (log de alterações)
- Abril de 2022, Spoon 10.1.0 (registro de alterações)
- Outubro de 2021, Spoon 10.0.0 (log de alterações)
- Agosto de 2021: Spoon 9.1.0 (registro de alterações)
- Março de 2021: Spoon 9.0.0 (registro de alterações)
- Outubro de 2020: Spoon 8.3.0 (registro de alterações)
- Julho de 2020: Spoon 8.2.0 (registro de alterações)
- Março de 2020: Spoon 8.1.0 (registro de alterações)
- Novembro de 2019, Spoon 8.0.0 (log de alterações)
- Julho de 2019: Spoon 7.5.0 é lançado (changelog)
- Maio de 2019: Spoon 7.4.0 é lançado (changelog)
- 10 de fevereiro de 2019: Spoon 7.3.0 é lançado (changelog)
- 4 de dezembro de 2018: Spoon 7.2.0 é lançado (changelog)
- 10 de outubro de 2018: Spoon 7.1.0 é lançado (changelog)
- 4 de julho de 2018: Spoon 7.0.0 é lançado (changelog)
- 8 de março de 2018: Spoon 6.2.0 é lançado (changelog)
- 20 de dezembro de 2017: Spoon 6.1.0 é lançado, feliz Natal! ? (registo de alterações)
- 17 de novembro de 2017: Spoon 6.0.0 é lançado! Verifique o (changelog), pois há poucas alterações não compatíveis com versões anteriores ️
- 6 de setembro de 2017: Spoon 5.9.0 é lançado (changelog) versão de volta ao trabalho !
- 11 de julho de 2017: Spoon 5.8.0 é lançado (changelog) Lançamento de verão? Para ser preferido em relação ao anterior: corrija muitos bugs.
- 01 de junho de 2017: Spoon 5.7.0 é lançado (changelog)
- 16 de março de 2017: Spoon 5.6.0 é lançado (changelog) Lançamento de primavera :-)
- 11 de janeiro de 2017: Spoon 5.5.0 é lançado (changelog). Feliz ano novo!
- 27 de outubro de 2016: Spoon 5.4.0 é lançado (changelog).
- 19 de setembro de 2016: Spoon 5.3.0 é lançado (changelog).
- 30 de junho de 2016: Spoon 5.2.0 é lançado (changelog).
- 22 de junho de 2016: Spoon 5.1.1 é lançado (changelog).
- 21 de março de 2016: Spoon 5.1.0 é lançado (changelog).
- 12 de fevereiro de 2016: Spoon 5.0.2 é lançado (changelog).
- 3 de fevereiro de 2016: Spoon 5.0.1 é lançado (changelog).
- 25 de janeiro de 2016: Spoon 5.0.0 é lançado (changelog).
- 18 de novembro de 2015: Spoon 4.4.1 é lançado (changelog).
- 16 de novembro de 2015: Spoon 4.4.0 é lançado (changelog).
- 22 de setembro de 2015: Spoon 4.3.0 é lançado (changelog).
- 15 de junho de 2015: Spoon 4.2.0 é lançado (changelog).
- 7 de maio de 2015: Spoon 4.1.0 é lançado (changelog).
- 8 de abril de 2015: Spoon 4.0.0 é lançado (changelog).
- 11 de fevereiro de 2015: Spoon 3.1 é lançado (changelog).
- 9 de dezembro de 2014: Spoon 3.0 é lançado (changelog).
- 12 de novembro de 2014: Spoon 2.4 é lançado (changelog).
- 9 de outubro de 2014: Spoon 2.3.1 é lançado (changelog).
- 12 de setembro de 2014: Spoon 2.1 é lançado (changelog).
- 2 de abril de 2014: Spoon 2.0 é lançado (changelog).
- 30 de setembro de 2013: Spoon 1.6 é lançado.
- 12 de abril de 2012: Spoon 1.5 é lançado.
Licença
Spoon é gratuito e de código aberto, licenciado duas vezes sob a (licença CeCILL-C - equivalente francês à LGPL) e a licença MIT.
JProfiler
Spoon é desenvolvido com a ajuda do JProfiler, um criador de perfil Java da ej-technologies GmbH. JProfiler suporta o desenvolvimento do Spoon, fornecendo gratuitamente seu Java Profiler completo. Agradecemos à ej-technologies GmbH por este apoio.
Colaboradores do Github
Esta lista é gerada por chore/generate-contributor-list.py
. Se você não estiver listado ou quiser ter seu nome completo, poste em #3909.
- Adamjryan
- Alcides Fonseca
- Alexandre Shopov
- Aman Sharma
- andrewbwogi
- Andre Cruz
- Andre Silva
- Antoine Mottier
- Anton Lyxell
- argius
- Arnaud Blouin
- Arsenkhi
- Artam
- Artur Bosch
- Arvid Siberov
- ariano
- Ashutosh Kumar Verma
- aveuiller
- Axel Howind
- Benjamin DANGLOT
- Benoit Cornu
- Carlos Noguera
- Ceki Gülcü
- campeão
- Charme
- ChrisSquare
- Christophe Dufour
- Cristóvão Stokes
- Clemens Bartz
- Clément Fournier
- César Soto Valero
- Daniel Bobberto
- Dario Sas
- David Bernardo
- Didier Donsez
- Diorcet Yann
- Dorota Kopczyk
- dufaux
- dwayneb
- dya-tel
- Eddie T.
- Yegor Bredikhin
- Fabien DUMINY
- Ventilador longo
- Fangzhen
- favorito
- Fávio De Marco
- Fernanda Madeiral
- Filip Krakowski
- Gabriel Chaperón Burgos
- gibahjoe
- Bot de ações do GitHub
- GluckZhang
- Gregor Zeitlinger
- gtoison
- Guillaume Toison
- Gérard Paligot
- Hannes Greule
- Haris Adzemovic
- Hector SM
- Henrique Chu
- Hervé Boutemy
- Horia Constantin
- I-Al-Istannen
- intrigante-lgtm
- Jakobbraun
- Jan Galinski
- João
- Kai Luo
- Lakshya Agrawal
- Leventov
- Lionel Seinturier
- Lodart
- Lucas
- Lucas Krejci
- Lucas Merrick
- Marcel Manseer
- Marcel Steinbeck
- Martin Monperrus
- Martin Wittlinger
- MartinWitt
- Matias Martinez
- Máximo Stefanov
- Maxime CLEMENTE
- Mehdi Kaytoué
- Michael Täge
- Mickael Istria
- Miguel Sozinho Ramalho
- Mikael Forsberg
- Sr. Pinho
- 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 Kellog
- Rijnard van Tonder
- Rohitesh Kumar Jain
- Roman Levetov
- Ryota Hiyoshi
- Sander Ploegsma
- santos-samuel
- Scootafew
- Scott Dickerson
- Scott Pinwell
- Sebastião Lamelas Marcote
- Sergei Fedorov
- Shantanu
- Simon Larsén
- Simon Urli
- Spencer Williams
- srlm
- ST0NEWALL
- Stefan Lobo
- Bot StepSecurity
- Sébastien Bertrand
- O Bot Colher
- Thimo Seitz
- Thomas Durieux
- tiagodcarvalho
- Tomasz Zieliński
- Urs Keller
- Vítor
- Vincenzo Musco
- Wolfgang Schmiesing
- Wouter Smeenk
- Wreulicke
- Yann Diorcet
- Jogo Yogya Tulip
- Zhang Xindong
- Dmitry