mcpField
S
signals-lint

signals-lint

github.com/rodydavisテスト・品質82496 回インストール12 週間前に更新
リポジトリ

signals-lint について

Flutterアプリ開発者向けに、`signals.dart`エコシステムの`signals_lint`を解説するツールリファレンスです。静的解析ルールと、シグナルやウィジェットの一般的なパターン向けIDEクイックフィックスを紹介します。

主な機能

  1. 01buildメソッド内のシグナル生成を検出
  2. 02非推奨のwatch APIとmixinを検出
  3. 03名前付きbuilderコールバックを要求
  4. 04統一オプションクラスを推奨
  5. 05ウィジェット変換・移行用IDEクイックフィックス

活用シーン

  1. 01Flutterのビルド中に再生成されるシグナル状態の発見
  2. 02非推奨のwatchやmixinの移行
  3. 03SignalBuilderの規約統一
  4. 04IDE支援によるウィジェットのリファクタリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rodydavis/signals.dart --skill signals-lint

インストール後、Claude Code で/signals-lintを入力して読み込まれたか確認します。

同梱ファイルCONTEXT.md

詳細

signals_lint ツールとルール

このスキルでは、signals.dart エコシステムにおける静的コード解析、カスタムコンパイラー警告診断、自動クイックフィックスの使用方法を扱います。


🚀 有効化とセットアップ

リアルタイムの IDE 診断と修正を有効にするには、プロジェクトでプラグインが有効になっていることを確認してください。

# pubspec.yaml
dev_dependencies:
  custom_lint: ^0.8.1
  signals_lint: ^7.0.0
# analysis_options.yaml
analyzer:
  plugins:
    - custom_lint

🛡️ Lint ルールのリファレンス

1. signals_avoid_create_in_build_method

Flutter の build メソッド内でシグナルまたは計算変数が作成されている箇所を検出します。

  • 問題:ビルド中に状態を作成すると、再ビルドのたびに状態がリセットされます。
  • 解決策:クラスフィールドに作成を移動するか、状態のライフサイクルフック内で初期化します。

2. signals_avoid_deprecated_watch_extension

非推奨の BuildContext.watch() および BuildContext.unwatch() 拡張機能の使用箇所を検出します。

  • 問題:Watch 拡張機能は、ステートフルウィジェットのライフサイクルに広範なオーバーヘッドを引き起こす可能性があります。
  • 解決策:局所的な SignalBuilder を使用するか、SignalWidget/SignalStatefulWidget を継承します。

3. signals_avoid_deprecated_signals_mixin

StatefulWidget の状態クラスで、非推奨の with SignalsMixin ミックスインが使用されている箇所を検出します。

  • 問題:ステートフルウィジェットの追跡フックを不必要に継承します。
  • 解決策:代わりに SignalStatefulWidget を継承します。

4. signals_prefer_named_builder

SignalBuilder および Watch 要素では、位置引数ではなく名前付きの builder: コールバックを使用するようにします。

  • 理由:標準の API パラメーターと可読性を確保します。

5. signals_prefer_unified_options

クリエーターに直接渡す設定引数(例:autoDispose: true)を検出します。

  • 解決策:設定プロパティを統一オプションクラス(例:options: SignalOptions(autoDispose: true))にまとめます。

💡 IDE の自動コードアシスト(クイックフィックス)

該当するクラス名またはウィジェットのインスタンス化に IDE でカーソルを置くと、クイックフィックスメニュー(Cmd+. または Alt+Enter)から次の自動アシストを利用できます。

  1. WrapWithSignalBuilder:任意のウィジェット式を SignalBuilder(builder: (context) => ...) でラップします。
  2. ConvertStatelessToSignalWidget:標準の StatelessWidget を即座に SignalWidget にリファクタリングします。
  3. ConvertStatefulToSignalStatefulWidget:標準の StatefulWidget を SignalStatefulWidget にリファクタリングします。
  4. MigrateSignalsMixinToSignalStatefulWidget:レガシーな SignalsMixin を取り除き、クラス構造を SignalStatefulWidget に変換します。
  5. MigrateWatchToSignalBuilder:レガシーな Watch(...) インスタンスを、すっきりとした SignalBuilder ウィジェットに変換します。

コメント