湯匙
Spoon 是用於分析、重寫、轉換、轉譯 Java 原始碼的開源函式庫。它解析原始檔案以建立具有強大分析和轉換 API 的精心設計的 AST。它支援高達 Java 20 的現代 Java 版本。
文件
最新的官方文件可在 https://spoon.gforge.inria.fr/ 取得。
學術用途
如果您將 Spoon 用於學術目的,請引用:Renaud Pawlak、Martin Monperrus、Nicolas Petitprez、Carlos Noguera、Lionel Seinturier。 「Spoon:用於實作 Java 原始碼分析和轉換的函式庫」。 《軟體:實務與經驗》,Wiley-Blackwell,2015。
@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 是與 Java 8 相容的最終 Spoon 版本,我們不打算將任何錯誤修復或功能向後移植到 Spoon 9。 + 運行。
使用 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:入門 - Simon Urli @ OW2Con'18(巴黎),使用 Spoon 生成測試斷言 - Benjamin Danglot @ OW2Con'17(巴黎)
2秒內貢獻
建立您的第一個拉取請求以改進文檔,請參閱文檔!繼續您的第一個錯誤修復!社區思想開放、尊重和耐心。歡迎所有外部貢獻。
設計理念
R1) Spoon 元模型盡可能接近語言概念。
R2) 程序的 Spoon 模型是完整且健全的。
R3)Spoon 模型的文字版本格式良好,並且在語義上與原始程式等效。
R4) 分析轉換API直覺、規範。
R5) 轉換運算子旨在盡快警告無效程序。這是透過靜態類型檢查或使用運算符時的動態檢查來完成的。
R6) 在可行的情況下,Spoon 模型的文本版本接近原始版本。
編譯
要編譯 Spoon,您需要 Java 開發工具包 (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-dependencies - 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 >
發布
- 2023 年 8 月 31 日,Spoon 10.4.1(變更日誌)
- 2023 年 7 月 6 日,Spoon 10.4.0(變更日誌)
- 2023 年 3 月 13 日,Spoon 10.3.0(變更日誌)
- 2022 年 10 月,Spoon 10.2.0(變更日誌)
- 2022 年 4 月,Spoon 10.1.0(變更日誌)
- 2021 年 10 月,Spoon 10.0.0(變更日誌)
- 2021 年 8 月:Spoon 9.1.0(變更日誌)
- 2021 年 3 月:Spoon 9.0.0(變更日誌)
- 2020 年 10 月:Spoon 8.3.0(變更日誌)
- 2020 年 7 月:Spoon 8.2.0(變更日誌)
- 2020 年 3 月:Spoon 8.1.0(變更日誌)
- 2019 年 11 月,Spoon 8.0.0(變更日誌)
- 2019 年 7 月:Spoon 7.5.0 發布(變更日誌)
- 2019 年 5 月:Spoon 7.4.0 發布(變更日誌)
- 2019 年 2 月 10 日:Spoon 7.3.0 發布(變更日誌)
- 2018 年 12 月 4 日:Spoon 7.2.0 發布(變更日誌)
- 2018 年 10 月 10 日:Spoon 7.1.0 發布(變更日誌)
- 2018 年 7 月 4 日:Spoon 7.0.0 發布(變更日誌)
- 2018 年 3 月 8 日:Spoon 6.2.0 發布(變更日誌)
- 2017年12月20日:Spoon 6.1.0發布,聖誕快樂! ? (變更日誌)
- 2017年11月17日:Spoon 6.0.0發布!檢查(更改日誌),因為有一些不向後相容的更改️
- 2017 年 9 月 6 日:Spoon 5.9.0 發布(變更日誌)復原工作版本!
- 2017 年 7 月 11 日:Spoon 5.8.0 發布(變更日誌) 夏季發布?與上一個相比,首選:修復大量錯誤。
- 2017 年 6 月 1 日:Spoon 5.7.0 發布(變更日誌)
- 2017 年 3 月 16 日:Spoon 5.6.0 發布(變更日誌)春季發布 :-)
- 2017 年 1 月 11 日:Spoon 5.5.0 發布(變更日誌)。新年快樂!
- 2016 年 10 月 27 日:Spoon 5.4.0 發布(變更日誌)。
- 2016 年 9 月 19 日:Spoon 5.3.0 發布(變更日誌)。
- 2016 年 6 月 30 日:Spoon 5.2.0 發布(變更日誌)。
- 2016 年 6 月 22 日:Spoon 5.1.1 發布(變更日誌)。
- 2016 年 3 月 21 日:Spoon 5.1.0 發布(變更日誌)。
- 2016 年 2 月 12 日:Spoon 5.0.2 發布(變更日誌)。
- 2016 年 2 月 3 日:Spoon 5.0.1 發布(變更日誌)。
- 2016 年 1 月 25 日:Spoon 5.0.0 發布(變更日誌)。
- 2015 年 11 月 18 日:Spoon 4.4.1 發布(變更日誌)。
- 2015 年 11 月 16 日:Spoon 4.4.0 發布(變更日誌)。
- 2015 年 9 月 22 日:Spoon 4.3.0 發布(變更日誌)。
- 2015 年 6 月 15 日:Spoon 4.2.0 發布(變更日誌)。
- 2015 年 5 月 7 日:Spoon 4.1.0 發布(變更日誌)。
- 2015 年 4 月 8 日:Spoon 4.0.0 發布(變更日誌)。
- 2015 年 2 月 11 日:Spoon 3.1 發布(變更日誌)。
- 2014 年 12 月 9 日:Spoon 3.0 發布(變更日誌)。
- 2014 年 11 月 12 日:Spoon 2.4 發布(變更日誌)。
- 2014 年 10 月 9 日:Spoon 2.3.1 發布(變更日誌)。
- 2014 年 9 月 12 日:Spoon 2.1 發布(變更日誌)。
- 2014 年 4 月 2 日:Spoon 2.0 發布(變更日誌)。
- 2013年9月30日:Spoon 1.6 發布。
- 2012年4月12日:Spoon 1.5發布。
執照
Spoon 是免費且開源的,根據(CeCILL-C 授權 - 法語相當於 LGPL)和 MIT 授權獲得雙重許可。
JProfiler
Spoon 是在 JProfiler 的幫助下開發的,JProfiler 是 ej-technologies GmbH 的 Java 分析器。 JProfiler 透過免費提供其全功能的 Java Profiler 來支援 Spoon 的開發。我們感謝 ej-technologies GmbH 的支持。
Github 貢獻者
此列表由chore/generate-contributor-list.py
產生。如果您未列出或您想知道您的全名,請發佈至#3909。
- 亞當吉賴安
- 阿爾西德斯·豐塞卡
- 亞歷山大·肖波夫
- 阿曼·夏爾馬
- 安德魯布沃吉
- 安德烈·克魯茲
- 安德烈·席爾瓦
- 安托萬·莫蒂爾
- 安東·萊克塞爾
- 阿吉烏斯
- 阿諾布魯安
- 阿爾森希
- 阿爾塔姆
- 阿圖爾·博斯
- 阿爾維德·西貝羅夫
- 雅利安人
- 阿舒托什·庫馬爾·維爾馬
- 阿沃耶爾
- 阿克塞爾·霍溫德
- 班傑明·丹格洛特
- 伯努瓦·科爾努
- 卡洛斯·諾格拉
- 塞基·居爾屈
- 冠軍
- 魅力
- 克里斯廣場
- 克里斯托夫·杜福爾
- 克里斯多福·斯托克斯
- 克萊門斯·巴茨
- 克萊門特·福尼埃
- 塞薩爾·索托·瓦萊羅
- 丹尼爾·鮑伯特
- 大流士薩斯
- 大衛伯納德
- 迪迪埃·唐塞斯
- 迪奧塞·揚
- 多羅塔·科普奇克
- 杜福
- 德韋內布
- 迪亞電話
- 埃迪·T
- 葉戈爾·布列季欣
- 法比安·杜米尼
- 範龍
- 方鎮
- 最愛
- 法維奧·德馬科
- 費爾南達·馬德拉斯
- 菲利普·克拉考斯基
- 加布里埃爾·查佩隆·布爾戈斯
- 吉巴喬
- GitHub Actions 機器人
- 張格魯克
- 格雷戈爾·蔡特林格
- 格托伊森
- 紀堯姆·托松
- 熱拉爾·帕利戈
- 漢內斯·格魯爾
- 哈里斯·阿澤莫維奇
- 赫克托·SM
- 朱亨利
- 埃爾維·布特米
- 霍利亞·康斯坦丁
- 伊斯坦堡
- 陰謀-lgtm
- 雅各勞恩
- 簡·加林斯基
- 喬恩
- 羅凱
- 拉克夏·阿格拉瓦爾
- 列文托夫
- 萊昂內爾·塞因圖里埃
- 洛達特
- 盧卡斯
- 盧卡斯·克雷吉
- 盧克·梅里克
- 馬塞爾·曼塞爾
- 馬塞爾·史坦貝克
- 馬丁·蒙佩魯斯
- 馬丁·維特林格
- 馬丁·維特
- 馬蒂亞斯·馬丁內斯
- 馬克西姆·斯特凡諾夫
- 馬克西姆·克萊門特
- 邁赫迪·凱圖
- 麥可·泰格
- 米凱爾·伊斯特拉
- 米格爾·索西尼奧·拉馬略
- 米凱爾·福斯伯格
- 松先生
- 穆罕默德·阿里·阿克巴伊
- 尼古拉斯·哈蘭德
- 尼古拉斯·佩塞米爾
- 尼古拉斯·佩蒂普雷斯
- 諾亞桑奇-庫尼
- 奧利維爾·巴雷
- 翁德熱謝貝克
- 派崔克·施密特
- 帕維爾·沃伊特科夫斯基
- 佩羅克西德90
- 菲利普‧翁布雷丹納
- 菲利普‧席克特爾
- 普里揚卡-28
- 昆汀·勒·迪拉夫雷克
- 雷莫格
- 雷諾·帕拉克
- 禮薩·加里比
- 里斯康普頓
- 里克·凱洛格
- 裡傑納德·範·通德
- 羅希特什·庫馬爾·賈恩
- 羅曼·萊文托夫
- 日吉良太
- 桑德普洛格斯瑪
- 桑托斯-塞繆爾
- 斯庫塔菲夫
- 斯科特·迪克森
- 史考特·平威爾
- 塞巴斯蒂安·拉梅拉斯·馬科特
- 謝爾蓋·費多羅夫
- 尚塔努
- 西蒙·拉森
- 西蒙·烏爾利
- 史賓塞威廉斯
- SRLM
- 石新牆
- 史蒂芬·沃爾夫
- StepSecurity 機器人
- 賽巴斯蒂安·貝特朗
- 湯匙機器人
- 蒂莫·塞茨
- 托馬斯·杜里厄
- 蒂亞戈德爾卡瓦略
- 托馬斯·齊林斯基
- 烏爾斯凱勒
- 維克多
- 文森佐·馬斯科
- 沃夫岡·施密辛
- 沃特史明克
- 弗勒利克
- 揚·迪奧塞
- 日惹鬱金香伽瑪
- 張新東
- Дмитрий