Mensajes de diagnóstico de Dart
Entendiendo los mensajes de error y advertencia del analyzer de Dart
¿Alguna vez has visto un mensaje de error y te has preguntado qué significa y qué deberías hacer al respecto? Puede que haya más información disponible para ayudarte a responder esas preguntas de lo que crees.
Tomemos un ejemplo bastante común. Hay un problema en el siguiente código:
En IntelliJ IDEA, el mensaje es visible en la vista de Dart Analysis:
En Visual Studio Code, el mensaje del problema aparece en el panel de Problems:
Parece extraño que haya un problema porque acabamos de comprobar que values no es nullen la línea anterior.
El mensaje nos dice qué está mal, pero no nos ayuda realmente a entender por qué la comprobación no fue suficiente o cómo responder al error. Esa información adicional está disponible; solo que puede que no sea obvio cómo encontrarla. El resto de este artículo te muestra cómo encontrar la ubicación de esta información adicional en la salida de
IntelliJ IDEA, Visual Studio Code y la herramienta de línea de comandos
dart analyze.
IntelliJ IDEA
#Si pasas el cursor sobre el texto resaltado puedes obtener más información:
El hover incluye el mensaje que vimos arriba (al que llamamos el mensaje del problema), pero también incluye otra información útil:
-
Un enlace a la documentación externa sobre el diagnóstico
-
Un mensaje de contexto que explica por qué la comparación con null no fue suficiente para promover el tipo de la propiedad a no nulo
-
Un mensaje de corrección que describe algunas de las cosas que puedes hacer para corregir el código
El mensaje de contexto incluye la URL de documentación adicional relacionada con la promoción de tipos y te dice la línea y el archivo en el que se define el campo. Lamentablemente no puedes navegar a la ubicación de contexto desde el hover, pero sí puedes desde la vista de Dart Analysis.
Aunque la vista de Dart Analysis muestra solo el mensaje del problema, hacer doble clic en el mensaje te navega al texto con el subrayado rojo ondulado donde se está reportando el problema. Para otras características útiles, abre el menú contextual:
Con el menú contextual, puedes navegar a la ubicación donde se reportó el diagnóstico (usando
Jump to Source, que funciona igual que hacer doble clic en el mensaje del problema) o a la declaración de
values (usando el elemento del menú etiquetado por el mensaje de contexto). Seleccionar Open Documentation
abre la documentación externa sobre el diagnóstico.
Visual Studio Code
#En Visual Studio Code hay dos formas de ver la información adicional. La primera es expandir la entrada en el panel de Problems:
La primera línea es el mensaje que vimos antes (al que llamamos el mensaje del problema). Hacer doble clic en la primera o segunda línea te navega al texto con el subrayado rojo ondulado donde está el problema.
La segunda línea es un mensaje de corrección que describe algunas de las cosas que puedes hacer para corregir el código. También contiene un enlace, etiquetado por el ID del diagnóstico, que abre la documentación externa sobre el diagnóstico.
La tercera línea es un mensaje de contexto que explica por qué la comparación con null no fue suficiente para promover el tipo a no nulo. Hacer doble clic en el mensaje de contexto te navega a la declaración de
values. El mensaje de contexto incluye la URL de documentación adicional relacionada con la promoción de tipos.
También puedes ver esta información pasando el cursor sobre el texto resaltado, lo que hace que se abra el texto del hover:
El texto del hover contiene la misma información que el panel de Problems. Contiene un enlace para llevarte a la documentación externa y otro enlace para navegar a la declaración de
values.
dart analyze
#El analyzer de línea de comandos dart analyze puede mostrar la misma información que los IDEs, pero necesitas usar el flag --verbosepara verla toda.
Resumen
#Espero que este artículo te ayude a encontrar más fácilmente la información que necesitas para entender los diagnósticos del analyzer.
Si encuentras diagnósticos que siguen siendo difíciles de entender — porque el mensaje no es claro, necesita un mensaje de contexto para ayudarte a encontrar otras ubicaciones de código relacionadas, o la documentación no es lo suficientemente completa — por favor avísanos creando un issue en dart-lang/sdk. Siempre estamos interesados en mejorar las herramientas.
Más de Dart
Historia del interop con JS en Dart
El soporte para Wasm acaba de llegar al beta actual de Flutter, gracias a un emocionante hito de interop con JavaScript alcanzado en Dart 3.3. Para…
Dart DevTools: Analizando el rendimiento de la aplicación con el CPU Profiler
Ya seas un desarrollador de backend escribiendo una herramienta de línea de comandos con Dart, o un ingeniero de UX construyendo aplicaciones con Flutter, el rendimiento del programa es crítico para el éxito de tu proyecto. Las herramientas de línea de comandos deberían minimizar la latencia y las apps deberían ser responsivas y ágiles sin fotogramas perdidos. Como desarrolladores, hacemos todo lo posible para escribir código performante pero a veces no está claro por qué nuestro código no funciona tan bien como esperaríamos.