Analyser et corriger du code Dart
Contenu
- Configuration de l'analyse
- Suppression des diagnostiques
- Workflow : Exécuter l'analyse statique
- Workflow : Appliquer les corrections automatiques
- Exemples
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.yamloupackage:flutter_lints/flutter.yaml) en utilisant la directiveinclude:. - 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éfinissezstrict-casts: true,strict-inference: trueetstrict-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 blocrules. - Configuration du formateur : Configurez le comportement de
dart formatsous le nœudformatter:. Définissezpage_width(80 par défaut) ettrailing_commas(automateoupreserve). - 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é commedev_dependencydanspubspec.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:dansanalysis_options.yamlpour 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=lintpour 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 fichierspubspec.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.yamlexiste à 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 CLIdart 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_fixou de la commande CLIdart 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_fixou de la commande CLIdart fix --apply. - [ ] 5. Formatez le code modifié à l'aide de l'outil MCP
dart_formatou de la commande CLIdart 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
}