기본적으로 자바에서는 일회성 코드 생성, 대규모 리팩토링 등을 많이하고 있습니다.지능형 검색 및 Java 코드 생성, 선호하는 Python 사용?
내 도구 언어는 Python이지만 제공 할 수있는 솔루션을 선택하겠습니다. 여기
는 이 도구는 내가
search within my project:
for each Interface as iName:
write class(name=iName+"Impl", implements=iName)
search within the body of iName:
for each Method as mName:
write method(name=mName, body="// TODO implement this...")
기본적으로 인터페이스에 대한 구현을 생성하는 의사
에, 원하는 무엇 그림 찾고 있어요 간체입니다 나를 위해 나를 허용 할 것이다 :
-
개
- 파싱 파일은 자바 구조 ("인터페이스 검색") 언어 요소와 형태로 문맥 화 단어
- 검색에 따른
- ("형 SomeClass의 변수", "doStuff() 메소드 SomeClass 인스턴스에서 호출") (현재 결과의 본문 내에서)
- 이 쉽게 대체하거나 코드를 생성 할 수 있습니다 (위와 같이 생성 할 수있는 헬퍼 또는 "Foo에 인터페이스 이름 바꾸기"와 같은 함수를 사용하여 검색을 실행). 라인 Blah.Blah() "등)
요점은, 나는이 것들을 쓰는 데 많은 시간을 보내고 싶지 않다는 점입니다. 보통 쓰레기입니다. 그러나 때로는 grep이 제공하는 것보다 조금 더 똑똑한 것을 필요로합니다. 이 단순한 버전을 작성하는 것은 그리 어렵지 않을 것입니다.하지만 이처럼 뭔가를 사용하려고한다면, 나는 그것을 강력하게 기대합니다.
이 작업을 수행하는 데 도움이되는 도구/라이브러리에 대한 제안 사항은 무엇입니까?
편집
- 파이썬은 확실히 필요하지 않습니다 몇 가지 설명을 추가 할 수 있습니다; 나는 그것이 무엇이든 취할 것입니다. 나는 선택의 여지가 있음을 암시한다.
- IDE 리팩토링과 함께 사용됩니다. 때때로 그것은 단지 내가 원하는 모든 것을하지 않습니다.
- (위와 같이) 코드 생성에 사용하는 경우 다른 코드 생성기의 출력을 높이기위한 것입니다. 예 : 우리가 사용하는 라이브러리는 1 톤의 인터페이스를 출력합니다. 우리는 코드베이스에 코드베이스를 메쉬하기 위해 각각의 표준 구현을 만들어야합니다.
@Ipsquiggle : "대규모 리팩토링"을 필요로하는 코드베이스의 크기와 자동화가 어떻게 필요합니까? 나는 Bash + sed/awk 등을 사용하여 Java 소스 코드 (System.out을 적절한 로깅으로 대체)를 구현했습니다. 인터페이스와 관련하여 골격 구현 : 자체적으로 생성 한 IntelliJ IDEA 템플릿을 생성했습니다. 비공개 * "xxxImpl"* 빈/할일 뼈대. 고급 기능의 경우, IntelliJ IDEA가 부분적으로 열리고 "Open API"를 사용하여 모든 .java 파일의 AST에 액세스 할 수 있습니다. 나는 그것이 단순하지 않을까 우려한다. ( – SyntaxT3rr0r
일부 인스턴스는 고도로 자동화되어 있으며 (위의 편집에서 포인트 3 참조) 다른 것들은 기본적으로 System.out을 대체하는 예제에 대한 변형이다.아무도 AST/토큰 화 된 코드로 작업하는 라이브러리 또는 DSL을 고수준으로 작성한 것이 조금 놀랍다. – Ipsquiggle