Skip to content

方針: ESLint @stylistic による Tauri 層フォーマットルール導入 #231

@j4rviscmd

Description

@j4rviscmd

概要

ESLint の @stylistic/eslint-plugin-ts を用いて、フォーク独自コード(Tauri 層)のみにフォーマットルールを適用する。本家(microsoft/vscode)とのアップストリームマージ影響を回避するため、VS Code Core ファイルには一切ルールを適用しない。

現状

  • .editorconfig は存在するが CI での強制力なし(フロントエンドにフォーマットチェックなし)
  • @stylistic/eslint-plugin-ts@^2.8.0 は導入済みだが、有効なのは semimember-delimiter-style のみ
  • ESLint(eslint.config.js)は CI の frontend-lint ジョブで実行済み
  • インデントやスペースなど、CLAUDE.md の「スペースを使用(TAB不可)」ルールを CI で担保する仕組みがない

対象範囲

適用する(Tauri 層 = 本家に存在しないファイル)

  • src/**/tauri-browser/**/*.ts(26ディレクトリ)
  • src/vs/sessions/**/*.ts(エージェントセッション)
  • src-tauri/ は Rust なのでESLint対象外(cargo fmt で既にCIチェックあり)

適用しない(VS Code Core = 本家ファイル)

  • src/vs/ 配下の本家コード全般
  • extensions/ 配下
  • その他本家に存在するファイル

懸念事項と対策

1. アップストリームマージ時の差分地獄

リスク: VS Code Core ファイルにフォーマットをかけると、git merge 時に数千ファイルでコンフリクトが発生する。

対策: Tauri 層のみに限定。これらは本家に存在しないため、マージ影響はゼロ。Issue #24 のクリーンアーキテクチャ戦略(upstream変更ファイルをゼロにする目標)と整合。

2. 同一プロジェクト内でフォーマットが統一されない

リスク: 古いファイル(本家)は元のまま、新しいファイル(Tauri層)だけ整形済みという二重標準。

対策: 許容する。本家マージの安定性を優先。Issue #24 の分離方針に従い、VS Code Core は変更不可とする。

3. 既存の @Stylistic ルールとの整合性

リスク: グローバル設定の semi / member-delimiter-style と新しいオーバーライドが競合する可能性。

対策: Tauri 層向けのオーバーライドで明示的にルールを上書き。eslint.config.js のoverrides機能を使用。

4. ツールの追加によるメンテナンスコスト

リスク: Biome / Prettier などの新ツール導入は設定の重複と保守コストを増やす。

対策: 新ツールは導入せず、既存の ESLint + @stylistic を拡張する方針。設定ファイルは eslint.config.js のみ。

追加予定のルール

Tauri 層向けに eslint.config.js の overrides で追加:

ルール 設定 目的
@stylistic/ts/indent ['error', 4] スペース4インデント
@stylistic/ts/no-tabs 'error' タブ禁止
@stylistic/ts/quotes ['error', 'single'] シングルクォート(nls以外)
@stylistic/ts/type-annotation-spacing 'error' 型アノテーションのスペース統一
@stylistic/ts/object-curly-spacing ['error', 'always'] ブレース内スペース
@stylistic/ts/no-trailing-spaces 'error' 行末スペース禁止
@stylistic/ts/no-multiple-empty-lines ['error', { max: 1 }] 連続空行の制限

検討して不採用とした選択肢

選択肢 不採用理由
Prettier 本家ファイルに適用するとアップストリームマージで差分地獄。新ツールの保守コスト増。
Biome Prettier と同じ懸念。リンターとフォーマッターの統合は魅力的だが、既存ESLintとの二重管理が発生。
.editorconfig + CI editorconfig-checker で強制は可能だが、@Stylistic で統合済みのESLintの方が設定一元化できる。
全ファイル一括フォーマット 本家との差分が膨大になり、Issue #24 のマージ戦略と完全に競合。

実装ファイル

  • eslint.config.js — Tauri 層向け overrides ブロックを追加

参考

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions