dart-run-static-analysis

Par flutter · skills

Exécutez `dart analyze` pour identifier les avertissements et les erreurs, et utilisez `dart fix --apply` pour résoudre automatiquement les problèmes de lint mécaniques. À utiliser pendant le développement pour garantir la qualité du code et avant de valider les modifications.

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

Analyser et corriger du code Dart

Contenu

Configuration de l'analyse

Configurez l'analyseur Dart à l'aide du fichier analysis_options.yaml situé à la racine du package.

  • Configuration de base : Incluez toujours un ensemble de règles standard (par exemple package:lints/recommended.yaml ou package:flutter_lints/flutter.yaml) en utilisant la directive include:.
  • Vérifications de type strictes : Activez les vérifications de type strictes sous le nœud analyzer: language: pour éviter les conversions de type implicites et les inférences dynamiques. Définissez strict-casts: true, strict-inference: true et strict-raw-types: true.
  • Règles du linter : Activez ou désactivez explicitement des règles spécifiques sous le nœud linter: rules:. Utilisez une map clé-valeur (rule_name: true/false) pour surcharger les règles incluses, ou une liste (- rule_name) pour définir un ensemble neuf. Ne mélangez pas la syntaxe liste et map dans le même bloc rules.
  • Configuration du formateur : Configurez le comportement de dart format sous le nœud formatter:. Définissez page_width (80 par défaut) et trailing_commas (automate ou preserve).
  • Plugins de l'analyseur : Activez les diagnostiques personnalisés en ajoutant des plugins sous le nœud analyzer: plugins:. Assurez-vous que le package du plugin est ajouté comme dev_dependency dans pubspec.yaml.

Suppression des diagnostiques

Quand un diagnostic (lint ou avertissement) génère un faux positif ou s'applique à du code généré, supprimez-le explicitement.

  • Exclusion au niveau fichier : Utilisez le nœud analyzer: exclude: dans analysis_options.yaml pour exclure des fichiers ou répertoires entiers (par exemple **/*.g.dart) à l'aide de motifs glob.
  • Suppression au niveau fichier : Ajoutez // ignore_for_file: <diagnostic_code> au début d'un fichier Dart pour supprimer des diagnostiques spécifiques sur l'ensemble du fichier. Utilisez // ignore_for_file: type=lint pour supprimer toutes les règles du linter.
  • Suppression au niveau ligne : Ajoutez // ignore: <diagnostic_code> sur la ligne directement au-dessus du code problématique, ou en fin de ligne.
  • Suppression dans Pubspec : Ajoutez # ignore: <diagnostic_code> au-dessus de la ligne problématique dans les fichiers pubspec.yaml (par exemple # ignore: sort_pub_dependencies).
  • Diagnostiques des plugins : Préfixez le code du diagnostic par le nom du plugin lors de la suppression des problèmes spécifiques aux plugins (par exemple // ignore: some_plugin/some_code).

Workflow : Exécuter l'analyse statique

Utilisez ce workflow pour identifier les bogues liés aux types, les violations de style et les erreurs potentielles à l'exécution.

Progression des tâches :

  • [ ] 1. Vérifiez que analysis_options.yaml existe à la racine du projet.
  • [ ] 2. Exécutez l'analyseur à l'aide de l'outil MCP analyze_files (le cas échéant) ou de la commande CLI dart analyze <target_directory>.
  • [ ] 3. Examinez la sortie des diagnostiques.
  • [ ] 4. Si les problèmes au niveau info doivent être traités comme des échecs, ajoutez le flag --fatal-infos.
  • [ ] 5. Résolvez les erreurs signalées manuellement ou procédez au workflow Corrections automatiques.

Workflow : Appliquer les corrections automatiques

Utilisez ce workflow pour résoudre les usages d'API obsolètes, appliquer les corrections rapides et migrer le code (par exemple les migrations Dart 3).

Progression des tâches :

  • [ ] 1. Exécutez un aperçu pour prévisualiser les modifications proposées à l'aide de l'outil MCP dart_fix ou de la commande CLI dart fix --dry-run.
  • [ ] 2. Examinez les corrections proposées pour vous assurer qu'elles s'alignent sur l'architecture prévue.
  • [ ] 3. Si des corrections supplémentaires sont nécessaires, vérifiez que les règles du linter correspondantes sont activées dans analysis_options.yaml.
  • [ ] 4. Appliquez les corrections à l'aide de l'outil MCP dart_fix ou de la commande CLI dart fix --apply.
  • [ ] 5. Formatez le code modifié à l'aide de l'outil MCP dart_format ou de la commande CLI dart format ..
  • [ ] 6. Exécutez le workflow d'analyse statique pour vérifier que tous les diagnostiques sont résolus.

Exemples

analysis_options.yaml complet

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

Suppression de diagnostiques en ligne

// 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
}

Skills similaires