숟가락
Spoon은 Java 소스 코드를 분석, 재작성, 변환, 트랜스파일할 수 있는 오픈 소스 라이브러리입니다. 강력한 분석 및 변환 API를 사용하여 소스 파일을 구문 분석하여 잘 설계된 AST를 구축합니다. 최신 Java 버전을 Java 20까지 지원합니다. Spoon은 공식 Inria 오픈 소스 프로젝트이자 OW2 오픈 소스 컨소시엄의 회원입니다.
선적 서류 비치
최신 공식 문서는 https://spoon.gforge.inria.fr/에서 확인할 수 있습니다.
학술적 활용
학문적 목적으로 Spoon을 사용하는 경우 Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, Lionel Seinturier를 인용해 주세요. "Spoon: Java 소스 코드의 분석 및 변환을 구현하기 위한 라이브러리". 소프트웨어: 실습 및 경험, 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},
}
전문적인 지원
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을 컴파일하려면 JDK(Java Development Kit)와 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-종속성 - 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은 ej-technologies GmbH의 Java 프로파일러인 JProfiler의 도움으로 개발되었습니다. JProfiler는 모든 기능을 갖춘 Java 프로파일러를 무료로 제공하여 Spoon 개발을 지원합니다. 이러한 지원에 대해 ej-technologies GmbH에 감사드립니다.
Github 기여자
이 목록은 chore/generate-contributor-list.py
에 의해 생성됩니다. 목록에 없거나 이름을 알고 싶으시면 #3909에 게시해 주세요.
- 아담즈리안
- 알시데스 폰세카
- 알렉산더 쇼포프
- 아만 샤르마
- 앤드류보기
- 안드레 크루즈
- 앙드레 실바
- 앙투안 모티에
- 안톤 릭셀
- 아르기우스
- 아르노 블루앙
- 아르센키
- 아르탐
- 아르투르 보쉬
- 아르비드 시베로프
- 아리아 사람
- 아슈토시 쿠마르 베르마
- 아베이예르
- 액셀 하윈드
- 벤자민 당글롯
- 베누아 코르누
- 카를로스 노구에라
- 체키 굴추
- 챔피언
- 매력
- 크리스스퀘어
- 크리스토프 뒤푸르
- 크리스토퍼 스톡스
- 클레멘스 바츠
- 클레망 푸르니에
- 세자르 소토 발레로
- 다니엘 보버트
- 다리우스 사스
- 데이비드 버나드
- 디디에 돈세즈
- 디오셋 얀
- 도로타 콥지크
- 듀포
- 드웨네브
- 디아텔
- 에디 T
- 에고르 브레디킨
- 파비앙 듀미니
- 팬 롱
- 팡젠
- 좋아하는
- 파비오 데마르코
- 페르난다 마데이랄
- 필립 크라코프스키
- 가브리엘 샤프롱 부르고스
- 기바죠
- GitHub 작업 봇
- 글럭장
- 그레고르 자이틀링거
- 그투이슨
- 기욤 토종
- 제라르 팔리고
- 하네스 그룰레
- 하리스 아제모비치
- 헥터SM
- 헨리 추
- 에르베 부테미
- 호리아 콘스탄틴
- 이-알-이스타넨
- Intrigus-lgtm
- 야콥브라운
- 얀 갈린스키
- 존
- 카이 루오
- 락샤 아그라왈
- 레벤토프
- 라이오넬 세인투리에
- 로다트
- 루카스
- 루카스 크레지
- 루크 메릭
- 마르셀 만시르
- 마르셀 스타인벡
- 마틴 몬페러스
- 마틴 위틀링거
- 마틴위트
- 마티아스 마르티네즈
- 막심 스테파노프
- 막심 클레멘트
- 메디 케이투에
- 마이클 태게
- 미카엘 이스트리아
- 미구엘 소지뉴 라말류
- 미카엘 포스버그
- 미스터 파인
- 무하멧 알리 AKBAY
- 니콜라스 하란드
- 니콜라스 페세미에
- 니콜라스 페티프레즈
- 노아 산치-쿠니
- 올리비에 바라이스
- 온드르제이 세베크
- 패트릭 슈미트
- 파벨 보이테코프스키
- peroksid90
- 필립 옴브레단
- 필립 쉬히텔
- 프리얀카-28
- 쿠엔틴 르 딜라브렉
- 레이모그
- 르노 폴락
- 레자 가리비
- 리스 콤프턴
- 릭 켈로그
- 레이나드 반 톤더
- 로히테시 쿠마르 자인
- 로만 레벤토프
- 히요시 료타
- 샌더 플로그스마
- 산토스 사무엘
- 스쿠타퓨
- 스콧 디커슨
- 스캇 핀웰
- 세바스티안 라멜라스 마르코테
- 세르게이 페도로프
- 샨타누
- 사이먼 라센
- 사이먼 울리
- 스펜서 윌리엄스
- srlm
- ST0NEWALL
- 스테판 울프
- 단계보안 봇
- 세바스티앙 베르트랑
- 스푼봇
- 티모 세이츠
- 토마스 뒤리외
- 티아고드카르발호
- 토마시 지엘린스키
- 우르스 켈러
- 빅토르
- 빈센초 무스코
- 볼프강 슈미징
- 바우터 스민크
- 로이리케
- 얀 디오셋
- 족자 튤립 가마지
- 장신동
- 드미트리