본문으로 건너뛰기
cd /languages
  • JVM 스크립팅
  • 프로그래밍
  • AST 및 심볼 지원

Maguyva의 Groovy 지원: Gradle과 Jenkins 코드를 위한 코드 그래프

Maguyva는 AST, 심볼, 그래프로 Groovy를 지원하여, AI 에이전트가 Groovy 앱, Gradle 빌드, Jenkinsfile 전반에서 클래스, 클로저, 호출을 따라갈 수 있게 합니다.

Groovy가 얕은 AI 도구를 넘어뜨리는 지점

Groovy는 흔히 설정 파일처럼 읽힙니다. Gradle 빌드에서 dependencies { implementation ... }는 클로저가 붙은 메서드 호출의 연쇄이고, 선언형 Jenkinsfile도 마찬가지입니다. 빌더는 임의의 이름을 호출로 바꾸고, GDK는 each, collect 같은 메서드를 모든 객체에 추가합니다. 모든 호출을 기록하는 도구는 이 잡음에 묻혀 버립니다.

Maguyva는 DSL과 GDK 계층을 걸러 내므로 여러분의 메서드와 클래스가 드러납니다.

Maguyva가 Groovy에서 추출하는 것

Maguyva는 .groovy와 .gradle 파일, 그리고 Jenkinsfile를 지원합니다. 클래스, 함수, 메서드가 추출되고, 임포트는 import static와 as 별칭을 정규화합니다. 호출 이름에서는 끝에 붙은 클로저 블록과 ?. 안전 탐색 연산자가 제거되므로, repo?.save(order) { ... }는 save에 대한 호출로 기록됩니다. 클래스 안에서 리시버 없이 호출하면 그 클래스 자신의 메서드로 해석됩니다.

잡음은 여러 층으로 걸러집니다.

  • dependencies, implementation, task, given, when, then, Mock 같은 약 140개의 표준 라이브러리, Gradle, Spock 이름.
  • each, collect, inject, eachLine 같은 약 260개의 GDK 메서드.
  • pipeline, stage, steps, sh 같은 Jenkins 단계를 포함한 빌더 DSL 이름. 괄호와 함께 호출되지 않고 빌더 방식으로 쓰일 때 걸러집니다.
  • @CompileStatic, @Immutable, @Autowired 같은 AST 변환 및 프레임워크 애너테이션. 이들은 결코 호출로 기록되지 않습니다.

그래프에는 상속, 인스턴스화, 읽기와 쓰기도 기록됩니다.

에이전트 프롬프트 예시

  • “deployToStaging를 누가 호출하고, 어떤 파이프라인에서 호출하나요?” (find_symbol, 그다음 dependency_search incoming)
  • “BaseIntegrationSpec를 상속하는 클래스는 무엇인가요?” (dependency_search)
  • “릴리스 태스크가 아티팩트를 어떻게 빌드하고 게시하는지 설명해 줘.” (get_task_context)

알려진 한계

  • Groovy의 메서드와 자유 함수는 하나의 구문 노드를 공유하므로, structural_search의 methods 프리셋은 아무것도 선택하지 않습니다. 대신 functions 프리셋이나 find_symbol를 사용하세요.
  • collect나 stage처럼 GDK 또는 DSL 메서드와 이름이 같은 사용자 메서드는 함께 걸러질 수 있습니다. 호출자가 빠진 것처럼 보이면 text_pattern_search를 사용하세요.

다음 단계

빠른 시작으로 저장소를 연결한 다음, 호환성 페이지에서 지원 매트릭스를 확인하세요. 빌드가 컴파일하는 JVM 코드라면 Java 가이드와 Kotlin 가이드를 읽어 보세요.

가장 적합한 경우

  • > 공유 빌드 로직이 여러 `.gradle` 파일에 흩어져 있는, Groovy로 작성된 Gradle 빌드.
  • > CI를 바꾸기 전에 에이전트가 읽어야 하는 Jenkins 파이프라인과 공유 라이브러리.
  • > JVM 위의 Groovy 애플리케이션과 Spock 테스트 스위트.

에이전트 워크플로

  • > 공유 라이브러리 단계의 인수를 바꾸기 전에 모든 호출자를 찾습니다.
  • > 공통 `.gradle` 파일에 정의된 헬퍼를 어떤 빌드 스크립트가 호출하는지 추적합니다.
  • > 리팩터링 전에 어떤 클래스가 기반 클래스를 상속하는지 매핑합니다.

엔진 세부 정보

  • > Groovy 지원은 `.groovy`, `.gradle`, `Jenkinsfile`을 다룹니다. 호출 이름에서는 클로저 블록과 `?.` 안전 탐색이 제거됩니다.
  • > 약 140개의 표준 라이브러리, Gradle, Spock 이름과 약 260개의 GDK 메서드는 관계에서 걸러집니다.
  • > `stage`, `sh` 같은 Jenkins 단계를 포함한 빌더 DSL 이름은 빌더 방식에서 걸러지며, 애너테이션은 결코 호출로 기록되지 않습니다.

유용한 MCP 진입점

  • find_symbol

    공유 라이브러리 단계, 빌드 헬퍼, 클래스의 정의와 호출자가 필요할 때 사용하세요.

  • dependency_search

    빌드 헬퍼에 incoming 탐색을 사용해 그것을 호출하는 스크립트와 파이프라인을 확인하세요.

  • text_pattern_search

    그래프에서 걸러지는 DSL 호출과 GDK 메서드를 찾을 때 사용하세요.