mcpField
D
dart-run-static-analysis

dart-run-static-analysis

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

dart-run-static-analysis について

Dart と Flutter の開発者向け静的解析ワークフローガイドで、解析設定、診断の抑制、自動修正を扱います。dart analyze の実行、診断の確認、変更後のコード整形方法を説明します。

主な機能

  1. 01継承する lint ルールの設定
  2. 02厳密な型チェックの有効化
  3. 03ファイル除外や診断の抑制
  4. 04Dart 静的解析の実行
  5. 05自動修正の確認と適用
  6. 06コード整形と再チェック

活用シーン

  1. 01Dart または Flutter パッケージの解析ルール設定
  2. 02生成ファイルの診断への対処
  3. 03CI で情報レベルの診断を失敗扱いにする
  4. 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
}

コメント