コントリビューションガイド¶
ReScript IntelliJ Plugin への貢献に興味をお持ちいただきありがとうございます!
前提条件¶
要件 |
バージョン |
備考 |
|---|---|---|
JDK |
21+ |
IntelliJ Platform 2025.3+ に必要 |
Node.js |
18+ |
LSP サーバーおよび |
IntelliJ IDEA |
2025.3+ |
Community または Ultimate エディション |
Gradle |
9.4+ |
Wrapper 同梱 — 手動インストール不要 |
はじめに¶
GitHub でリポジトリをフォークします
フォークをクローンします:
git clone https://github.com/<your-username>/rescript-intellij-plugin.git
開発環境をセットアップします
フィーチャーブランチを作成します:
git checkout -b feature/my-feature
開発ワークフロー¶
ブランチ命名規則¶
プレフィックス |
用途 |
|---|---|
|
新機能 |
|
バグ修正 |
|
コードのリファクタリング |
|
ドキュメント |
|
テストの追加 |
|
設定、依存関係 |
コミットメッセージ¶
コミットメッセージには絵文字プレフィックスを使用します:
絵文字 |
用途 |
|---|---|
✨ |
新機能 |
🐛 |
バグ修正 |
♻️ |
リファクタリング |
📝 |
ドキュメント |
🎨 |
UI/スタイルの改善 |
⚡ |
パフォーマンスの改善 |
🔧 |
設定の変更 |
✅ |
テストの追加/修正 |
🗑️ |
コードの削除 |
フォーマット: <絵文字> <動詞> <簡潔な説明>
例:
✨ Add JSX token support to lexer🐛 Fix nested comment parsing📝 Update architecture documentation
コーディング規約¶
言語¶
すべてのソースコードは Kotlin で記述されています
レクサー定義は JFlex で記述されています(Java を生成)
パッケージ構成¶
すべてのクラスは com.rescript.plugin.* 配下に、機能ごとに整理されます:
com.rescript.plugin.highlight/ # Syntax highlighting
com.rescript.plugin.lsp/ # LSP integration
com.rescript.plugin.navigation/ # Navigation features
...
コードスタイル¶
ktlint は CI で適用されます(
./gradlew ktlintCheck)自動修正:
./gradlew ktlintFormatIntelliJ の組み込み Kotlin フォーマッタは概ね ktlint に準拠しています
KDoc コメント¶
すべてのクラスと主要なメソッドには 英語 で KDoc コメントを記述する必要があります:
/**
* Provides code folding for ReScript files.
*
* Recognizes multi-line declarations, block comments,
* and custom //#region markers.
*
* @see RescriptCustomFoldingProvider for region-based folding
*/
class RescriptFoldingBuilder : CustomFoldingBuilder() {
/**
* Builds fold regions for the given PSI element.
*
* @param root the root PSI element to scan
* @param descriptors list to add fold descriptors to
* @param document the document being folded
*/
override fun buildLanguageFoldRegions(...) { ... }
}
テスト¶
すべてのコード変更には対応するテストが必要です
テストファイルの命名:
<ClassName>Test.ktテストはソースのパッケージ構成を反映します
詳細はテストガイドを参照してください
AI 支援開発¶
このプロジェクトでは、Claude Code を使用した AI 支援開発のために構造化されたワークフローを採用しています。以下の設定ファイルが開発プロセスを定義します:
.claude/rules/steering-workflow.md— 実装前にrequirements.md、design.md、tasklist.mdを必要とするステアリングワークフロー.claude/rules/definition-of-done.md— 5 フェーズの完了定義 (計画 → 実装 → コミット前 → マージ前 → マージ後).claude/rules/git-conventions.md— フィーチャーブランチの Git worktree 分離、絵文字コミットプレフィックス、ブランチ命名規則
ステアリングドキュメントは .steering/[YYYYMMDD]-[NNN]-[title]/ ディレクトリに保存され、コード変更と一緒にコミットされます。
品質チェック¶
プロジェクトでは CI とカスタム Gradle タスクによる複数の自動品質ゲートを適用しています:
チェック |
コマンド |
説明 |
|---|---|---|
コードスタイル |
|
Kotlin リンティング(自動修正: |
KDoc コメント |
|
すべてのクラスに KDoc コメントが必要 |
テストファイル |
|
プロダクションクラスには対応するテストが必要 |
EP 登録 |
|
plugin.xml が既存のクラスを参照していること |
カバレッジ |
|
レポートは |
カバレッジしきい値 |
|
最低 85% の行カバレッジを適用 |
変更の提出¶
ローカルで CI チェックをすべて実行します:
./gradlew ktlintCheck buildPlugin test koverHtmlReport
ビルドとすべてのテストが成功することを確認します
新しいコードのカバレッジを確認します:
open build/reports/kover/html/index.htmlブランチをプッシュして Pull Request を作成します
PR ガイドライン¶
PR は単一の機能またはバグ修正に絞ってください
何を変更したか、なぜ変更したかを明確に記述してください
UI の変更にはスクリーンショットを含めてください
該当する場合は関連する Issue を参照してください
質問がありますか?¶
GitHub で Issue を作成してください
既存の Issue やディスカッションを確認してください