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:

Un fragmento de código de Dart mostrando un error de compilación por el uso no verificado de un valor nullable.

En IntelliJ IDEA, el mensaje es visible en la vista de Dart Analysis:

Vista de Dart Analysis en IntelliJ IDEA mostrando un mensaje de diagnóstico de uso no verificado de un valor nullable.

En Visual Studio Code, el mensaje del problema aparece en el panel de Problems:

Una captura de pantalla mostrando el panel de Problems en Visual Studio Code con el mensaje del problema.

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:

Una captura de pantalla mostrando el texto del hover sobre el mensaje de diagnóstico con información de contexto y correcció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:

Menú contextual del IDE mostrando las opciones Jump to Source y Open Documentation.

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:

Una captura de pantalla mostrando una entrada expandida en el panel de Problems mostrando mensajes de contexto y corrección.

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:

Una captura de pantalla demostrando el texto del hover en Visual Studio Code revelando detalles adicionales del problema.

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.

Una captura de pantalla de salida de terminal demostrando los mensajes de diagnóstico detallados proporcionados por el comando dart analyze --verbose.

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