ビルドと実行¶
ビルドコマンド¶
コマンド |
説明 |
|---|---|
|
プラグインのビルド(レクサー生成、コンパイル、パッケージングを含む) |
|
クリーンビルド(ゼロからのビルド) |
|
プラグインを読み込んだ開発用 IDE インスタンスを起動 |
|
すべてのテストを実行 |
|
ktlint コードスタイルチェックを実行 |
|
ktlint の問題を自動修正 |
|
HTML コードカバレッジレポートを生成 |
|
プラグインディスクリプタと構造を検証 |
|
プロジェクト構成を検証 |
|
バイナリ互換性を検証 |
注釈
./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.javaGradle タスク:
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 の設定¶
主要な設定ファイル:
ファイル |
用途 |
|---|---|
|
ビルドスクリプト(プラグイン、依存関係、タスク) |
|
バージョン番号、プラットフォーム設定 |
|
プロジェクト名とリポジトリの設定 |
プラットフォームバージョン¶
対象の 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 で実行されます:
actionlint — GitHub Actions ワークフローファイルの検証
ktlint — コードスタイルチェック
Build — コンパイルとパッケージング
Test — カバレッジ付きテスト実行(Kover)
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 互換性を保証しません。