スプーン
Spoon は、Java ソース コードを分析、書き換え、変換、トランスパイルするためのオープンソース ライブラリです。ソース ファイルを解析して、強力な分析および変換 API を備えた適切に設計された AST を構築します。 Java 20 までの最新の Java バージョンをサポートします。Spoon は、Inria の公式オープンソース プロジェクトであり、OW2 オープンソース コンソーシアムのメンバーです。
ドキュメント
最新の公式ドキュメントは https://spoon.gforge.inria.fr/ で入手できます。
学術的利用
Spoon を学術目的で使用する場合は、Renaud Pawlak、Martin Monperrus、Nicolas Petitprez、Carlos Noguera、Lionel Seinturier を引用してください。 「Spoon: Java ソース コードの分析と変換を実装するためのライブラリ」。 「ソフトウェア: 実践と経験」、Wiley-Blackwell、2015 年。土井: 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},
}
専門的なサポート
Spoon に関する専門的なサポート (開発、トレーニング、拡張) が必要な場合は、#3251 にコメントを投稿してください。
2秒で始められる
Java バージョン: Spoon バージョン 10 以降には Java 11 以降が必要です。 Spoon 9.1.0 は Java 8 と互換性のある最後の Spoon リリースであり、バグ修正や機能を 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: はじめに - Simon Urli @ OW2Con'18 (パリ)、Spoon でテスト アサーションを生成 - Benjamin Danglot @ 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-dependency - 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 ライセンスに基づく二重ライセンスを取得しています。
Jプロファイラー
Spoon は、ej-technologies GmbH の Java プロファイラーである JProfiler を利用して開発されています。 JProfiler は、フル機能の Java Profiler を無料で提供することで Spoon の開発をサポートします。 ej-technologies GmbH のご支援に感謝いたします。
Github の貢献者
このリストはchore/generate-contributor-list.py
によって生成されます。リストにない場合、またはフルネームを知りたい場合は、#3909 に投稿してください。
- アダムジリアン
- アルシデス・フォンセカ
- アレクサンダー・ショポフ
- アマン・シャルマ
- アンドリューブウォギ
- アンドレ・クルス
- アンドレ・シルバ
- アントワーヌ・モティエ
- アントン・リクセル
- アルギウス
- アルノー・ブルアン
- アーセンキー
- アルタム
- アルトゥール・ボッシュ
- アルヴィド・シベロフ
- アーリア人
- アシュトシュ・クマール・ヴェルマ
- アヴイエ
- アクセル・ハウウィンド
- ベンジャミン・ダンロット
- ブノワ・コルニュ
- カルロス・ノゲラ
- チェキ・ギュルチュ
- チャンピオン
- 魅力
- クリススクエア
- クリストフ・デュフール
- クリストファー・ストークス
- クレメンス・バーツ
- クレマン・フルニエ
- セザール・ソト・バレロ
- ダニエル・ボバート
- ダリウス・サス
- デビッド・バーナード
- ディディエ・ドンセ
- ディオルセ・ヤン
- ドロタ・コプチク
- デュフォー
- ドウェイネブ
- ディアテル
- エディ・T
- エゴール・ブレディヒン
- ファビアン・デュミニー
- ファン・ロン
- 方鎮
- お気に入り
- ファヴィオ・デマルコ
- フェルナンダ・マデイラル
- フィリップ・クラコウスキー
- ガブリエル・シャペロン・ブルゴス
- ギバジョエ
- GitHub アクションボット
- グルックチャン
- グレゴール・ツァイトリンガー
- ゴトゾン
- ギョーム・トワゾン
- ジェラール・パリゴ
- ハンネス・グルール
- ハリス・アゼモビッチ
- ヘクターSM
- ヘンリー・チュー
- エルヴェ・ブーテミー
- ホリア・コンスタンティン
- イ・アル・イスタネン
- intrigus-lgtm
- ヤコブラウン
- ヤン・ガリンスキー
- ジョン
- カイルオ
- ラクシャ・アグラワル
- レベントフ
- ライオネル・サンチュリエ
- ロダート
- ルーカス
- ルーカス・クレイジ
- ルーク・メリック
- マルセル・マンシール
- マルセル・スタインベック
- マーティン・モンペラス
- マーティン・ウィットリンガー
- マーティンウィット
- マティアス・マルティネス
- マキシム・ステファノフ
- マキシム・クレメント
- メディ・ケイトウ
- マイケル・ターゲ
- ミカエル・イストリア
- ミゲル・ソジーニョ・ラマーリョ
- ミカエル・フォースバーグ
- パインさん
- モハメット・アリ AKBAY
- ニコラス・ハランド
- ニコラ・ペセミエ
- ニコラ・プチプレズ
- ノア・サンチ=クーニー
- オリヴィエ・バライス
- オンドジェ・シェベク
- パトリック・シュミット
- パベル・ヴォイテコフスキー
- ペロクシド90
- フィリップ・オンブルダンヌ
- フィリップ・シクテル
- プリヤンカ-28
- クエンティン・ル・ディラヴレック
- レイモッグ
- ルノー・パウラック
- レザ・ガリビ
- リス・コンプトン
- リック・ケロッグ
- ライナード・ヴァン・トンダー
- ロヒテシュ・クマール・ジャイン
- ロマン・レベントフ
- 日吉良太
- サンダー・プロエグマ
- サントス・サミュエル
- スクータフュー
- スコット・ディッカーソン
- スコット・ピンウェル
- セバスチャン・ラメラス・マルコテ
- セルゲイ・フェドロフ
- シャンタヌ
- サイモン・ラーセン
- サイモン・ウルリ
- スペンサー・ウィリアムズ
- srlm
- ST0NEWALL
- ステファン・ウルフ
- ステップセキュリティボット
- セバスチャン・ベルトラン
- スプーンボット
- ティモ・セイツ
- トーマス・デュリュー
- ティアゴドルカルヴァーリョ
- トマシュ・ジエリンスキ
- ウルス・ケラー
- ヴィクトル
- ヴィンチェンツォ ムスコ
- ヴォルフガング・シュミージング
- ウーター・スミンク
- ロイリッケ
- ヤン・ディオルセット
- ジョグジャ チューリップ ガマージュ
- 張新東
- ディマフィロ