# Groovy sa Maguyva: mga code graph para sa Gradle at Jenkins

Canonical source: https://maguyva.ai/fil/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).

Sinusuportahan ng Maguyva ang Groovy gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga class, closure at call sa mga Groovy app, Gradle build at Jenkinsfile.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .gradle, .groovy, .jenkinsfile
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga Gradle build na nakasulat sa Groovy, na may shared build logic na nakakalat sa maraming `.gradle` file.
- Mga Jenkins pipeline at shared library na kailangang basahin ng agent bago baguhin ang CI.
- Mga Groovy application sa JVM at mga Spock test suite.

## Mga workflow ng agent

- Hanapin ang lahat ng tumatawag sa isang shared-library step bago baguhin ang mga argument nito.
- I-trace kung aling mga build script ang tumatawag sa helper na nakadeklara sa isang shared `.gradle` file.
- I-map kung aling mga class ang nagmamana mula sa isang base class bago mag-refactor.

## Saan nalilito ang mababaw na AI tool sa Groovy

Madalas mukhang configuration ang Groovy. Sa isang Gradle build, sunod-sunod na method call na may closure ang `dependencies { implementation ... }`, at ganoon din ang declarative Jenkinsfile. Ginagawang call ng mga builder ang kahit anong pangalan, at nagdadagdag ang GDK ng mga method tulad ng `each` at `collect` sa bawat object. Malulunod sa ingay ang tool na nagtatala ng bawat call.

Nifi-filter ng Maguyva ang DSL at GDK layer, para lumitaw ang sarili mong mga method at class.

## Ano ang kinukuha ng Maguyva mula sa Groovy

Sakop ng Maguyva ang mga `.groovy` at `.gradle` file at ang `Jenkinsfile`. Kinukuha ang mga class, function at method, at nino-normalize ng mga import ang mga `import static` at `as` alias. Tinatanggal sa mga pangalan ng call ang trailing closure block at ang `?.` safe-navigation operator, kaya naitatala ang `repo?.save(order) { ... }` bilang call sa `save`. Nireresolba sa sariling method ng class ang call na walang receiver sa loob ng class na iyon.

Nifi-filter ang ingay nang patong-patong:

- Mga 140 pangalan mula sa standard library, Gradle at Spock, tulad ng `dependencies`, `implementation`, `task`, `given`, `when`, `then` at `Mock`.
- Mga 260 GDK method, tulad ng `each`, `collect`, `inject` at `eachLine`.
- Mga pangalan sa builder DSL, kasama ang mga Jenkins step tulad ng `pipeline`, `stage`, `steps` at `sh`, kapag ginamit nang builder-style at hindi tinawag nang may panaklong.
- Mga AST-transform at framework annotation tulad ng `@CompileStatic`, `@Immutable` at `@Autowired`, na hindi kailanman itinatalang call.

Itinatala rin ng graph ang inheritance, instantiation, at mga read at write.

## Mga halimbawang agent prompt

- "Sino ang tumatawag sa `deployToStaging`, at mula sa aling mga pipeline?" (`find_symbol`, tapos `dependency_search` na incoming)
- "Aling mga class ang nagmamana mula sa `BaseIntegrationSpec`?" (`dependency_search`)
- "Ipaliwanag kung paano bina-build at pina-publish ng release task ang mga artifact." (`get_task_context`)

## Mga kilalang limitasyon

- Iisang syntax node ang ginagamit ng mga Groovy method at free function, kaya walang napipili ang `methods` preset sa `structural_search`. Gamitin na lang ang `functions` preset o ang `find_symbol`.
- Puwedeng ma-filter din ang sarili mong method na kapangalan ng isang GDK o DSL method, gaya ng `collect` o `stage`. Kung parang may kulang na caller, gamitin ang `text_pattern_search`.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Para sa JVM code na kino-compile ng iyong mga build, basahin ang [gabay sa Java](/fil/languages/java) at ang [gabay sa Kotlin](/fil/languages/kotlin).

## Mga detalye ng engine

- Sakop ng suporta sa Groovy ang mga `.groovy`, `.gradle` at `Jenkinsfile` file. Tinatanggal sa mga pangalan ng call ang mga closure block at ang `?.` safe navigation.
- Mga 140 pangalan mula sa standard library, Gradle at Spock at mga 260 GDK method ang nifi-filter mula sa mga relationship.
- Nifi-filter ang mga pangalan sa builder DSL, kasama ang mga Jenkins step tulad ng `stage` at `sh`, kapag ginamit nang builder-style; hindi kailanman itinatalang call ang mga annotation.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Gamitin para sa isang shared-library step, build helper o class kapag kailangan mo ang definition at mga caller.
- `dependency_search`: Gumamit ng incoming traversal para makita kung aling mga script at pipeline ang tumatawag sa isang build helper.
- `text_pattern_search`: Gamitin para sa mga DSL call at GDK method na nifi-filter mula sa graph.
