ビルドと実行

ビルドコマンド

コマンド

説明

./gradlew buildPlugin

プラグインのビルド(レクサー生成、コンパイル、パッケージングを含む)

./gradlew clean buildPlugin

クリーンビルド(ゼロからのビルド)

./gradlew runIde

プラグインを読み込んだ開発用 IDE インスタンスを起動

./gradlew test

すべてのテストを実行

./gradlew ktlintCheck

ktlint コードスタイルチェックを実行

./gradlew ktlintFormat

ktlint の問題を自動修正

./gradlew koverHtmlReport

HTML コードカバレッジレポートを生成

./gradlew verifyPluginStructure

プラグインディスクリプタと構造を検証

./gradlew verifyPluginProjectConfiguration

プロジェクト構成を検証

./gradlew verifyPlugin

バイナリ互換性を検証

注釈

./gradlew runIde は prepareSandbox 実行時にサンドボックス内の古い rescript-intellij-plugin-<old>.jar を自動的に削除します。これは pluginVersion バンプ後に IDE が古いプラグイン jar を読み込んで PluginException を発生させるのを防ぐためです。完全なサンドボックスリセットが必要な場合のみ ./gradlew clean runIde を使用してください。

JFlex レクサーの生成

JFlex レクサー(RescriptFlexLexer.java)はビルド時に Rescript.flex から自動生成されます:

  • ソース: src/main/java/com/rescript/plugin/lang/Rescript.flex

  • 生成ファイル: src/main/java/com/rescript/plugin/lang/RescriptFlexLexer.java

  • Gradle タスク: generateRescriptLexer

generateRescriptLexer タスクは compileJava と compileKotlin の依存タスクであるため、手動で実行する必要はありません。生成ファイルは .gitignore に含まれています。

警告

RescriptFlexLexer.java を直接編集しないでください。常に Rescript.flex を編集し、ビルドで Java ファイルを再生成してください。

プラグインのパッケージング

./gradlew buildPlugin 実行後、パッケージされたプラグインは以下に出力されます:

build/distributions/rescript-intellij-plugin-<version>.zip

この .zip は、Settings → Plugins → Install Plugin from Disk から互換性のある JetBrains IDE にインストールできます。

Gradle の設定

主要な設定ファイル:

ファイル

用途

build.gradle.kts

ビルドスクリプト(プラグイン、依存関係、タスク)

gradle.properties

バージョン番号、プラットフォーム設定

settings.gradle.kts

プロジェクト名とリポジトリの設定

プラットフォームバージョン

対象の IntelliJ Platform バージョンは gradle.properties で設定されています:

pluginSinceBuild = 261.26222   # IntelliJ 2026.1.4+
platformVersion  = 2026.2.3  # the platform the plugin is compiled against

下限を決めるのは API ではなくバイトコードです。2026.2 に対してビルドすると成果物は Java 25 のクラスファイルになり、バンドル JBR が 25 になった最初のリリースが 2026.1 です。pluginSinceBuild は完全な build 番号で指定してください。261.4 と書くと、LSP クライアント API を持たない 2026.1〜2026.1.3 まで通してしまいます。

注意: pluginUntilBuild は意図的に設定されていません。これにより、プラグインは将来のすべてのプラットフォームバージョンと互換性を持ちます。

CI パイプライン

GitHub Actions CI パイプライン(.github/workflows/ci.yml)はすべてのプッシュと PR で実行されます:

  1. actionlint — GitHub Actions ワークフローファイルの検証

  2. ktlint — コードスタイルチェック

  3. Build — コンパイルとパッケージング

  4. Test — カバレッジ付きテスト実行(Kover)

  5. Verify — プラグイン構造とバイナリ互換性の検証(プッシュ時のみ)

CI の Java セットアップ

CI は Eclipse Temurin JDK 25 を actions/setup-java@v6 で設定し、Gradle のキャッシュには gradle/actions/setup-gradle を使用します。メジャータグは公式 Actions の固定方針に従います。setup-java v5 と v6 はどちらも Node 24 を使用し、self-hosted runner は v2.327.1 以上が必要です。

Java Setup Smoke は Linux、macOS、Windows で JDK 25、tool-cache の再利用、Gradle launcher を順番に確認します。読み取り専用権限を使用し、公開や IDE のダウンロードは行いません。プラグインとドキュメントの gate は別に実行します。Release workflow は静的にレビューし、検証のためには起動しません。

CI ワークフロー lint

CI の actionlint job は、reviewdog/action-actionlint を commit d290e336d5a743810aef4404f757dc862276d2ae(v1.73.4)に固定します。GitHub-hosted Ubuntu 上の Docker action であり、container も digest に固定されています。この action は Node runtime を使用しません。workflow の Node 24 設定は JavaScript action に別途適用されます。

job は github-pr-review reporter と fail_level: error を維持します。既定の github.token を reviewdog に渡し、この job の権限は contents: read と pull-requests: write のままです。この更新による追加の token や権限は不要です。既存の file filter と error report level は変更しません。

更新した commit を新しい PR CI 実行で検証し、解決された container digest と tool version を記録します。指摘なしで成功した実行は、review comment の作成や fork PR への書き込み権限を証明しません。制限された token を回避するために権限を増やしたり、pull_request_target を使用したりしないでください。workflow lint はプラグインの runtime 互換性を保証しません。

CI ドキュメント依存

Docs workflow は、サードパーティ action の pin 規約に従い、astral-sh/setup-uv を commit bec219d24cd3e171d82865faccec33120bb574f4(v10.1.0)に固定します。action は GitHub-hosted Ubuntu runner の Node 24 で動作します。この pin が選択するのは setup action であり uv executable ではありません。従来の latest-uv 選択とプロジェクトの Python 要件を維持します。

各 documentation job は uv sync --locked を使用し、pyproject.toml と uv.lock が変更されていないことを確認します。lock が古い場合は CI で再生成せず、依存インストールを失敗させます。明示的な enable-cache: true を維持し、既定の dependency glob には sphinx-docs/uv.lock が含まれます。Python cache と cache pruning は無効のままです。cache miss は許容されますが、lock 検査は省略しません。

Docs workflow 自身の変更も PR 検証の対象となり、lint、テスト、翻訳、英語・日本語ビルド、アクセシビリティ検証を実行します。PR 実行では Pages を deploy しません。この Linux documentation 検証は、プラグインの physical または interactive runtime 互換性を保証しません。