mcpField
D
dart-run-static-analysis

dart-run-static-analysis

github.com/flutterテスト・品質3.1k15.1k 回インストール2 日前に更新
リポジトリ

dart-run-static-analysis について

Dart の解析設定、診断の確認、自動修正の適用を支援するスキルです。Dart と Flutter の開発者向けに、設定、診断の抑制、修正、フォーマット、検証の手順をまとめています。

主な機能

  1. 01アナライザーとフォーマッターの設定
  2. 02厳格な型チェック設定
  3. 03診断の抑制方法
  4. 04静的解析のワークフロー
  5. 05自動修正とフォーマット

活用シーン

  1. 01analysis_options.yaml の設定
  2. 02Dart の lint や型診断の調査
  3. 03コード修正の適用と検証

インストール

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

$npx skills add https://github.com/flutter/agent-plugins --skill dart-run-static-analysis

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

詳細

Dart コードの分析と修正

目次

分析の設定

パッケージのルートにある analysis_options.yaml ファイルを使用して、Dart アナライザーを設定します。

  • 基本設定: include: ディレクティブを使用して、標準のルールセット(例:package:lints/recommended.yaml または package:flutter_lints/flutter.yaml)を必ず含めます。
  • 厳密な型チェック: 暗黙的なダウンキャストや dynamic の推論を防ぐため、analyzer: language: ノードで厳密な型チェックを有効にします。strict-casts: true、strict-inference: true、strict-raw-types: true を設定します。
  • リンターのルール: linter: rules: ノードで、特定のルールを明示的に有効または無効にします。含めたルールを上書きする場合はキーと値のマップ(rule_name: true/false)を使用し、新しいセットを定義する場合はリスト(- rule_name)を使用します。同じ rules ブロック内でリスト形式とマップ形式を混在させないでください。
  • フォーマッターの設定: formatter: ノードで dart format の動作を設定します。page_width(デフォルトは 80)と trailing_commas(automate または preserve)を設定します。
  • アナライザープラグイン: analyzer: plugins: ノードにプラグインを追加して、カスタム診断を有効にします。プラグインパッケージが pubspec.yaml の dev_dependency として追加されていることを確認します。

診断の抑制

診断(リントまたは警告)が誤検出を起こす場合や、生成コードに適用される場合は、明示的に抑制します。

  • ファイル単位の除外: analysis_options.yaml の analyzer: exclude: ノードで、グロブパターン(例:**/*.g.dart)を使用してファイルまたはディレクトリ全体を除外します。
  • ファイル単位の抑制: Dart ファイルの先頭に // ignore_for_file: <diagnostic_code> を追加すると、そのファイル全体で特定の診断を抑制できます。すべてのリンタールールを抑制するには、// ignore_for_file: type=lint を使用します。
  • 行単位の抑制: 問題のあるコードの直前の行に // ignore: <diagnostic_code> を追加するか、問題のある行の末尾に追加します。
  • Pubspec での抑制: pubspec.yaml ファイルで、問題のある行の上に # ignore: <diagnostic_code> を追加します(例:# ignore: sort_pub_dependencies)。
  • プラグインの診断: プラグイン固有の問題を抑制する場合は、診断コードの前にプラグイン名を付けます(例:// ignore: some_plugin/some_code)。

ワークフロー:静的分析の実行

このワークフローを使用して、型に関するバグ、スタイル違反、潜在的な実行時エラーを特定します。

タスクの進行状況:

  • 1. プロジェクトのルートに analysis_options.yaml があることを確認します。
  • 2. analyze_files MCP ツール(利用可能な場合)または CLI コマンド dart analyze <target_directory> を使用してアナライザーを実行します。
  • 3. 診断の出力を確認します。
  • 4. 情報レベルの問題も失敗として扱う必要がある場合は、--fatal-infos フラグを追加します。
  • 5. 報告されたエラーを手動で解決するか、自動修正のワークフローに進みます。

ワークフロー:自動修正の適用

このワークフローを使用して、古くなった API の使用箇所を解決し、クイック修正を適用し、コードを移行します(例:Dart 3 への移行)。

タスクの進行状況:

  • 1. dart_fix MCP ツールまたは CLI コマンド dart fix --dry-run を使用してドライランを実行し、提案された変更を確認します。
  • 2. 提案された修正が意図したアーキテクチャに沿っていることを確認します。
  • 3. 追加の修正が必要な場合は、対応するリンタールールが analysis_options.yaml で有効になっていることを確認します。
  • 4. dart_fix MCP ツールまたは CLI コマンド dart fix --apply を使用して修正を適用します。
  • 5. dart_format MCP ツールまたは CLI コマンド dart format . を使用して、変更したコードをフォーマットします。
  • 6. 静的分析のワークフローを実行して、すべての診断が解決されたことを確認します。

例

網羅的な analysis_options.yaml
include: package:flutter_lints/recommended.yaml

analyzer:
  exclude:
    - "**/*.g.dart"
    - "lib/generated/**"
  language:
    strict-casts: true
    strict-inference: true
    strict-raw-types: true
  errors:
    todo: ignore
    invalid_assignment: warning
    missing_return: error

linter:
  rules:
    avoid_shadowing_type_parameters: false
    await_only_futures: true
    use_super_parameters: true

formatter:
  page_width: 100
  trailing_commas: preserve
インラインでの診断の抑制
// Suppress for the entire file
// ignore_for_file: unused_local_variable, dead_code

void processData() {
  // Suppress for a specific line
  // ignore: invalid_assignment
  int x = '';
  
  const y = 10; // ignore: constant_identifier_names
}

コメント