GithubHelp home page GithubHelp logo

hhy5277 / spoon Goto Github PK

View Code? Open in Web Editor NEW

This project forked from inria/spoon

0.0 1.0 0.0 22.83 MB

Spoon is a library to analyze, transform, rewrite, transpile Java source code (incl Java 9 & Java 10). It parses source files to build a well-designed AST with powerful analysis and transformation API. Made at Inria with :heart:, :beers: and :sparkles:.

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

License: Other

Python 0.06% FreeMarker 0.07% Shell 0.04% Java 99.82% HTML 0.01%

spoon's Introduction

Maven Central Travis Build Status Coverage Status Jenkins Build Status

SonarQube Dashboard

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 Java 8, Java 9 and Java 10. Spoon is an official Inria open-source project, and member of the OW2 open-source consortium. The official website is available at http://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},
}

Getting started in 2 seconds

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\");} }");

Some examples about the usage of Spoon can be found on spoon-examples.

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

The download information is at http://spoon.gforge.inria.fr/.

Ecosystem

See http://spoon.gforge.inria.fr/ecosystem.html

On Youtube

Github Contributors

Alphabetical order of last names

git log --pretty="%an" | sed -e '/Spoon Bot/d' | sort -u | awk 'NF>=2 {print "* " $0}' | sort -k3
  • David Bernard
  • Artur Bosch
  • Egor Bredikhin
  • Maxime CLEMENT
  • Benoit Cornu
  • Andre Cruz
  • Benjamin DANGLOT
  • Scott Dickerson
  • Yann Diorcet
  • Thomas Durieux
  • Sergey Fedorov
  • Alcides Fonseca
  • Clement Fournier
  • Jan Galinski
  • Nicolas Harrand
  • Mickael Istria
  • Mehdi Kaytoue
  • Urs Keller
  • Filip Krakowski
  • Lukas Krejci
  • Ashutosh Kumar Verma
  • Roman Leventov
  • Fan Long
  • Kai Luo
  • Matias Martinez
  • Luke Merrick
  • Martin Monperrus
  • Vincenzo Musco
  • Carlos Noguera
  • Gerard Paligot
  • Renaud Pawlak
  • Nicolas Petitprez
  • Phillip Schichtel
  • Lionel Seinturier
  • Miguel Sozinho Ramalho
  • Marcel Steinbeck
  • Christopher Stokes
  • Eddie T
  • Simon Urli
  • Pavel Vojtechovsky
  • Stefan Wolf
  • Diorcet Yann
  • Gregor Zeitlinger
  • Tomasz Zielinski

Early contributors:

  • Olivier Barais
  • David Bernard
  • Benoit Cornu
  • Favio DeMarco
  • Didier Donsez
  • Christophe Dufour
  • Sebastian Lamelas Marcote
  • Matias Martinez
  • Carlos Noguera
  • Renaud Pawlak
  • Nicolas Pessemier

spoon's People

Contributors

alcides avatar andrefcruz avatar arnobl avatar arturbosch avatar ashutosh1598 avatar chris05atm avatar cnoguera avatar danglotb avatar diorcety avatar egor18 avatar fangzhen avatar gerardpaligot avatar leventov avatar martinezmatias avatar mehdi-kaytoue avatar monperrus avatar msramalho avatar msteinbeck avatar nharrand avatar oowekyala avatar petitpre avatar pschichtel avatar pvojtechovsky avatar surli avatar swolf91 avatar tdurieux avatar tempuser1909 avatar ukeller avatar zeitlinger avatar zielint0 avatar

Watchers

 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.