Spoon — это открытая библиотека для анализа, переопределения, преобразования и транспиляции исходного кода на Java. Она парсит исходные файлы для создания хорошо спроектированного дерева разбора с мощными API для анализа и преобразования. Поддерживает современные версии Java до Java 20. Spoon является официальным проектом открытого программного обеспечения INRIA и членом консорциума открытого программного обеспечения OW2.
Последняя официальная документация доступна по адресу https://spoon.gforge.inria.fr.
Если вы используете Spoon в академических целях, пожалуйста, цитируйте: Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier. "Spoon: Библиотека для реализации анализов и преобразований исходного кода на Java". В журнале Software: Practice and Experience, Wiley-Blackwell, 2015. DOI: 10.1002/spe.2346.``` @article{pawlak:hal-01169705, TITLE = "{Spoon: Library for Implementing Analyses and Transformations of Source Code in Java}", 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 with Spoon (development, training, extension), you can leave a comment at the following address: https://github.com/INRIA/spoon/issues/3251
## Get Started in 2 Seconds
> **Java Version:** Spoon version 10 and above requires Java 11 or later. The latest Spoon version compatible with Java 8 is 9.1.0, and we do not plan to backport bug fixes or new features to Spoon 9. Note that while Spoon may require JDK 11+, it still supports processing source code for older versions of Java.
Get the latest stable release via Maven, see <https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core>
And start using it:
```java
CtClass l = Launcher.parseClass("class A { void m() { System.out.println(\"yeah\");} }");
Documentation:
Создайте свой первый pull request для улучшения документации, см. [doc](https://github.com/INRIA/spoon/tree/master/doc)! Начните исправление первого бага! Сообщество открыто, уважительно и терпеливо. Все внешние вклады приветствуются.
## Философия проектирования
R1) Метамодель Spoon максимально приближена к концепциям языка.
R2) Модель программы Spoon полна и звучит правильно.
R3) Текстовая версия модели Spoon хорошо оформлена и семантически эквивалентна исходной программе.
R4) API анализа и преобразования интуитивно понятен и регулярен.
R5) Преобразовательные операторы спроектированы так, чтобы как можно быстрее предупреждать о недействительных программах. Это делается либо через статическую проверку типов, либо через динамическую проверку при использовании операторов.
R6) Когда это возможно, текстовая версия модели Spoon максимально приближена к исходной программе.
### Компиляция
Чтобы скомпилировать Spoon, вам необходим Java Development Kit (JDK) и Maven:
git clone https://github.com/INRIA/spoon cd spoon mvn compile
Чтобы запустить тесты:
mvn test
### Скачивание
Последняя версия: <https://search.maven.org/remote_content?g=fr.inria.gforge.spoon&a=spoon-core&v=LATEST&c=jar-with-dependencies> - [Javadoc](https://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/index.html)
Maven:
```xml
<dependency>
<groupId>fr.inria.gforge.spoon</groupId>
<artifactId>spoon-core</artifactId>
<!-- См. отрендеренное значение выпуска по адресу https://spoon.gforge.inria.fr/ -->
<version>{{site.spoon_release}}</version>
</dependency>
```## Версии<! -- . * Marker comment. -->- 31 августа 2023 года, Spoon 10. 4. 1 [(история версий)](https://github.com/INRIA/spoon/releases/tag/v10. 4. 1)
- 6 июля 2023 года, Spoon 10. 4. 0 [(история версий)](https://github.com/INRIA/spoon/releases/tag/v10. 4. 0)
- 13 марта 2023 года, Spoon 10. 3. 0 [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-10. 3. 0)
- октябрь 2022 года, Spoon 10. 2. 0 [(история версий)](https://github.com/INRIA/spoon/pull/4946)
- апрель 2022 года, Spoon 10. 1. 0 [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-10. 1. 0)
- октябрь 2021 года, Spoon 10. 0. 0 [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-10. 0. 0)
- август 2021 года, Spoon 9. 1. 0 [(история версий)](https://github.com/INRIA/spoon/pull/4104)
- март 2021 года, Spoon 9. 0. 0 [(история версий)](https://github.com/INRIA/spoon/issues/3845)
- октябрь 2020 года, Spoon 8. 3. 0 [(история версий)](https://github.com/INRIA/spoon/pull/3647)
- июль 2020 года, Spoon 8. 2. 0 [(история версий)](https://github.com/INRIA/spoon/pull/3501)
- март 2020 года, Spoon 8. 1. 0 [(история версий)](https://github.com/INRIA/spoon/pull/3310)
- ноябрь 2019 года, Spoon 8. 0. 0 [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-8. 0. 0)
- июль 2019 года, Spoon 7. 5. 0 выпущена [(история версий)](https://github.com/INRIA/spoon/pull/3057)
- май 2019 года, Spoon 7. 4. 0 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-7. 4. 0)
- 10 февраля 2019 года, Spoon 7. 3. 0 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-7. 3. 0)
- 4 декабря 2018 года, Spoon 7. 2. 0 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-7. 2. 0)
- 10 октября 2018 года, Spoon 7. 1. 0 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-7. 1. 0)
- 4 июля 2018 года, Spoon 7. 0. 00 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-7.0.0)
- 8 марта 2018 года, Spoon 6.2.0 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-6.2.0)
- 20 декабря 2017 года, Spoon 6.1.0 выпущена, счастливого Рождества! :christmas_tree: [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-6.1.0)
- 17 ноября 2017 года, Spoon 6.0.0 выпущена! Проверьте [(историю версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-6.0.0), там есть несколько изменений, несовместимых с предыдущими версиями :warning:
- 6 сентября 2017 года, Spoon 5.9.0 выпущена [(история версий)](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.9.0)
*возвращение к работе* релиз!- 11 июля 2017 года: выпущена версия Spoon 5.8.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.8.0) Летний релиз :beer: Предпочтительнее предыдущей версии: исправлено множество ошибок.
- 1 июня 2017 года: выпущена версия Spoon 5.7.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.7.0)
- 16 марта 2017 года: выпущена версия Spoon 5.6.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.6.0) Весенний релиз :-)
- 11 января 2017 года: выпущена версия Spoon 5.5.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.5.0). С Новым Годом!
- 27 октября 2016 года: выпущена версия Spoon 5.4.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.4.0).
- 19 сентября 2016 года: выпущена версия Spoon 5.3.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.3.0).
- 30 июня 2016 года: выпущена версия Spoon 5.2.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.2.0).
- 22 июня 2016 года: выпущена версия Spoon 5.1.1 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.1.1).
- 21 марта 2016 года: выпущена версия Spoon 5.1.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.1.0).
- 12 февраля 2016 года: выпущена версия Spoon 5.0.2 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.0.2).
- 3 февраля 2016 года: выпущена версия Spoon 5.0.1 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.0.1).
- 25 января 2016 года: выпущена версия Spoon 5.0.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.0.0).
- 18 ноября 2015 года: выпущена версия Spoon 4.4. 1 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-5.5.0).
- 16 ноября 2015 года: выпущена версия Spoon 4.4.0 [(\[история изменений\])](https://github.com/INRIA/spoon/releases/tag/spoon-core-4.4.0).
- 22 сентября 2015 года: выпущена версия Spoon 4.3.0 [(\[история изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2015-September/001803.html).
- 15 июня 2015 года: выпущена версия Spoon 4.2.0 [(\[история изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2015-June/001781.html).
- 7 мая 2015 года: выпущена версия Spoon 4.1.0 [(\[история изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2015-May/001774.html).
- 8 апреля 2015 года: выпущена версия Spoon 4.0.0 [(\[история изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2015-April/001769.html).
- 11 февраля 2015 года: выпущена версия Spoon 3.1 [(\[журнал изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2015-February/001741.html).
- 9 декабря 2014 года: выпущена версия Spoon 3.0 [(\[журнал изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2014-December/001721.html).
- 12 ноября 2014 года: выпущена версия Spoon 2.4 [(\[журнал изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2014-November/001710.html).
- 9 октября 2014 года: выпущена версия Spoon 2.3.1 [(\[журнал изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2014-October/001688.html).
- 12 сентября 2014 года: выпущена версия Spoon 2.1 [(\[журнал изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2014-September/001683.html).
- 2 апреля 2014 года: выпущена версия Spoon 2.0 [(\[журнал изменений\])](https://lists.gforge.inria.fr/pipermail/spoon-discuss/2014-March/001639.html).
- 30 сентября 2013 года: выпущена версия Spoon 1.6.
- 12 апреля 2012 года: выпущена версия Spoon 1.5.
## ЛицензияSpoon является свободным и открытым программным обеспечением, дважды лицензирован под лицензией CeCILL-C (французский эквивалент LGPL) и лицензией MIT.
## JProfiler
Разработка Spoon осуществляется с помощью JProfiler, Java профилировщика компании ej-technologies GmbH. JProfiler поддерживает развитие Spoon, предоставляя полноценный Java профилировщик бесплатно. Мы благодарим компанию ej-technologies GmbH за эту поддержку.
[](https://www.ej-technologies.com/products/jprofiler/overview.html)
## Вкладчики GitHubЭтот список генерируется с помощью `chore/generate-contributor-list.py`. Если вы не указаны в списке или хотите иметь своё полное имя, пожалуйста, отправьте сообщение по адресу https://github.com/INRIA/spoon/issues/3909.
* адамджрейн
* Алциде Фонсека
* Александр Шопов
* Аман Шарма
* андрюбвоги
* Антрэ Круз
* Антрэ Силва
* Антуан Мотье
* Антон Ликсель
* аргиус
* Арнауд Блюин
* арсенкхай
* Артамм
* Артур Бош
* Арвид Сиберов
* арян
* АшутОС Кумар Верма
* авувильер
* Аксель Хауинд
* Бенжамин Данглот
* Беноît Корну
* Карлос Ногуера
* Чеки Гюлчю
* чамп
* чарм
* хрисквадрат
* христоф Дюфур
* христофер Стокес
* клеманс бартц
* клемэнт форнье
* цезарь сОТО Валеро
* данниел боуберт
* дариус сас
* дэвид бернард
* дидье донсез
* диОРСЕТ Янн
* дорота копчык
* дуфаукс
* дуэйнб
* дья-тел
* эдди т
* егор бредихин
* фабьен думини
* фан лонг
* фангчен
* фав
* фавио демарко
* фернАНда мАДЕРАЛ
* филип краковски
* габриэль чаперон бургос
* гибахоуе
* глюкзханг
* грегор зейтлингер
* гтоисон
* гийом туисон
* гериаrd палиго
* ханнес грЮле
* харис аджемович
* хекторсм
* хенри чу
* герве бОтемю
*horia константин
*i-al-истаннен
*intrигус-lgtm
*jакоббраун
*ян галински
*jon
*kai лу
*lakshya a agrawal
*левентов
*lionel синтуриер
*lodart
*lucas
*lukas krejci
*luke merrick
*марсел мансир
*марсел стайнбек
*мартин монперрус
*мартин витлингер
*мартинвитт
*матиас мартиНЕЗ
*максим стЕфанов
*максим клемент
*меHди кайтУе
*michael тaже
*mickael истрия
*miguel созино рамалью*mikael Förberg
*mr. Pine
*Muhhammet Ali Akbey
*Nicolás Harland
*Nicholas Pashminaier
*Nicolas Petitpré
*Noah Santchi-Konney
*Olver Barais
*Ondřej Sebeček
*Patrick Schmitt
*Pavel Vojtěchovský
*Perioxid90
*Philippe Ombredanne
*Phillip Schichtel
*Priyanka-28
*Quentin Le Dilavrec
*Raymogg
*Renaud Pauleac
*Reza Gharibi
*Rhys Compton
*Rick Kellogg
*Ryanard van Tonger
*Rohitesh Kumar Jain
*Roman Levontov
*Riyo Taishi
*Sander Ploegsmas
*Santos-Samuel
*Scootafew
*Scott Dickerson
*Scott Pinwell
*Sebastián Lamela Marquetti
*Sergey Fedorov
*Shantanu
*Simon Larsen
*Simon Urla
*Spencer Williams
*SRLM
*St0newall
*Stephan Wolf
*StepSecurity Bot
*Sebastien Bertrand
*The Spoon Bot
*Thimo Seize
*Tomasz Dyrée
*Tiago Dr Carvalho
*Tomasz Zieliński
*Urs Keller
*Viktor
*Vincenzo Musco
*Wolfgang Schmiesing
*Wouter Smekenk
*Wreulicke
*Yann Diocet
*YOGYA Tulip Gamage
*Zhang Xindong
*Дмитрий
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )