概要
現在の yosan-flow には、svelte-check、ESLint、eslint-plugin-svelte、TypeScript strict mode、Prettier、および GitHub Actions 上の品質チェックが導入済みです。
現状の標準構成を維持しつつ、Svelte 固有の不具合や保守性低下をより早い段階で検出できるよう、静的解析ルールと CI の警告ゲートを段階的に強化することを検討します。
現在の状態
pnpm check
svelte-kit sync
svelte-check --tsconfig ./tsconfig.json
pnpm lint
typescript-eslint の recommended 設定を使用
eslint-plugin-svelte の flat/recommended を使用
eslint-plugin-svelte の flat/prettier を使用
- TypeScript の
strict: true と checkJs: true を有効化
- GitHub Actions で format、lint、check、test、build、E2E を実行
一方、以下は現在明示的に強制していません。
svelte-check --fail-on-warnings
eslint --max-warnings=0
- プロジェクト方針としての追加 Svelte ルール
svelte/prefer-svelte-reactivity を無効化している理由の文書化
導入候補
1. CI 用の厳格なスクリプトを追加する
通常開発用コマンドは維持し、CI でのみ警告を失敗として扱う案を検討します。
{
"scripts": {
"check:ci": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings",
"lint:ci": "eslint . --max-warnings=0"
}
}
GitHub Actions では pnpm check / pnpm lint の代わりに、pnpm check:ci / pnpm lint:ci を実行します。
2. Svelte 固有ルールを明示する
以下のルールについて、既存コードへの影響と誤検知を確認した上で段階導入を検討します。
{
rules: {
"svelte/require-each-key": "error",
"svelte/button-has-type": "error",
"svelte/no-unused-props": "warn",
"svelte/prefer-const": "error"
}
}
no-unused-props は誤検知やコンポーネント API への影響を確認し、最初は warn とする案です。
prefer-const は ESLint 本体のルールとの競合を避けるため、必要に応じて以下を併用します。
{
rules: {
"prefer-const": "off",
"svelte/prefer-const": "error"
}
}
3. svelte/prefer-svelte-reactivity の方針を明確化する
現在は次の設定で無効化されています。
"svelte/prefer-svelte-reactivity": "off"
次のいずれかを選択します。
- 有効化し、既存コードを Svelte のリアクティブ対応 API に合わせる
- 無効化を維持し、理由を設定ファイルまたは CONTRIBUTING に記載する
- 対象ディレクトリを限定して段階導入する
導入手順案
- 現在の
svelte-check と ESLint の警告件数を確認する
- 既存警告の原因を分類する
- 誤検知や設計上許容する警告を整理する
- CI 用の
check:ci と lint:ci を追加する
- 追加ルールを一つずつ有効化する
- 既存コードの修正とルール追加を可能な限り別コミットに分ける
- README または CONTRIBUTING に静的解析方針を記載する
検討事項
- 警告を一括で CI エラー化すると Renovate PR や既存開発フローを止める可能性がある
svelte/no-unused-props は公開コンポーネント API や間接参照で誤検知しないか確認が必要
svelte/prefer-svelte-reactivity はサーバー側コードや不変データまで過剰に制約しないか確認が必要
- ルール追加による可読性向上と、設定・抑制コメントの増加とのバランスを取る
- Prettier、TypeScript ESLint、Svelte parser の既存設定と競合しないことを確認する
対象外
- アプリケーション機能の変更
- UI デザインの変更
- 大規模なコンポーネント再設計
- TypeScript 設定全体の再構築
- formatter による無関係な全面差分
受け入れ条件
概要
現在の yosan-flow には、
svelte-check、ESLint、eslint-plugin-svelte、TypeScript strict mode、Prettier、および GitHub Actions 上の品質チェックが導入済みです。現状の標準構成を維持しつつ、Svelte 固有の不具合や保守性低下をより早い段階で検出できるよう、静的解析ルールと CI の警告ゲートを段階的に強化することを検討します。
現在の状態
pnpm checksvelte-kit syncsvelte-check --tsconfig ./tsconfig.jsonpnpm linteslint .typescript-eslintの recommended 設定を使用eslint-plugin-svelteのflat/recommendedを使用eslint-plugin-svelteのflat/prettierを使用strict: trueとcheckJs: trueを有効化一方、以下は現在明示的に強制していません。
svelte-check --fail-on-warningseslint --max-warnings=0svelte/prefer-svelte-reactivityを無効化している理由の文書化導入候補
1. CI 用の厳格なスクリプトを追加する
通常開発用コマンドは維持し、CI でのみ警告を失敗として扱う案を検討します。
{ "scripts": { "check:ci": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings", "lint:ci": "eslint . --max-warnings=0" } }GitHub Actions では
pnpm check/pnpm lintの代わりに、pnpm check:ci/pnpm lint:ciを実行します。2. Svelte 固有ルールを明示する
以下のルールについて、既存コードへの影響と誤検知を確認した上で段階導入を検討します。
no-unused-propsは誤検知やコンポーネント API への影響を確認し、最初はwarnとする案です。prefer-constは ESLint 本体のルールとの競合を避けるため、必要に応じて以下を併用します。3.
svelte/prefer-svelte-reactivityの方針を明確化する現在は次の設定で無効化されています。
次のいずれかを選択します。
導入手順案
svelte-checkと ESLint の警告件数を確認するcheck:ciとlint:ciを追加する検討事項
svelte/no-unused-propsは公開コンポーネント API や間接参照で誤検知しないか確認が必要svelte/prefer-svelte-reactivityはサーバー側コードや不変データまで過剰に制約しないか確認が必要対象外
受け入れ条件
pnpm check:ciが成功するpnpm lint:ciが成功するpnpm test:unitが成功するpnpm test:integrationが成功するpnpm buildが成功するpnpm test:e2eが成功する