Saltar al contenido principal

dart fix

Herramienta de línea de comandos para aplicar soluciones de análisis y migrar usos de API.

El comando dart fix busca y soluciona dos tipos de problemas:

  • Problemas de análisis identificados por dart analyze que tienen soluciones automáticas asociadas (a veces llamadas soluciones rápidas [quick-fixes] o acciones de código [code actions]).

  • Usos obsoletos de la API al actualizar a versiones más recientes de los SDKs de Dart y Flutter.

Aplicar soluciones

#

Para previsualizar los cambios propuestos, usa la bandera --dry-run:

dart fix --dry-run

Para aplicar los cambios propuestos, usa la bandera --apply:

dart fix --apply

Personalizar comportamiento

#

El comando dart fix solo aplica soluciones cuando hay un "problema" identificado por un diagnóstico. Algunos diagnósticos, como los errores de compilación, están habilitados implícitamente, mientras que otros, como los lints, deben habilitarse explícitamente en el archivo de opciones de análisis, ya que las preferencias individuales para estos varían.

A veces puedes aumentar la cantidad de soluciones que se pueden aplicar habilitando lints adicionales. Ten en cuenta que no todos los diagnósticos tienen soluciones asociadas.

Ejemplo

#

Imagina que tienes un código como este:

dart
class Vector2d {
  final double x, y;
  Vector2d(this.x, this.y);
}

class Vector3d extends Vector2d {
  final double z;
  Vector3d(final double x, final double y, this.z) : super(x, y);
}

Dart 2.17 introdujo una nueva característica del lenguaje llamada inicializadores super (super initializers), que te permite escribir el constructor de Vector3d con un estilo más compacto:

dart
class Vector3d extends Vector2d {
  final double z;
  Vector3d(super.x, super.y, this.z);
}

Para habilitar que dart fix actualice el código existente para usar esta característica, y para asegurarte de que el analyzer te advierta cuando olvides usarla más adelante, configura tu archivo analysis_options.yaml de la siguiente manera:

yaml
linter:
  rules:
    - use_super_parameters

También debemos asegurarnos de que el código habilite la versión de lenguaje requerida. Los inicializadores super se introdujeron en Dart 2.17, así que actualiza pubspec.yaml para tener al menos esa versión en la restricción inferior del SDK:

yaml
environment:
  sdk: ">=2.17.0 <4.0.0"

Deberías ver lo siguiente al visualizar los cambios propuestos:

dart fix --dry-run
Computing fixes in myapp (dry run)... 9.0s

1 proposed fixes in 1 files.

lib/myapp.dart
  use_super_parameters • 1 fix

Para obtener más información sobre la personalización de los resultados y el comportamiento del análisis, consulta Personalizar el análisis estático.

Soporte para VS Code

#

Cuando abres un proyecto en VS Code, el plugin de Dart escanea el proyecto en busca de problemas que dart fix pueda reparar. Si encuentra problemas para reparar, VS Code muestra un mensaje para recordártelo.

Notificación de VS Code sobre 'dart fix'

Después de ejecutar dart pub get o dart pub upgrade, VS Code también podría mostrar este mensaje si los cambios en los paquetes agregan problemas que dart fix pueda reparar.

Guarda todos tus archivos antes de ejecutar dart fix. Esto asegura que Dart use las últimas versiones de tus archivos.