signals-lint について
Flutterアプリ開発者向けに、`signals.dart`エコシステムの`signals_lint`を解説するツールリファレンスです。静的解析ルールと、シグナルやウィジェットの一般的なパターン向けIDEクイックフィックスを紹介します。
主な機能
- 01buildメソッド内のシグナル生成を検出
- 02非推奨のwatch APIとmixinを検出
- 03名前付きbuilderコールバックを要求
- 04統一オプションクラスを推奨
- 05ウィジェット変換・移行用IDEクイックフィックス
活用シーン
- 01Flutterのビルド中に再生成されるシグナル状態の発見
- 02非推奨のwatchやmixinの移行
- 03SignalBuilderの規約統一
- 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)から次の自動アシストを利用できます。
WrapWithSignalBuilder:任意のウィジェット式をSignalBuilder(builder: (context) => ...)でラップします。ConvertStatelessToSignalWidget:標準のStatelessWidgetを即座にSignalWidgetにリファクタリングします。ConvertStatefulToSignalStatefulWidget:標準のStatefulWidgetをSignalStatefulWidgetにリファクタリングします。MigrateSignalsMixinToSignalStatefulWidget:レガシーなSignalsMixinを取り除き、クラス構造をSignalStatefulWidgetに変換します。MigrateWatchToSignalBuilder:レガシーなWatch(...)インスタンスを、すっきりとしたSignalBuilderウィジェットに変換します。
コメント
Markdown 対応