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

Canonical source: https://maguyva.ai/ko/languages/groovy

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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

## 지원 현황 요약

- 등급: AST 및 심볼 지원
- 프로그래밍
- 확장자: .gradle, .groovy, .jenkinsfile
- 구문 인식 검색과 구조적 컨텍스트를 위한 실제 AST 파싱을 제공합니다.
- 이름이 지정된 심볼은 시맨틱 조회와 상호 참조에 활용됩니다. 관계 추출이 활성화된 경우 그래프 내비게이션을 사용할 수 있습니다.
- 이 언어는 그래프 인식 검색에 심볼과 관계를 제공합니다. 지원되는 에지 유형은 언어 고유의 구문 구조에 따라 다릅니다.
- AST 파싱과 심볼 추출을 모두 지원합니다.

## 가장 적합한 경우

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

## 에이전트 워크플로

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

## 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`를 사용하세요.

## 다음 단계

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

## 엔진 세부 정보

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

## 유용한 MCP 진입점

- `find_symbol`: 공유 라이브러리 단계, 빌드 헬퍼, 클래스의 정의와 호출자가 필요할 때 사용하세요.
- `dependency_search`: 빌드 헬퍼에 incoming 탐색을 사용해 그것을 호출하는 스크립트와 파이프라인을 확인하세요.
- `text_pattern_search`: 그래프에서 걸러지는 DSL 호출과 GDK 메서드를 찾을 때 사용하세요.
