dart-run-static-analysis について
Dart と Flutter の開発者向け静的解析ワークフローガイドで、解析設定、診断の抑制、自動修正を扱います。dart analyze の実行、診断の確認、変更後のコード整形方法を説明します。
主な機能
- 01継承する lint ルールの設定
- 02厳密な型チェックの有効化
- 03ファイル除外や診断の抑制
- 04Dart 静的解析の実行
- 05自動修正の確認と適用
- 06コード整形と再チェック
活用シーン
- 01Dart または Flutter パッケージの解析ルール設定
- 02生成ファイルの診断への対処
- 03CI で情報レベルの診断を失敗扱いにする
- 04修正の一括適用と結果の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dhruvanbhalara/ skills --skill dart-run-static-analysisインストール後、Claude Code で/dart-run-static-analysisを入力して読み込まれたか確認します。
詳細
目次
解析設定
Dart パッケージのルートにある analysis_options.yaml を設定することで、厳格なフォーマット、スタイルのクリーンさ、コードの健全性を強制できます。
- Lint の継承:
includeディレクティブを使用して、推奨されるベースラインのルールセットを継承します。純粋な Dart パッケージにはpackage:lints/recommended.yamlを、Flutter アプリケーションにはpackage:flutter_lints/flutter.yamlを推奨します。 - 厳格な型チェック: 安全でない動的型を排除するため、
analyzer: language:設定の下で厳格な静的型を明示的に宣言します:analyzer: language: strict-casts: true strict-inference: true strict-raw-types: true - リンタールールのカスタマイズ:
linter: rules:の下で特定のルールをカスタマイズします。継承した設定を上書きする際には、マップのキー構造(rule_name: true/false)を使用してルールを明示的に有効化または無効化します。 - 自動フォーマットオプション:
formatter:ノードの下でフォーマッタのパラメータを宣言します(例:page_width: 80の設定)。
診断の抑制ルール
アナライザーの警告やスタイル lint が誤検知を報告したり、生成されたファイルに該当したりする場合は、次のいずれかの方法で警告を明示的に抑制します:
- 除外フィルター: 標準の glob パターンを使用して、生成された JSON モデルや国際化ファイルなどのファイル全体またはディレクトリツリーを
analyzer: exclude:リストの下で解析から除外します:analyzer: exclude: - "lib/generated/**" - "**/*.g.dart" - ファイルレベルの抑制: Dart ファイルの先頭の専用行に
// ignore_for_file: diagnostic_nameを追加して、ファイルコンテキスト全体で特定のルールを無効化します。 - 行レベルの抑制: 対象のステートメントの直前の行、または該当する行の末尾に
// ignore: diagnostic_nameを追加します。 - pubspec での抑制:
pubspec.yaml内にコメント(例:# ignore: sort_pub_dependencies)を挿入して、パッケージ依存関係の警告を抑制します。
ワークフロー: 静的解析の実行
静的コード監査を実行するには、次のチェックリストに従います:
- 解析設定の確立: プロジェクトのルートに
analysis_options.yamlが存在することを確認します。 - 解析の実行: ターミナルからアナライザーを実行します:
dart analyze . - info を致命的エラーに引き上げる: CI/CD パイプラインでは、致命的フラグを追加して情報レベルの lint でビルドが失敗するようにします:
dart analyze . --fatal-infos - 診断のトリアージ: 警告を確認し、型階層や未使用の変数を修正するか、必要に応じて抑制を適用します。
ワークフロー: 自動コード修正の適用
機械的なクイックフィックスを自動的に適用するには、次のチェックリストに従います:
- Lint の確認:
analysis_options.yamlで対象のリンタールールが有効になっていることを確認します。 - ドライランの確認: ドライランを実行して、提案される機械的な変更を検査します:
dart fix --dry-run - 修正の適用: ワークスペース全体にクイックフィックスを直接適用します:
dart fix --apply - コードのフォーマット: 変更されたコードファイルをフォーマットします:
dart format . - 解析の再実行:
dart analyzeがクリーンな結果を報告することを確認します。
例
包括的な analysis_options.yaml テンプレート
include: package:lints/recommended.yaml
analyzer:
exclude:
- "lib/generated/**"
- "**/*.g.dart"
- "**/*.freezed.dart"
language:
strict-casts: true
strict-inference: true
strict-raw-types: true
errors:
todo: ignore
missing_required_param: error
missing_return: error
linter:
rules:
always_declare_return_types: true
avoid_empty_else: true
prefer_const_constructors: true
sort_pub_dependencies: false
formatter:
page_width: 100
trailing_commas: preserve
インライン抑制のテクニック
// 1. Suppress all instances of unused variables inside this specific file
// ignore_for_file: unused_local_variable
void calculateMetrics() {
// 2. Suppress a single line using a preceding comment ignore
// ignore: invalid_assignment
int x = 'not_an_int';
final unusedString = 'value'; // File-level ignore handles this
// 3. Suppress at the end of the line
final double pi = 3.14; // ignore: constant_identifier_names
}
コメント
Markdown 対応