本文へスキップ
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メソッドに使ってください。