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 supports modern Java versions up to Java 25. Spoon is an official Inria open-source project, and member of the OW2 open-source consortium.
The latest official documentation is available at https://spoon.gforge.inria.fr/.
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},
}
If you need professional support on Spoon (development, training, extension), you are welcome to post a comment on https://github.com/INRIA/spoon/issues/3251
Required Java version:
Note that Spoon can of course still consume source code for older versions of Java, but it needs the above mentioned JDK version to run.
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:
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.
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.
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
See Releases
Spoon is Free and Open Source, double-licensed under the (CeCILL-C license - French equivalent to LGPL) and the MIT license.
Spoon is developed with the help of JProfiler, a Java profiler by ej-technologies GmbH. JProfiler supports the development of Spoon by providing its full-featured Java Profiler for free. We thank ej-technologies GmbH for this support.
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 https://github.com/INRIA/spoon/issues/3909.
$ claude mcp add spoon \
-- python -m otcore.mcp_server <graph>