Ложка
Spoon — это библиотека с открытым исходным кодом для анализа, переписывания, преобразования и передачи исходного кода Java. Он анализирует исходные файлы для создания хорошо продуманного AST с мощным API анализа и преобразования. Он поддерживает современные версии Java до Java 20. Spoon — официальный проект Inria с открытым исходным кодом и член консорциума открытого исходного кода OW2.
Документация
Последняя официальная документация доступна по адресу https://spoon.gforge.inria.fr/.
Академическое использование
Если вы используете Spoon в академических целях, цитируйте: Рено Павляк, Мартин Монперрус, Николя Петитпре, Карлос Ногера, Лайонел Сентюрье. «Ложка: библиотека для реализации анализа и преобразования исходного кода Java». В книге «Программное обеспечение: практика и опыт», Wiley-Blackwell, 2015. Doi: 10.1002/sp.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},
}
Профессиональная поддержка
Если вам нужна профессиональная поддержка Spoon (разработка, обучение, расширение), вы можете оставить комментарий на #3251.
Начало работы за 2 секунды
Версия Java: для Spoon версии 10 и выше требуется Java 11 или более поздняя версия. Spoon 9.1.0 — это последняя версия Spoon, совместимая с Java 8, и мы не планируем переносить какие-либо исправления ошибок или функции в Spoon 9. Обратите внимание, что Spoon, конечно, все еще может использовать исходный код для более старых версий Java, но для этого требуется JDK. 11+ для бега.
Получите последнюю стабильную версию с помощью Maven, см. https://search.maven.org/artifact/fr.inria.gforge.spoon/spoon-core.
И начните использовать его:
CtClass l = Launcher . parseClass ( "class A { void m() { System.out.println( " yeah " );} }" );
Документация:
- Справочная документация: https://spoon.gforge.inria.fr/ (содержит содержимое папки doc)
- Примеры кода: https://github.com/SpoonLabs/spoon-examples.
- Видео: Spoon: Начало работы — Саймон Урли @ OW2Con'18 (Париж), Создание тестовых утверждений с помощью Spoon — Бенджамин Дангло @ OW2Con'17 (Париж)
Внесение вклада за 2 секунды
Создайте свой первый запрос на включение, чтобы улучшить документацию, см. документ! Приступайте к исправлению первой ошибки! Сообщество открытое, уважительное и терпеливое. Все внешние вклады приветствуются.
Философия дизайна
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
Чтобы запустить тесты:
Скачать
Последняя версия: https://search.maven.org/remote_content?g=fr.inria.gforge.spoon&a=spoon-core&v=LATEST&c=jar-with-dependentities - Javadoc
Мавен:
< 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 >
Релизы
- 31 августа 2023 г., Spoon 10.4.1 (список изменений)
- 6 июля 2023 г., Spoon 10.4.0 (список изменений)
- 13 марта 2023 г., Spoon 10.3.0 (список изменений)
- Октябрь 2022 г., Spoon 10.2.0 (журнал изменений)
- Апрель 2022 г., Spoon 10.1.0 (список изменений)
- Октябрь 2021 г., Spoon 10.0.0 (журнал изменений)
- Август 2021 г.: Spoon 9.1.0 (список изменений)
- Март 2021 г.: Spoon 9.0.0 (список изменений)
- Октябрь 2020 г.: Spoon 8.3.0 (список изменений)
- Июль 2020 г.: Spoon 8.2.0 (журнал изменений)
- Март 2020 г.: Spoon 8.1.0 (список изменений)
- Ноябрь 2019 г., Spoon 8.0.0 (список изменений)
- Июль 2019 г.: выпущена Spoon 7.5.0 (журнал изменений).
- Май 2019: выпущена Spoon 7.4.0 (список изменений).
- 10 февраля 2019 г.: выпущена Spoon 7.3.0 (журнал изменений).
- 4 декабря 2018 г.: выпущена Spoon 7.2.0 (список изменений).
- 10 октября 2018 г.: выпущена Spoon 7.1.0 (список изменений).
- 4 июля 2018 г.: выпущена Spoon 7.0.0 (журнал изменений).
- 8 марта 2018 г.: выпущена Spoon 6.2.0 (список изменений).
- 20 декабря 2017 г.: выпущена Spoon 6.1.0, счастливого Рождества! ? (список изменений)
- 17 ноября 2017 г.: выпущена Spoon 6.0.0! Проверьте (журнал изменений), так как изменений, не имеющих обратной совместимости, немного. ️
- 6 сентября 2017 г.: Выпущена версия Spoon 5.9.0 (список изменений), возвращающаяся к работе !
- 11 июля 2017 г.: выпущена Spoon 5.8.0 (список изменений). Летний выпуск? Предпочтение отдается предыдущему: исправлено множество ошибок.
- 1 июня 2017 г.: выпущена Spoon 5.7.0 (список изменений).
- 16 марта 2017 г.: выпущена Spoon 5.6.0 (список изменений). Весенний выпуск :-)
- 11 января 2017 г.: выпущена Spoon 5.5.0 (список изменений). С Новым Годом!
- 27 октября 2016 г.: выпущена Spoon 5.4.0 (список изменений).
- 19 сентября 2016 г.: выпущена Spoon 5.3.0 (список изменений).
- 30 июня 2016 г.: выпущена Spoon 5.2.0 (список изменений).
- 22 июня 2016 г.: выпущена Spoon 5.1.1 (список изменений).
- 21 марта 2016 г.: выпущена Spoon 5.1.0 (список изменений).
- 12 февраля 2016 г.: выпущена Spoon 5.0.2 (список изменений).
- 3 февраля 2016 г.: выпущена Spoon 5.0.1 (список изменений).
- 25 января 2016 г.: выпущена Spoon 5.0.0 (список изменений).
- 18 ноября 2015 г.: выпущена Spoon 4.4.1 (список изменений).
- 16 ноября 2015 г.: выпущена Spoon 4.4.0 (список изменений).
- 22 сентября 2015 г.: выпущена Spoon 4.3.0 (список изменений).
- 15 июня 2015 г.: выпущена Spoon 4.2.0 (список изменений).
- 7 мая 2015 г.: выпущена Spoon 4.1.0 (список изменений).
- 8 апреля 2015 г.: выпущена Spoon 4.0.0 (список изменений).
- 11 февраля 2015 г.: выпущена Spoon 3.1 (список изменений).
- 9 декабря 2014 г.: выпущена Spoon 3.0 (список изменений).
- 12 ноября 2014 г.: выпущена Spoon 2.4 (список изменений).
- 9 октября 2014 г.: выпущена Spoon 2.3.1 (список изменений).
- 12 сентября 2014 г.: выпущена Spoon 2.1 (список изменений).
- 2 апреля 2014 г.: выпущена Spoon 2.0 (список изменений).
- 30 сентября 2013 г.: выпущена Spoon 1.6.
- 12 апреля 2012 г.: выпущена Spoon 1.5.
Лицензия
Spoon — это бесплатный продукт с открытым исходным кодом, имеющий двойную лицензию (лицензия CeCILL-C — французский эквивалент LGPL) и лицензию MIT.
JПрофилер
Spoon разработан с помощью JProfiler, профилировщика Java от ej-technologies GmbH. JProfiler поддерживает разработку Spoon, бесплатно предоставляя полнофункциональный Java Profiler. Мы благодарим ej-technologies GmbH за эту поддержку.
Участники Github
Этот список генерируется chore/generate-contributor-list.py
. Если вас нет в списке или вы хотите узнать свое полное имя, напишите сообщение на номер 3909.
- Адамджрян
- Альсидес Фонсека
- Александр Шопов
- Аман Шарма
- Эндрюбвоги
- Андре Круз
- Андре Силва
- Антуан Моттье
- Антон Ликселл
- Аргиус
- Арно Блуэн
- арсенхий
- Артамм
- Артур Бош
- Арвид Сиберов
- ариец
- Ашутош Кумар Верма
- Авейе
- Аксель Ховинд
- Бенджамин ДАНГЛО
- Бенуа Корню
- Карлос Ногера
- Чеки Гюльджю
- чемпион
- Очарование
- Криссквер
- Кристоф Дюфур
- Кристофер Стоукс
- Клеменс Барц
- Клеман Фурнье
- Сезар Сото Валеро
- Дэниел Бобберт
- Дариус Сас
- Дэвид Бернард
- Дидье Донсес
- Диорсет Янн
- Дорота Копчик
- дюфо
- Дуэйнеб
- дья-тел
- Эдди Т.
- Егор Бредихин
- Фабьен ДЮМИНИ
- Фан Лонг
- Фанчжэнь
- любимый
- Фавио ДеМарко
- Фернанда Мадейрал
- Филип Краковски
- Габриэль Шаперон Бургос
- Гибахджо
- Бот действий GitHub
- ГлюкЧжан
- Грегор Цайтлингер
- gtoison
- Гийом Туазон
- Жерар Палиго
- Ханнес Греуле
- Харис Адземович
- ГекторСМ
- Генри Чу
- Эрве Бутеми
- Хория Константин
- И-Аль-Истаннен
- интригус-LGTM
- Якоббраун
- Ян Галински
- Джон
- Кай Ло
- Лакшья Агравал
- Левентов
- Лионель Сентюрье
- лодарт
- Лукас
- Лукас Крейчи
- Люк Меррик
- Марсель Мансир
- Марсель Стейнбек
- Мартин Монперрус
- Мартин Виттлингер
- МартинВитт
- Матиас Мартинес
- Максим Стефанов
- Максим КЛЕМАН
- Мехди Кайтуэ
- Михаэль Тэге
- Микаэль Истрия
- Мигель Созиньо Рамальо
- Микаэль Форсберг
- мистер Пайн
- Мухаммет Али АКБАЙ
- Николас Харранд
- Николя Пессемир
- Николя Петитпре
- Ной Санчи-Куни
- Оливье Барэ
- Ондржей Шебек
- Патрик Шмитт
- Павел Войтеховский
- пероксид90
- Филипп Омбреданн
- Филипп Шихтель
- Приянка-28
- Квентин ЛЕ ДИЛАВРЕК
- Рэймогг
- Рено Павляк
- Реза Гариби
- Рис Комптон
- Рик Келлогг
- Рейнард ван Тондер
- Рохитеш Кумар Джайн
- Роман Левентов
- Рёта Хиёси
- Сандер Плугсма
- Сантос-Самуэль
- бегун
- Скотт Дикерсон
- Скотт Пинвелл
- Себастьян Ламелас Маркоте
- Сергей Федоров
- Шантану
- Саймон Ларсен
- Саймон Урли
- Спенсер Уильямс
- срлм
- ST0NEWALL
- Стефан Вольф
- StepSecurity Бот
- Себастьен Бертран
- Ложка-бот
- Тимо Зейтц
- Томас Дюрье
- тиагодкарвальо
- Томаш Зелински
- Урс Келлер
- Виктор
- Винченцо Муско
- Вольфганг Шмизинг
- Воутер Сминк
- Врейлике
- Янн Диорсе
- Йогья Тюльпан Гамаге
- Чжан Синьдун
- Дмитрий