Coder Social home page Coder Social logo

ceki / spoon Goto Github PK

View Code? Open in Web Editor NEW

This project forked from inria/spoon

0.0 0.0 0.0 45.04 MB

Spoon is a metaprogramming library to analyze and transform Java source code. :spoon: is made with :heart:, :beers: and :sparkles:. It parses source files to build a well-designed AST with powerful analysis and transformation API.

Home Page: http://spoon.gforge.inria.fr/

License: Other

Java 99.53% HTML 0.01% Python 0.35% FreeMarker 0.06% Shell 0.06%

spoon's Introduction

Maven Central GHA tests Workflow Status Coverage Status Maintainability Rating

Spoon

Spoon is an open-source library to analyze, rewrite, transform, transpile Java source code. It parses source files to build a well-designed AST with powerful analysis and transformation API. It fully supports modern Java versions up to Java 16. Spoon is an official Inria open-source project, and member of the OW2 open-source consortium.

Documentation

The latest official documentation is available at http://spoon.gforge.inria.fr/ and a regularly updated PDF version is as https://projects.ow2.org/download/spoon/WebHome/spoon-user-manual.pdf.

Academic usage

If you use Spoon for academic purposes, please cite: Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier. “Spoon: A Library for Implementing Analyses and Transformations of Java Source Code”. In Software: Practice and Experience, 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},
}

Professional support

If you need professional support on Spoon (development, training, extension), you are welcome to post a comment on INRIA#3251

Getting started in 2 seconds

Java version: Spoon version 10 and up requires Java 11 or later. Spoon 9.1.0 is the final Spoon release compatible with Java 8.

Get latest stable version with Maven, see https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core

And start using it:

CtClass l = Launcher.parseClass("class A { void m() { System.out.println(\"yeah\");} }");

Documentation:

Contributing in 2 seconds

Create your first pull-request to improve the documentation, see doc! Proceed with your first bug fix! The community is open-minded, respectful and patient. All external contributions are welcome.

Design Philosophy

R1) The Spoon metamodel is as close as possible to the language concepts.

R2) The Spoon model of a program is complete and sound.

R3) The text version of a Spoon model is well-formed and semantically equivalent to the original program.

R4) The analysis and transformation API is intuitive and regular.

R5) Transformation operators are designed to warn as fast as possible about invalid programs. This is done either with static type checking or with dynamic checks when the operators are used.

R6) When feasible, the text version of a Spoon model is close to the original one.

Compiling

To compile Spoon, you need a Java Development Kit (JDK) and Maven:

git clone https://github.com/INRIA/spoon
cd spoon
mvn compile

To run the tests:

mvn test

Download

Latest 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 http://spoon.gforge.inria.fr/ -->
    <version>{{site.spoon_release}}</version>
</dependency>

Releases

  • August 2021: Spoon 9.1.0 (changelog)
  • March 2021: Spoon 9.0.0 (changelog)
  • October 2020: Spoon 8.3.0 (changelog)
  • July 2020: Spoon 8.2.0 (changelog)
  • March 2020: Spoon 8.1.0 (changelog)
  • November 2019, Spoon 8.0.0 (changelog)
  • July 2019: Spoon 7.5.0 is released (changelog)
  • May 2019: Spoon 7.4.0 is released (changelog)
  • Februray 10, 2019: Spoon 7.3.0 is released (changelog)
  • December 4, 2018: Spoon 7.2.0 is released (changelog)
  • October 10, 2018: Spoon 7.1.0 is released (changelog)
  • July 4, 2018: Spoon 7.0.0 is released (changelog)
  • March 8, 2018: Spoon 6.2.0 is released (changelog)
  • December 20, 2017: Spoon 6.1.0 is released, merry christmas! 🎄 (changelog)
  • November 17, 2017: Spoon 6.0.0 is released! Check the (changelog) as there are few non backward-compatible changes ⚠️
  • September 6, 2017: Spoon 5.9.0 is released (changelog) back-to-work release!
  • July 11, 2017: Spoon 5.8.0 is released (changelog) Summer release 🍺 To be prefered wrt the previous one: fix lot of bugs.
  • June 01, 2017: Spoon 5.7.0 is released (changelog)
  • March 16, 2017: Spoon 5.6.0 is released (changelog) Spring release :-)
  • January 11, 2017: Spoon 5.5.0 is released (changelog). Happy new year!
  • October 27, 2016: Spoon 5.4.0 is released (changelog).
  • September 19, 2016: Spoon 5.3.0 is released (changelog).
  • June 30, 2016: Spoon 5.2.0 is released (changelog).
  • June 22, 2016: Spoon 5.1.1 is released (changelog).
  • March 21, 2016: Spoon 5.1.0 is released (changelog).
  • February 12, 2016: Spoon 5.0.2 is released (changelog).
  • February 3, 2016: Spoon 5.0.1 is released (changelog).
  • January 25, 2016: Spoon 5.0.0 is released (changelog).
  • November 18, 2015: Spoon 4.4.1 is released (changelog).
  • November 16, 2015: Spoon 4.4.0 is released (changelog).
  • September 22, 2015: Spoon 4.3.0 is released (changelog).
  • June 15, 2015: Spoon 4.2.0 is released (changelog).
  • May 7, 2015: Spoon 4.1.0 is released (changelog).
  • April 8, 2015: Spoon 4.0.0 is released (changelog).
  • February 11, 2015: Spoon 3.1 is released (changelog).
  • December 9, 2014: Spoon 3.0 is released (changelog).
  • November 12, 2014: Spoon 2.4 is released (changelog).
  • October 9, 2014: Spoon 2.3.1 is released (changelog).
  • September 12, 2014: Spoon 2.1 is released (changelog).
  • April 2, 2014: Spoon 2.0 is released (changelog).
  • September 30, 2013: Spoon 1.6 is released.
  • April 12, 2012: Spoon 1.5 is released.

License

Spoon is Free and Open Source, double-licensed under the (CeCILL-C license - French equivalent to LGPL) and the MIT license.

Github Contributors

This list is generated by chore/generate-contributor-list.py. If you're not listed or you'd like to have your full name, please post to INRIA#3909.

  • adamjryan
  • Alcides Fonseca
  • Alexander Shopov
  • André Cruz
  • andrewbwogi
  • Antoine Mottier
  • argius
  • Arnaud Blouin
  • Artamm
  • Artur Bosch
  • aryan
  • Ashutosh Kumar Verma
  • aveuiller
  • Benoit Cornu
  • Benjamin DANGLOT
  • César Soto Valero
  • Charm
  • ChrisSquare
  • Christopher Stokes
  • Clemens Bartz
  • Clément Fournier
  • Darius Sas
  • Diorcet Yann
  • dufaux
  • dwayneb
  • dya-tel
  • Eddie T
  • Egor Bredikhin
  • Fabien DUMINY
  • fangzhen
  • Fan Long
  • fav
  • Fernanda Madeiral
  • Filip Krakowski
  • Gérard Paligot
  • gibahjoe
  • GluckZhang
  • Gregor Zeitlinger
  • Haris Adzemovic
  • HectorSM
  • Horia Constantin
  • jakobbraun
  • Jan Galinski
  • jon
  • Kai Luo
  • Lakshya A Agrawal
  • leventov
  • Lionel Seinturier
  • lodart
  • Lukas Krejci
  • Luke Merrick
  • Marcel Manseer
  • Marcel Steinbeck
  • Martin Monperrus
  • MartinWitt
  • Matias Martinez
  • Maxime CLEMENT
  • Maxim Stefanov
  • Mehdi Kaytoue
  • Michael Täge
  • Mickael Istria
  • Miguel Sozinho Ramalho
  • Mikael Forsberg
  • Muhammet Ali AKBAY
  • Nicolas Harrand
  • Nicolas Petitprez
  • Noah Santschi-Cooney
  • Carlos Noguera
  • Ondřej Šebek
  • Pavel Vojtechovsky
  • peroksid90
  • Phillip Schichtel
  • Quentin LE DILAVREC
  • raymogg
  • Renaud Pawlak
  • Rhys Compton
  • Rick Kellogg
  • Rijnard van Tonder
  • Rohitesh Kumar Jain
  • Roman Leventov
  • santos-samuel
  • scootafew
  • Scott Dickerson
  • Scott Pinwell
  • Sébastien Bertrand
  • Sergey Fedorov
  • Shantanu
  • Simon Larsén
  • Simon Urli
  • srlm
  • ST0NEWALL
  • Stefan Wolf
  • Thomas Durieux
  • tiagodrcarvalho
  • Tomasz Zieliński
  • Urs Keller
  • Vincenzo Musco
  • Wolfgang Schmiesing
  • Wouter Smeenk
  • Wreulicke
  • Yann Diorcet
  • Zhang Xindong
  • Дмитрий

spoon's People

Contributors

alcides avatar algomaster99 avatar andrewbwogi avatar arnobl avatar ashutosh1598 avatar cnoguera avatar danglotb avatar egor18 avatar gerardpaligot avatar i-al-istannen avatar lakshyaaagrawal avatar leventov avatar martinezmatias avatar martinwitt avatar mkforsb avatar monperrus avatar msteinbeck avatar nharrand avatar petitpre avatar pvojtechovsky avatar renovate[bot] avatar rohitesh-kumar-jain avatar sirywell avatar slarse avatar strum355 avatar surli avatar swolf91 avatar tdurieux avatar xzel23 avatar zielint0 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.